From 5f28658baf33bc62089898ca75e6f751b0c1d2e7 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:19:45 +0000 Subject: [PATCH 001/118] Create super-linter.yml Teste de linting nos ficheiros atuais do yake --- .github/workflows/super-linter.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/super-linter.yml diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml new file mode 100644 index 00000000..28d6b416 --- /dev/null +++ b/.github/workflows/super-linter.yml @@ -0,0 +1,29 @@ +# This workflow executes several linters on changed files based on languages used in your code base whenever +# you push a code or open a pull request. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/github/super-linter +name: Lint Code Base + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] +jobs: + run-lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Full git history is needed to get a proper list of changed files within `super-linter` + fetch-depth: 0 + + - name: Lint Code Base + uses: github/super-linter@v4 + env: + VALIDATE_ALL_CODEBASE: false + DEFAULT_BRANCH: "master" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 0e13bc5f823fd0466d80ff483b08bfc0fd38d157 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:59:05 +0000 Subject: [PATCH 002/118] Create pylint.yml testes gerais --- .github/workflows/pylint.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/pylint.yml diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml new file mode 100644 index 00000000..c73e032c --- /dev/null +++ b/.github/workflows/pylint.yml @@ -0,0 +1,23 @@ +name: Pylint + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pylint + - name: Analysing the code with pylint + run: | + pylint $(git ls-files '*.py') From ceef8963836db5c3bfc60a22777256ac0b5786f8 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:42:43 +0000 Subject: [PATCH 003/118] =?UTF-8?q?atualiza=C3=A7=C3=A3o=20das=20imagens?= =?UTF-8?q?=20das=20dockers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/push_images.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/push_images.sh b/docker/push_images.sh index cbc967c1..e5c693e4 100755 --- a/docker/push_images.sh +++ b/docker/push_images.sh @@ -1,9 +1,8 @@ #!/usr/bin/env bash - DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # get constants source "$DIR/constants.sh" docker push "$YAKE_IMAGE:$TAG" -docker push "$YAKE_SERVER_IMAGE:$TAG" +docker push "$YAKE_SERVER_IMAGE:$TAG" \ No newline at end of file From e35fb8279273cc5cd1dabda2099aba64961b8e6a Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Fri, 7 Feb 2025 18:58:00 +0000 Subject: [PATCH 004/118] yake.py 60% MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refatorização inicial do programa principal --- originalfiles/yakeog.py | 88 ++++++++++ tests/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 194 bytes .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 0 -> 20177 bytes tests/yakenew.md | 59 +++++++ yake/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 343 bytes .../datarepresentation.cpython-310.pyc | Bin 0 -> 14498 bytes yake/__pycache__/highlight.cpython-310.pyc | Bin 0 -> 4845 bytes yake/__pycache__/levenshtein.cpython-310.pyc | Bin 0 -> 1296 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 0 -> 4526 bytes yake/__pycache__/yake.cpython-312.pyc | Bin 0 -> 5857 bytes yake/__pycache__/yakenew.cpython-312.pyc | Bin 0 -> 6863 bytes yake/yake.py | 151 ++++++++++++------ 12 files changed, 248 insertions(+), 50 deletions(-) create mode 100644 originalfiles/yakeog.py create mode 100644 tests/__pycache__/__init__.cpython-310.pyc create mode 100644 tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc create mode 100644 tests/yakenew.md create mode 100644 yake/__pycache__/__init__.cpython-310.pyc create mode 100644 yake/__pycache__/datarepresentation.cpython-310.pyc create mode 100644 yake/__pycache__/highlight.cpython-310.pyc create mode 100644 yake/__pycache__/levenshtein.cpython-310.pyc create mode 100644 yake/__pycache__/yake.cpython-310.pyc create mode 100644 yake/__pycache__/yake.cpython-312.pyc create mode 100644 yake/__pycache__/yakenew.cpython-312.pyc diff --git a/originalfiles/yakeog.py b/originalfiles/yakeog.py new file mode 100644 index 00000000..6ec7f59b --- /dev/null +++ b/originalfiles/yakeog.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- + +"""Main module.""" + +import string +import os +import jellyfish +from .Levenshtein import Levenshtein + +from .datarepresentation import DataCore + +class KeywordExtractor(object): + + def __init__(self, lan="en", n=3, dedupLim=0.9, dedupFunc='seqm', windowsSize=1, top=20, features=None, stopwords=None): + self.lan = lan + + dir_path = os.path.dirname(os.path.realpath(__file__)) + + local_path = os.path.join("StopwordsList", "stopwords_%s.txt" % lan[:2].lower()) + + if os.path.exists(os.path.join(dir_path,local_path)) == False: + local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") + + resource_path = os.path.join(dir_path,local_path) + + if stopwords is None: + try: + with open(resource_path, encoding='utf-8') as stop_fil: + self.stopword_set = set( stop_fil.read().lower().split("\n") ) + except: + print('Warning, read stopword list as ISO-8859-1') + with open(resource_path, encoding='ISO-8859-1') as stop_fil: + self.stopword_set = set( stop_fil.read().lower().split("\n") ) + else: + self.stopword_set = set(stopwords) + + self.n = n + self.top = top + self.dedupLim = dedupLim + self.features = features + self.windowsSize = windowsSize + if dedupFunc == 'jaro_winkler' or dedupFunc == 'jaro': + self.dedu_function = self.jaro + elif dedupFunc.lower() == 'sequencematcher' or dedupFunc.lower() == 'seqm': + self.dedu_function = self.seqm + else: + self.dedu_function = self.levs + + def jaro(self, cand1, cand2): + return jellyfish.jaro_winkler(cand1, cand2 ) + + def levs(self, cand1, cand2): + return 1.-jellyfish.levenshtein_distance(cand1, cand2 ) / max(len(cand1),len(cand2)) + + def seqm(self, cand1, cand2): + return Levenshtein.ratio(cand1, cand2) + + def extract_keywords(self, text): + try: + if not(len(text) > 0): + return [] + + text = text.replace('\n\t',' ') + dc = DataCore(text=text, stopword_set=self.stopword_set, windowsSize=self.windowsSize, n=self.n) + dc.build_single_terms_features(features=self.features) + dc.build_mult_terms_features(features=self.features) + resultSet = [] + todedup = sorted([cc for cc in dc.candidates.values() if cc.isValid()], key=lambda c: c.H) + + if self.dedupLim >= 1.: + return ([ (cand.unique_kw, cand.H) for cand in todedup])[:self.top] + + for cand in todedup: + toadd = True + for (h, candResult) in resultSet: + dist = self.dedu_function(cand.unique_kw, candResult.unique_kw) + if dist > self.dedupLim: + toadd = False + break + if toadd: + resultSet.append( (cand.H, cand) ) + if len(resultSet) == self.top: + break + + return [ (cand.kw,h) for (h,cand) in resultSet] + except Exception as e: + print(f"Warning! Exception: {e} generated by the following text: '{text}' ") + return [] diff --git a/tests/__pycache__/__init__.cpython-310.pyc b/tests/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d4bf687b1f2ef1563f67e924977ca983f980f94 GIT binary patch literal 194 zcmd1j<>g`k0>OOkbUPsZ7{oyaj6jY95EpX*i4=w?h7`tN22G|a>Cn8)5`~h~;u3{| z#N_P6^i+kk{33?(%jU%l45=L%o2~%Bz=$(x<+~i`XIxL_2c6+fi}g*>lIYq;;_lhPbtkw NwF9}T7-TL769CNBFz)~W literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e117d4a5a48336c8fa032320476ccb9cb368d5a GIT binary patch literal 20177 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 V1*$sN*PI-y?ux!gkNbS){Q^cSVJ`px literal 0 HcmV?d00001 diff --git a/yake/__pycache__/datarepresentation.cpython-310.pyc b/yake/__pycache__/datarepresentation.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9517e10ee58a62b5c2241d3e838225f168fa231 GIT binary patch literal 14498 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 BO`8A! literal 0 HcmV?d00001 diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cba61843cce02c920839160b259637e1874bc25f GIT binary patch literal 4845 zcmb7I&2tpT74Po(*x3&)LI{CO>NL7-uE9X@09=YV0bB_5N=9rxDl^a!5@_RkID`_PPXH@-W`s;P~>)-pm zw+bgF3JlM|@CU2*cNqH*Rdzl)Dj%anCm}rM@g`elo>=Cdwk)nQPxp)`%rkuLv9_#x z{1&U2&oPoMcJ%qi=0eAqpTnz0O*FDy`opbyWmY=(Qm^@>g~24 zM}?7+%Psez6Rb+N}4(7XnMAb4Y|_3=dXmA;BN2O_poQ#s-E$yt5thG zYP-QgrE1@dZO>nEH<~dv7}|7=`>q~Fv0DCHuJ5j3vHg~}2kXzhZUcm%(GC_XS~{`I z25EUm6`M-SyDeVPQ$6yVE7HKlOG2I`JUnAEhu6!6xmFO*)#h$TzKrIU>h5YdcP*@K zwEQ5B=C0S{8yolLw%mq)?n3pv`j{K7S8Z>lmgCfedh9qBv_&R_nKyZXcaDz1r#c*1 zqdg2C+7y+mD3OHlcvp)7(8utDhAuBAqN~R|5uTW3k9jN_Le6Hsk%(((>FNpZX?@lO zjPJu8(SJ5!Jp-`T`=YBQ+ATKdA#JQ@QV+HCwXC;dcJ7Ys`ioJRL`gUp{iwqOr93zoAoHJg{}62jrt4HJk2`i#?3!EO?AE**4$>a zfREwK=d`y3r?bQHWo2p^O!&8*Vx_TfS=woh=#$J`YZ!%jKt`f zeSq`Dwh~X2yWI9))&+>&(@FJVS&yW{e6zu(aR?qRy7k77o1y6dEq6u zUyF?wyRp$@{Q)+V>7Mb_Xoj1!pb{>sz^2utUkli$WTyCN%T&ZE!~qJO~k z_Ml78(DjrNS^W{YLf2SjxP2oQiT;>3*jHRGp(Tf6fu1zrNKdq?IoRxb`#FLrb5%W*C#{(-GrU~=#&dqB22)cN^S zhLsQYxq6#kVHRG6eIJC+afFO-;zF+oA1o!RuP>r+vajJNwNvzc1fTWHOAP)zwBdgH z#@cT>8$A41nTNl5?B^`_FgyA1e7J#A-Kk`1aKiVKsW+|n6<L$S?| zU*k|aLdAYulSRD)P_v5{DMnGuJcROs^aB7OTLMoX>FYDT_)MfmJ@EX8iddd;S;8p1 zDtKiZS0U4yZ@R5}p1ZI}nkZnFS?9g~Z?BmG5U_^m_WZwiDiiX1w9ZKqisq(}B705? zd8ad^v2RCZ(r=C%=zLsn)6o@;psHL*f**XU;yF|7*E7y(B0A0pF^qIwv}Sz4tyREIPm zHIXnljZGw-^}va0bX1z2<|(z#l+36bal(}`OMt{%?NDO3m~Y0dHr`T2Dg~ztWCDdL z$^|Z>L`?{yZygyyCXaHH&xm1LiBE}l_%tsIQ_=gRnBg;^cEK;8ZgNYtnivnde`KPC zW=?B`!B<(75D?0m#Y_Jxe1II|#G5fuqs>5zBNB=*6xxpt(Z1I?2Kbd*8P2D6*PVDXOnE)! z4S9uBj)D3T+J1`?*$_Iij}m`N9OWe>x#H2Z5J-5Zxuu)01QOqUfVjsbyYdpsz6ppb z>s`Z#hpZQX6N$i&DS!-F1b*}Pk>d{GhaXaUPgA)r0Eiz?`0v1d; zXh7V7-ozkCRg6Uihm68cVC5_yv@-h>EoKC%sB-&uD1lPHODkq}A?hyFt&sInEq)kF zI?Z@)N5ST6l!&O}BtHe0w|M96amU@ox{H+}{ca81mhU)e!2vOO8%_EyInMfq+Z^;9 zzV^w_etP@UCFjP?>o-0{S#o~)*(d4DKFzll2S}bX`v+Al61{d1w?iK+d?rL zg&w-9h@zRr%EFqk4x?Nv%}DCQ?=F#IO}v|mM9wKZ z2ps!Ld+mugs47+J%sPS4L)CS5GP^VL&3-$xS-oB*Fjliy{ac5SAGlZ^ut)Y_s^=gC z5p+Ph^neH^_!SXcvKjAkLBEiea|<4%(?hvDI4t&Hs%;Pwq6O(P2{D3Qks0kepmX6^ z-38qhp4B~30aV|te3sv2s!p|x(;fqi#Xud8_YtOQf)G@b0w6)s8GS}J2>`IpEd^VP z8uw(7MY_d|FJh&mv?onf={y|Bw69OUle_|czxIM8)j=;fR5Dk=*Es5D!G6{oB{J12 zIEeM9(Qz=2&gGk(_O?}m!TkZ-7h_Wi!#vV)=Hj{VkWDsOUn0?-+aHiYB6nn7!a|d4 zS^$w7Hf5S=Zi#UuHe*u`R;OSEzhOX;c3N(ZiE>P7coJP24y??2xRiFDwdEK`$>Cco zcT5d$U~wP0hah+jrSK8XwPYTFs?c0xYqUlut4qjj>+ygNVql1^%{wSSSs6h$2+*nDBwLWN@Jj8RXZL+yPvMc?)1uW{1M^PL8i9w+-y(E1(;eUKn>G^Gso7(!PXx$7!pQ*U__qE}n`f zGQ6DskByf^I*%_6h2QwE^4gYp3{mPeh#ITW29&p)4c4HWl+iW&HGVU1jXnh(w4crT zq`BMzix%p%D#j1PG)iO`nrav(nHUXFuZ7`o6bK}Z27gYcN literal 0 HcmV?d00001 diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80788782e86853b361a232203bb05a6d121f4529 GIT binary patch literal 4526 zcmb7IUvJ#T5#J?wJd!${Wm$G?rzjZoPkccv#ZJ;XhT){Ooy3WwqEQkfLIZ;4@=iSQ z$n%nCSqEMaR4)2t6nW`OkwALPLq9;jL;D4YzV)Fn(1!qdXb}`nf3p-%I>l%k5*#jP zXLn|HXJ>wQ>HNIIaQ)z4pZ305WbAMBarn~l@fx1&br8YUnczZ;`8ro`ZCz7ueO(v2 zFk)k1tQ(x6-H00lbKT_Z4JJ&{e85C=M_X?SZH;xT@x^yiF^WUCn@V>x+}=v1aKrn# z^n*M~6SphVft!QjiZmDv!X(d@A3;A`eZ)aKyqvog-V2j#BM+klpVoCh_phZg3`pwm zHMRdOa6<;W8QHw9+nTN0hTX7DyJ=gtB~A!iI1l)`A?8Hu0b6f~dC|t(6vxB@-c4~_ zEaGhm3qCBB3vXA3->B?P<@kkbv7cpbp4Ps&ej?nVOoI^YeLu4U@0Lp~OdgSifB(y$ z>H5d3rICeq2T}v?(GtjNV1w4zJQ{O&uHnf(#!?i#U>++pP+pjzTA_pLMHAF08la8b z>^FBUMeW?#<9mE!tFJlQx`NZj{YE>(c3XSw4@@*Z)AzKAqa@}lxxy}-J#CL?uTICA zQ<=G{cQRL4LLV{t`S^!UgznL>aJQm- zL-q6`#H>5?r9TMsP-e@HyMIj^Ka;)e^7M;(V?S}vWx4EJc5nGfZ{+tvH%LWwcCtJj z(&5QwhG0OHFOCN8xo({LBzm1#aTNIK0OlJq%r??kJYiUO zlmxX!v!ke|8lJkNY*yt~l!$c8BU5VY)~KC!tAk$k&!~fMwdm?-a3_>X7|iKO!by{1 zK9b4IxNhi!7iR9cILgSk*J}pkgEYw^5z3hn(`AHTA&s~;0t*XQFRu&sbVND7R`YK` zLFr7zywyi^a>vGUem@^C9q^Ns_D*pdqr7|m66LHg!9GSwujJ17`P;rs(7p_Zd}2;@ zyX1uHXYS3lU!1>m>E&0>Ul=`OaE~F8jG!VM_<67qN=b>N zbEec0P$f@F9X^!yG!jayUbb@X&|Z~Vnw7@T&o|1Zh-8AuEiITBE0*PX-6#${4_ebG zDI0OR1ryBhK5WLgbQnSr)~+n4!5>e#;lyd+ z$5neCfs>A85LTZ`UOD*%lNT_<*RQM$l6)mtc|XGmUU@I_d+Eycx=O9Q5#?`=?yPM4 zo8kG3%P**gBFn?=63Z1KS9l)f@$Bay=2IrG?WkV29x5GQwLo&V%TYeGJ*voj{Ngn~4o0z` zhwfVlp!2t@aB>B9(nl1zcfx!tMEVL)(;@-6Y#C8z_ro~e?nc>$T)?DX=<+$d$_7bY zs9qPe*NI@PY;MB^(uD=lq&@>?EI2+vqgmYaA~;rlTf2i8w?!3#ata=k!d0o8W+ zj`lP=&ES_de(u1pB$We|riFV5Jxo1ZR#mrS$d@sHxr6|#0ftvELa7h@`#3>i0x@z_ z{*=fi8h~)BR_ds`9rV6~CnG0X+FAYthbfw896r2V@+Az!7Cm#|N`1E7{lo1_%G=lw zNdwD<`jkIG`=~XP1>Pn8Dgy2U&8&h9|HwYrCrN54HH~w|OGqZ;ZjVj4^6(9r} z;5mg8>jR7QfkFC)&>tETt<=?=>wV6Up+R_b4xUY`G9)tU1yJ7XFHs* z0|2A_P@5Q#o)gYyL*4`|BRNA!w7_o>YEf2z_tDA(fNf$HI@%|HrA?X>t6;nHMWf#? ztbQ97+CVCpZPSol(VhUBCj9O%3sc@L^xb2STPPY`pd4U~7$ zG5ZcDoxmoG+k2c%9L~lk@)KgAaDbkU7aVl)vj$-mS|bx^Mzki*$IjaRdy8+e&WZ6~ z_i^JvHLFlB5JZI&2>-HuTjWS#sG0;sMl8P$E2tvg&L z<$y4KeNpJqL0Q9-QS$Dwf_-F75L~-#k4XU5Pqn+qSt_tmMw?Og0Zz3*GSZe`D77Fs z67r>Ug-U3U4u)5Um{6si(`@|mx6%$-ieDgJy6JiD* z9li>~_?tw&WsP+u_6K)_fAucpGji8t;}^e^E!B9;uEWwEX2A93t237Umu2kZ)b@E- zJG_iY5}X;30RvY_$?dPaC8{U%&}@AVnYb>>oQauxz=18tm0 zuCf8N&+6u-wz<{OD}8)J-lCbQ)K)~54AS^pJZinpvhmVBTzba6aX$!$1UfIfGTY zLltf~Q%MX)aekz~G_zDfW9b}J#?rj!$D=S)aHK*X=Sc0_q|Ee(fJH(rv%Eqad+LOI z7T=w@s1>TH0g7SO8i< z>zf6=t)1cv-1%Q*5Nydjj`$75rSo} zXvzm7F$LO5z+Qx-P6|;fg-Vm!kJ*woMBP>!)7rgeQlw^@BJBeWo!X`!w*PbX8Ddyj zwJ&=tJ=0* zrBTtPU=$4Hr3R=jia;e_3;-4*6o9-rj-`xBYuu`B?TmVGBsJ*3B(j)5m<%5A~i!^ zA+SYPP#48e&?^}w^eSvemwJS-X~e9bup`5MjyZZ+;AofN=h|J`HL}$}V`EqTLSfNC zB8Z&nZ9!IyJg}SDJeW75ZNjlubBa@tl7c6g`Cn*TQVH8EkW6InG z9jT>&3h0z~A>Af=ve(PmgkuBCg4&=?)+l?*Q2o^ian>I%4g6Hf(l)h!6Kg{Hpk~ye zMMAFZXHd_m-c`%;_o0wMu%!14o_v{J9p$+GP|Q7rtLJ5k(a5ooN4S4!dm)eTlkFgo zFKdk*Y0kAAK@w)^ya!b<%aU~k6);QZGN^`GPI^xXvsM2oMvpVYD}xkckaCn0L>^el zY`~R{%m@lnKjc4Slw{^^a%xLjAAZ_1T82L4sm(Y5)925WqdkZxhDidQM+E%F-?^+f zkA{hIpoLPIo6*Yght<_M=o#Jr=KRiKx3AyJaw3IiqKRkU7y{Ys04=yK z;$>JEuoZ|3FYOaaKQB^)v~W>WGj7gD53r&JRC=W)jnmod_OebVi1NFAqSEUh1_3Je zGME8;{z29!DtJ~9DQu>wjM#o}FNdEo&WgM3cvCBh zJq8S11zy~SyK-qqwuT4YZq6xrrt|t;v^Pl`!36&h=VFsn4L*`;43J^LMxUT|)z`PvE=T+`{ppp6(I4pS9Q3?v@Cts~sE>A&zdJTW~r9g_$qP zT6qh*&3_7Sr%{y1%^Rb}HIH*GQw@_1Q_YjjzpJ~^aJ?a3ULP&5|NZe;`Qcb@)0pP5 zC4cJN_#C#s|iaP0{*uF-zx|?y=r@t>J3JwWh00zu7)p zHB&Xab7p7w^1LoqbSS28yrW#yAAML@Jexn0KU*?W681+LPQ?n_$6k3{P&BKaQO_D? z4B^f>Ppsg@G2IifFFCRIiU@z7E@ZJ)1NvK(ASM7D$Y;NrvTnz_!~7j9m-<&4`~ zqV|@Uy)|xsC2D_VVQpkoY+=*qwsp+SnH>TvV<}3n)9kNW-NHS3~DijM@ zjVCP12L>(B4=lfZNYuCDKzFu&leixWep#eICD{ zM$to4LEKasHC2Y$xwA3T-iT)J3T&X~tk=MTWIYE2z+mFPw_lJUG!oLdFi6O6l{IUm zye4}d&?6K86zD)Uvi{ps{-rIRvpbrzd*1SaGM3YPul$~Cq4KV0>GYY%*{;~>*JCZ+ z(VXt6sXLhHlnFb+Pe0>rStk2vO9$U>!t7IYK|D9zZJxieUOPD;lcMHqcJ3-kh2ydRx^&j z8a#lgGaIa8%^3|=)0lsC>s{&=4hOUl86-Vv447QQJ@Da5oYCG@%J+#tz=z*G8EtdE zJ`_@{K|Q3$oFM|HKZJT)(KX5iadVLu;9(03s-VhKvi>}*maSjyB|&eAq*uk@h+5a5DZ=>& zEf+?ybVeIe2Nf`DLZ}<=R7exj0$=%hzW-o{b|dT3w@4S%ZS1df7m4vkMi){8@+T-1 zRCA?4g{N{u%^Ua{RQ0B74WQc98?TUW%*OspD4iG|O=$(+uW2CS3Ms#UjZ;y;amS@5 zqXjimj4cpjMMxFWI3UM_l;>fYQl%(qe;Ab`A^l}hfw;1eUZ|0UGWwwY*N8C$3FwW# zU31s5HRs{$D5U?H-jN!IiD8t)!L}{!94-I>Qm1`JSZ$O@2`u~rfWwqTVOF4QgoMLf z>CnI$rol(mM}sjjsrd>Ts&q=zK@=18ol&D4?{Nv>es!Lunq7p zgtI^SrvzWyD4{*R35X;UlprL*yHOPBam9PsXb(Gzq>=`j6u`(GfFoxBw5NdhHtW&L zE_M*3(Sz1NxwVh=u~1W4#@aJt6)v*YUcVR6F+g@Jj=@1|Re-Fr+VZ$VAV*Yl?4Xx+ zu^fJXWyD7;?iq4>87B|CfVBmd8{nNXG)_X;!sLm8A+M0JFRFMy2UdtW{OWcyU=c5> zF45j07}ak6HQMWDQV4m-=Y|gfXa6wQg00wwJABVY6+H+*o)O9ZVNsiQliLb=HiLu= zxR>xbl5vSz0Lx&81Asm0a*1leF9C0n!umy};HMczBrYcH>5$Hf6n>+M1j`#h3LuJf zlc0r|m6@-=woOxd5G3(;;699^WwKP8_b@kaLU{Yd={MdwoX9Vn&_2q|pK6?J46DL? zEVpK?^H~{fti6=eoew!Ij#J>pmbRatY7Jn zxiDcajhic?=8CXzz%P&`{(AuWeX@@ESo9vsW-+DckdnjT!^xe~PROTSQd#XZ($BFM&N|3qnTfl%%5eX?VWJk=^ zbJ=r>NKN~Ku+SSh^I9b5+>)U)k!$(IiSL({aOfG|3z_`6sZE34YAJ&Lk2@{L4ruO@ z6z)}}uyVJ2>#@VsJrbX}m-8|O!-x5e(0^ps;J&1wjZ}TKSAppRSacdE(QEgNwU5t7;^Oe`A@k0qgnd0amr literal 0 HcmV?d00001 diff --git a/yake/__pycache__/yakenew.cpython-312.pyc b/yake/__pycache__/yakenew.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9332d3047b12a0a5ca20b226149888a5247df7f7 GIT binary patch literal 6863 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 hhz|Y*S^tEbe?pCaM!Wxv`aUxsGf*uX2 0): + if not text: return [] - text = text.replace('\n\t',' ') - dc = DataCore(text=text, stopword_set=self.stopword_set, windowsSize=self.windowsSize, n=self.n) + text = text.replace('\n\t', ' ') + dc = DataCore( + text=text, + stopword_set=self.stopword_set, + windowsSize=self.window_size, + n=self.n + ) + dc.build_single_terms_features(features=self.features) dc.build_mult_terms_features(features=self.features) - resultSet = [] - todedup = sorted([cc for cc in dc.candidates.values() if cc.isValid()], key=lambda c: c.H) - - if self.dedupLim >= 1.: - return ([ (cand.unique_kw, cand.H) for cand in todedup])[:self.top] - - for cand in todedup: - toadd = True - for (h, candResult) in resultSet: - dist = self.dedu_function(cand.unique_kw, candResult.unique_kw) - if dist > self.dedupLim: - toadd = False + + result_set = [] + candidates_sorted = sorted( + [cc for cc in dc.candidates.values() if cc.isValid()], + key=lambda c: c.H + ) + + if self.dedup_lim >= 1.0: + return [(cand.unique_kw, cand.H) for cand in candidates_sorted][:self.top] + + for cand in candidates_sorted: + should_add = True + for (h, cand_result) in result_set: + dist = self.dedup_function( + cand.unique_kw, + cand_result.unique_kw + ) + if dist > self.dedup_lim: + should_add = False break - if toadd: - resultSet.append( (cand.H, cand) ) - if len(resultSet) == self.top: + + if should_add: + result_set.append((cand.H, cand)) + if len(result_set) == self.top: break - return [ (cand.kw,h) for (h,cand) in resultSet] + return [(cand.kw, h) for (h, cand) in result_set] + except Exception as e: - print(f"Warning! Exception: {e} generated by the following text: '{text}' ") - return [] + print(f"Warning! Exception: {e} generated by text: '{text}'") + return [] \ No newline at end of file From f678242dd4bb94b41a515ea69de62a4db3e2d7f3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:17:06 +0000 Subject: [PATCH 005/118] Create resultados.yml criado workflow para verificar resultados --- .github/workflows/resultados.yml | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/resultados.yml diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml new file mode 100644 index 00000000..479d1527 --- /dev/null +++ b/.github/workflows/resultados.yml @@ -0,0 +1,49 @@ +name: Run YAKE Tests + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest + + - name: Run tests + id: run-tests + run: | + pytest -v tests/test_yake.py | tee test_output.log + + - name: Verify test results + run: | + if grep -q '6 passed' test_output.log; then + echo "✅ Todos os testes passaram com sucesso!" + exit 0 + else + echo "❌ Alguns testes falharam! Verifique o log para mais detalhes." + exit 1 + + - name: Upload test results (em caso de falha) + if: failure() + uses: actions/upload-artifact@v4 + with: + name: test-logs + path: test_output.log From 729d101b50a512896cc600aecc23fb6782ff7c18 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:22:40 +0000 Subject: [PATCH 006/118] Update resultados.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit atualização resultados.yml --- .github/workflows/resultados.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index 479d1527..d41d014f 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -40,6 +40,7 @@ jobs: else echo "❌ Alguns testes falharam! Verifique o log para mais detalhes." exit 1 + fi - name: Upload test results (em caso de falha) if: failure() From de7bd0f8b247fa30e8a725a183bc3e58a5335189 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:30:48 +0000 Subject: [PATCH 007/118] Update resultados.yml atualizado resultados.yml --- .github/workflows/resultados.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index d41d014f..6fb24464 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -7,6 +7,8 @@ on: pull_request: branches: - main + workflow_dispatch: + jobs: test: From d179ba352a89524c8dd81b2dedb47ffbd6b9505b Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:30:26 +0000 Subject: [PATCH 008/118] =?UTF-8?q?pyint=20espa=C3=A7os=20+=20atualiza?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 20177 -> 20177 bytes tests/yakenew.md | 23 +++++++++++++++--- yake/__pycache__/yake.cpython-310.pyc | Bin 4526 -> 4480 bytes yake/yake.py | 21 ++++++++-------- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc index 8e117d4a5a48336c8fa032320476ccb9cb368d5a..d711b7af22d04c628997c81732a5887da5bbf2f3 100644 GIT binary patch delta 22 ccmcaOm+|6UM(%uGUM>b85DeP9k^7h*08K~+V*mgE delta 22 ccmcaOm+|6UM(%uGUM>b8SnWP>Blj^s08o+!&;S4c diff --git a/tests/yakenew.md b/tests/yakenew.md index 1f0f05ed..d61e488a 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -51,9 +51,26 @@ Nomes mais descritivos para variáveis temporárias -Status 06/02/2025 +Status semanda 07/02/2025 - Exploração das mencionadas ferramentas puppet e cheff. -(Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) +(Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) (04 e 05 /02/2025) -- Criação de dataset para criar mais testes e poder aprofundar refatorização \ No newline at end of file +- finalização da configuração do pylint (Git Action), que me deu uma série de "code smells" em vários ficheiros. (07/02/2025) + +pylint: Action capaz de avaliar um commit, analizando todos os ficheiros .py, num sistema de pontos de 0 a 10 realçando melhoramentos. + +Planos próxima semana: + +- Criação de novos testes e possivel automatização dos mesmos para puder aprofundar refatorização. + (de 9 a 11 pretendo acabar esta etapa), visto que viajo dia 14 e 15 + +- Caso consigo tempo, começar a tratar de problemas identificados pelo pylint + +Status semana 14/02/2025 + +- Automatização dos testes de resultados + +Planos próxima semana + +- Avançar com refatorização e tratamento de problemas identificados pelo pylint. \ No newline at end of file diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 80788782e86853b361a232203bb05a6d121f4529..d608a47348c67c596c10a4a77b22ecb36e3fb2d8 100644 GIT binary patch delta 212 zcmZ3d+@Q>x&&$ij00gPax1@JXlK%NoVX$l%V9!j{6`!jQt=%oN48vETv|5*YNITESYS@ zSIF45c@19*BV*`dK>2P&&$ij00hcECZ>O$$SdpS2IQnLL@}f=rZD9&MlphErYI&b%^by?!kogA z!;;Gq#lpw{WV7b5=CVbxF*3L_q_Cy1w=krzH#0@CZ_K#B#Q0&dC9@re0u)T1$Su8j z67v;iM&8Zo?2L?zo|7{<-ZA=4j^ONN4BGsRvxSlI&g5)vHDn#$JTUDbdh#9a_lyOT z&+v3J7EX@f-OE@yS&Xlcv3+v~UkW2**y6YRjEr29-wEgla}*^5{ZS+dByO=4mlS2@ arB7BB^cLa+3a~J6FmW()F!BJQ5HkQNKRz7* diff --git a/yake/yake.py b/yake/yake.py index e7fcfcd7..6efb275a 100644 --- a/yake/yake.py +++ b/yake/yake.py @@ -1,7 +1,6 @@ """Module for keyword extraction from text documents.""" import os -import string import jellyfish from .Levenshtein import Levenshtein from .datarepresentation import DataCore @@ -9,7 +8,7 @@ class KeywordExtractor: """Class to extract and process keywords from text.""" - + def __init__( self, lan="en", @@ -22,7 +21,7 @@ def __init__( stopwords=None ): """Initialize the KeywordExtractor with the given parameters. - + Args: lan (str): Language code for stopwords n (int): N-gram size @@ -48,7 +47,7 @@ def __init__( if not os.path.exists(os.path.join(dir_path, local_path)): local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - + resource_path = os.path.join(dir_path, local_path) if stopwords is None: @@ -85,10 +84,10 @@ def seqm(self, cand1, cand2): def extract_keywords(self, text): """Extract keywords from the given text. - + Args: text (str): Input text to extract keywords from - + Returns: list: List of tuples containing (keyword, score) """ @@ -103,10 +102,10 @@ def extract_keywords(self, text): windowsSize=self.window_size, n=self.n ) - + dc.build_single_terms_features(features=self.features) dc.build_mult_terms_features(features=self.features) - + result_set = [] candidates_sorted = sorted( [cc for cc in dc.candidates.values() if cc.isValid()], @@ -126,14 +125,14 @@ def extract_keywords(self, text): if dist > self.dedup_lim: should_add = False break - + if should_add: result_set.append((cand.H, cand)) if len(result_set) == self.top: break return [(cand.kw, h) for (h, cand) in result_set] - + except Exception as e: print(f"Warning! Exception: {e} generated by text: '{text}'") - return [] \ No newline at end of file + return [] From 522d95ae897fb379e4bb8279f4610d7f2ce4dc32 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:42:19 +0000 Subject: [PATCH 009/118] link code testes --- tests/yakenew.md | 4 ++-- yake/__pycache__/yake.cpython-310.pyc | Bin 4480 -> 4480 bytes yake/yake.py | 22 ++++++++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index d61e488a..c830263c 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -51,7 +51,7 @@ Nomes mais descritivos para variáveis temporárias -Status semanda 07/02/2025 +Status semanda 07/02/2025 //////Refactoring score (3.21) - Exploração das mencionadas ferramentas puppet e cheff. (Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) (04 e 05 /02/2025) @@ -67,7 +67,7 @@ Planos próxima semana: - Caso consigo tempo, começar a tratar de problemas identificados pelo pylint -Status semana 14/02/2025 +Status semana 14/02/2025 //////Refactoring score (3.21) - Automatização dos testes de resultados diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index d608a47348c67c596c10a4a77b22ecb36e3fb2d8..7909d0c6c775f76f5ad75f1e08b1c02744abe0d8 100644 GIT binary patch delta 19 ZcmZorZcygR=jG*M0D>heHgc5-0stx#1abfX delta 19 YcmZorZcygR=jG*M0D{!z8@b8^0VtFNG5`Po diff --git a/yake/yake.py b/yake/yake.py index 6efb275a..558d8520 100644 --- a/yake/yake.py +++ b/yake/yake.py @@ -14,11 +14,11 @@ def __init__( lan="en", n=3, dedup_lim=0.9, - dedup_func='seqm', + dedup_func="seqm", window_size=1, top=20, features=None, - stopwords=None + stopwords=None, ): """Initialize the KeywordExtractor with the given parameters. @@ -52,19 +52,19 @@ def __init__( if stopwords is None: try: - with open(resource_path, encoding='utf-8') as stop_file: + with open(resource_path, encoding="utf-8") as stop_file: self.stopword_set = set(stop_file.read().lower().split("\n")) except UnicodeDecodeError: - print('Warning: reading stopword list as ISO-8859-1') - with open(resource_path, encoding='ISO-8859-1') as stop_file: + print("Warning: reading stopword list as ISO-8859-1") + with open(resource_path, encoding="ISO-8859-1") as stop_file: self.stopword_set = set(stop_file.read().lower().split("\n")) else: self.stopword_set = set(stopwords) # Set deduplication function - if dedup_func in ('jaro_winkler', 'jaro'): + if dedup_func in ("jaro_winkler", "jaro"): self.dedup_function = self.jaro - elif dedup_func.lower() in ('sequencematcher', 'seqm'): + elif dedup_func.lower() in ("sequencematcher", "seqm"): self.dedup_function = self.seqm else: self.dedup_function = self.levs @@ -95,12 +95,12 @@ def extract_keywords(self, text): if not text: return [] - text = text.replace('\n\t', ' ') + text = text.replace("\n", " ") dc = DataCore( text=text, stopword_set=self.stopword_set, windowsSize=self.window_size, - n=self.n + n=self.n, ) dc.build_single_terms_features(features=self.features) @@ -113,7 +113,9 @@ def extract_keywords(self, text): ) if self.dedup_lim >= 1.0: - return [(cand.unique_kw, cand.H) for cand in candidates_sorted][:self.top] + return [(cand.unique_kw, cand.H) for cand in candidates_sorted][ + :self.top + ] for cand in candidates_sorted: should_add = True From bb9c340683b87b2a9e0a7c9621a2336420afe8a8 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:11:51 +0000 Subject: [PATCH 010/118] =?UTF-8?q?Levenshtein=20refatoriza=C3=A7=C3=A3o?= =?UTF-8?q?=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/yakenew.md | 6 +- yake/Levenshtein.py | 74 +++++++++++++------ yake/__pycache__/levenshtein.cpython-310.pyc | Bin 1296 -> 2210 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 4480 -> 4485 bytes 4 files changed, 57 insertions(+), 23 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index c830263c..a8fae428 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -73,4 +73,8 @@ Status semana 14/02/2025 //////Refactoring score (3.21) Planos próxima semana -- Avançar com refatorização e tratamento de problemas identificados pelo pylint. \ No newline at end of file +- Avançar com refatorização e tratamento de problemas identificados pelo pylint. + + + +////// Refactoring score (3.57) \ No newline at end of file diff --git a/yake/Levenshtein.py b/yake/Levenshtein.py index 899d3bff..36da95b9 100644 --- a/yake/Levenshtein.py +++ b/yake/Levenshtein.py @@ -1,39 +1,69 @@ +"""Module providing Levenshtein distance and ratio calculations.""" + import numpy as np -class Levenshtein(object): +class Levenshtein: + """Class for computing Levenshtein distance and similarity ratio.""" @staticmethod - def __ratio(distance, str_length): + def __ratio(distance: float, str_length: int) -> float: + """Calculate the similarity ratio based on distance and string length. + + Args: + distance (float): The Levenshtein distance between two strings. + str_length (int): The length of the longer string. + + Returns: + float: The similarity ratio. + """ return 1 - float(distance) / float(str_length) @staticmethod - def ratio(seq1, seq2): - str_distance = Levenshtein.distance(seq1,seq2) - str_length = max(len(seq1),len(seq2)) - return Levenshtein.__ratio(str_distance,str_length) + def ratio(seq1: str, seq2: str) -> float: + """Compute the similarity ratio between two strings. + + Args: + seq1 (str): The first string. + seq2 (str): The second string. + + Returns: + float: The similarity ratio. + """ + str_distance = Levenshtein.distance(seq1, seq2) + str_length = max(len(seq1), len(seq2)) + return Levenshtein.__ratio(str_distance, str_length) @staticmethod - def distance(seq1, seq2): + def distance(seq1: str, seq2: str) -> int: + """Calculate the Levenshtein distance between two strings. + + Args: + seq1 (str): The first string. + seq2 (str): The second string. + + Returns: + int: The Levenshtein distance. + """ size_x = len(seq1) + 1 size_y = len(seq2) + 1 - matrix = np.zeros ((size_x, size_y)) + matrix = np.zeros((size_x, size_y)) + for x in range(size_x): - matrix [x, 0] = x + matrix[x, 0] = x for y in range(size_y): - matrix [0, y] = y + matrix[0, y] = y for x in range(1, size_x): for y in range(1, size_y): - if seq1[x-1] == seq2[y-1]: - matrix [x,y] = min( - matrix[x-1, y] + 1, - matrix[x-1, y-1], - matrix[x, y-1] + 1 - ) + if seq1[x - 1] == seq2[y - 1]: + cost = 0 else: - matrix [x,y] = min( - matrix[x-1,y] + 1, - matrix[x-1,y-1] + 1, - matrix[x,y-1] + 1 - ) - return (matrix[size_x - 1, size_y - 1]) \ No newline at end of file + cost = 1 + + matrix[x, y] = min( + matrix[x - 1, y] + 1, # Deletion + matrix[x, y - 1] + 1, # Insertion + matrix[x - 1, y - 1] + cost # Substitution + ) + + return int(matrix[size_x - 1, size_y - 1]) diff --git a/yake/__pycache__/levenshtein.cpython-310.pyc b/yake/__pycache__/levenshtein.cpython-310.pyc index 8296e2d4cfc7d13fb2f325a8e4b17ad2cb5e4581..07aa15941d8ce772f0fe7586b39d1944558e74b1 100644 GIT binary patch literal 2210 zcmc&#Pmdcl6t_Kpl1*jRX0o=^ zZlcL4{UF^VMs$Y2kuYD}M9r_iR7E-_I}k?rsA?yY=ilaRnsPc3`ICet*@%9_ zpYTkcDxPGNB~nFM%xRP{Dk7ESG>+1Eni@5ey%%ry>0OPSQvuYF6H^r|au0>xNV!OnEj^r`i`>O+^+HxX-#7-GzP( zUG9NkSfK(fjl@fQ3w02LN22#J_^gt~sXFEK>Z$Z3lAO`}O1|NI6MPv$uhF2Z_N5rf zJC`FfxsI704AVSP-8=LV98*cl#^Z#mr<`Y0JFF=H0u`ucV83|xHdU@0zXR06fe~?_r z{-Y!s<^B74JRS2)$^L^xeKkGl&!Wftqr=|ER_Rv~(3{M3EetJ%&34kDx7VCsullU) z+Liq56Dtq55I5mmBK{!^6nc&eK>LC$h$70d=sO1eC0RINbqi8B7v`nm`ESRTkFTS^ zt8lpl=AV$85a|JcwE}yX2&pa+SyRP)!Sk@{DS4d3Yc9e6U%=~n!lct;rk!zgt{vcu zz8+SRyUK0X6;0zBfY5>A+M2r-YzuWMc8rH-0ec5j>4ONGZ5-hFwaUId>#+rs!Pl&| z5A#n@%4f;&J_4BRgFSW-+e9g$BmO(XK)Rb#a0Uxv9 zO(-Dy$jp@9)fuyTGh5X5(b6eBZ5*GS9V!zs>_Dz2HKEuEX7t!CbXeWV^J@@)`x=F#IO}v|mM9wKZ z2ps!Ld+mugs47+J%sPS4L)CS5GP^VL&3-$xS-oB*Fjliy{ac5SAGlZ^ut)Y_s^=gC z5p+Ph^neH^_!SXcvKjAkLBEiea|<4%(?hvDI4t&Hs%;Pwq6O(P2{D3Qks0kepmX6^ z-38qhp4B~30aV|te3sv2s!p|x(;fqi#Xud8_YtOQf)G@b0w6)s8GS}J2>`IpEd^VP z8uw(7MY_d|FJh&mv?onf={y|Bw69OUle_|czxIM8)j=;fR5Dk=*Es5D!G6{oB{J12 zIEeM9(Qz=2&gGk(_O?}m!TkZ-7h_Wi!#vV)=Hj{VkWDsOUn0?-+aHiYB6nn7!a|d4 zS^$w7Hf5S=Zi#UuHe*u`R;OSEzhOX;c3N(ZiE>P7coJP24y??2xRiFDwdEK`$>Cco zcT5d$U~wP0hah+jrSK8XwPYTFs?c0xYqUlut4qjj>+ygNVql1^%{wSSSs6h$2+*nDBwLWN@Jj8RXZL+yPvMc?)1uW{1M^PL8i9w+-y(E1(;eUKn>G^Gso7(!PXx$7!pQ*U__qE}n`f zGQ6DskByf^I*%_6h2QwE^4gYp3{mPeh#ITW29&p)4c4HWl+iW&HGVU1jXnh(w4crT zq`BMzix%p%D#j1PG)iO`nrav(nHUXFuZ7`o6bK}Z27gYcN diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 7909d0c6c775f76f5ad75f1e08b1c02744abe0d8..8eff0751218a34dada3545b78cd2db3c3a1bcf24 100644 GIT binary patch delta 60 zcmZorZdK;Z=jG*M00QS#Thg~}O0WDJ}9iC>+AhmnJk N?LP<0W?6w`MgX*+4k-Wt delta 55 zcmZowZcygU=jG*M0D>hewxoA$d+-$)Uz{J?LxsxxGkuhlUXMS}SDMk*a J%}N5vi~xa+4P^iT From 79315a726c14f1dd237b19acaff0c823f0258a07 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:55:00 +0000 Subject: [PATCH 011/118] clip.py - initial refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit atualizado status adicionados ficheiros originais para comparações --- originalfiles/Levenshteinog.py | 0 originalfiles/cliog.py | 53 +++++++ originalfiles/highlightog.py | 0 tests/yakenew.md | 2 +- yake/Levenshtein.py | 3 +- yake/__pycache__/highlight.cpython-310.pyc | Bin 4845 -> 4845 bytes yake/__pycache__/levenshtein.cpython-310.pyc | Bin 2210 -> 2210 bytes yake/cli.py | 137 ++++++++++++------- 8 files changed, 146 insertions(+), 49 deletions(-) create mode 100644 originalfiles/Levenshteinog.py create mode 100644 originalfiles/cliog.py create mode 100644 originalfiles/highlightog.py diff --git a/originalfiles/Levenshteinog.py b/originalfiles/Levenshteinog.py new file mode 100644 index 00000000..e69de29b diff --git a/originalfiles/cliog.py b/originalfiles/cliog.py new file mode 100644 index 00000000..03c083f8 --- /dev/null +++ b/originalfiles/cliog.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- + +"""Console script for yake.""" + +import click +import yake +from tabulate import tabulate + +@click.command() +@click.option("-ti",'--text_input', help='Input text, SURROUNDED by single quotes(\')', required=False) +@click.option("-i",'--input_file', help='Input file', required=False) +@click.option("-l",'--language', default="en", help='Language', required=False) + +@click.option('-n','--ngram-size', default=3, help='Max size of the ngram.', required=False, type=int) +@click.option('-df','--dedup-func', help='Deduplication function.', default='seqm', type=click.Choice(['leve', 'jaro', 'seqm']), required=False) +@click.option('-dl','--dedup-lim', type=float, help='Deduplication limiar.', default=.9, required=False) + +@click.option('-ws','--window-size', type=int, help='Window size.', default=1, required=False) +@click.option('-t','--top', type=int, help='Number of keyphrases to extract', default=10, required=False) +@click.option('-v','--verbose', count=True, required=False) + +def keywords(text_input, input_file, language, ngram_size, verbose=False, dedup_func="seqm", dedup_lim=.9, window_size=1, top=10): + + def run_yake(text_content): + myake = yake.KeywordExtractor(lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, + windowsSize=window_size, top=top) + results = myake.extract_keywords(text_content) + + table = [] + for kw in results: + if (verbose): + table.append({"keyword":kw[0], "score":kw[1]}) + else: + table.append({"keyword":kw[0]}) + + print(tabulate(table, headers="keys")) + + if text_input and input_file: + print("You should specify either an input file or direct text input, but not both!") + exit(1) + elif not text_input and not input_file: + print("You should specify either an input file or direct text input") + exit(1) + else: + if text_input: + run_yake(text_input) + else: + with open(input_file) as fpath: + text_content = fpath.read() + run_yake(text_content) + +if __name__ == "__main__": + keywords() \ No newline at end of file diff --git a/originalfiles/highlightog.py b/originalfiles/highlightog.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/yakenew.md b/tests/yakenew.md index a8fae428..a01ca068 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) \ No newline at end of file +////// Refactoring score (3.57) -> (3.62) 18/02/2025 \ No newline at end of file diff --git a/yake/Levenshtein.py b/yake/Levenshtein.py index 36da95b9..d15dae80 100644 --- a/yake/Levenshtein.py +++ b/yake/Levenshtein.py @@ -2,6 +2,7 @@ import numpy as np + class Levenshtein: """Class for computing Levenshtein distance and similarity ratio.""" @@ -63,7 +64,7 @@ def distance(seq1: str, seq2: str) -> int: matrix[x, y] = min( matrix[x - 1, y] + 1, # Deletion matrix[x, y - 1] + 1, # Insertion - matrix[x - 1, y - 1] + cost # Substitution + matrix[x - 1, y - 1] + cost, # Substitution ) return int(matrix[size_x - 1, size_y - 1]) diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index cba61843cce02c920839160b259637e1874bc25f..945e36fad17fde9b0472561ba72dc2aa4ed72493 100644 GIT binary patch delta 20 acmaE>`c{=YpO=@50SI1g+p>}Skq`hxX9mXr delta 20 acmaE>`c{=YpO=@50SE;1wKsA<5&{4^Aq5@) diff --git a/yake/__pycache__/levenshtein.cpython-310.pyc b/yake/__pycache__/levenshtein.cpython-310.pyc index 07aa15941d8ce772f0fe7586b39d1944558e74b1..7736a287afb159b46e48c770ab9c2b0d1ed86278 100644 GIT binary patch delta 50 zcmZ1^xJZyUpO=@50SJsYZAq`+$ZN{X$hp~>c>^P(*yb-R6PXxQC%3WhWMrG{z>&zv F3;;z749frj delta 50 zcmZ1^xJZyUpO=@50SKfwZb`4%$ZN{X$g$a(c>^P(=;kjh6PXxQCbzNgWMrM}z>&zv F1OPzD45|PC diff --git a/yake/cli.py b/yake/cli.py index 5e3abee0..d0cf5c2b 100644 --- a/yake/cli.py +++ b/yake/cli.py @@ -1,53 +1,96 @@ -# -*- coding: utf-8 -*- - -"""Console script for yake.""" - +import sys import click -import yake from tabulate import tabulate +import yake + @click.command() -@click.option("-ti",'--text_input', help='Input text, SURROUNDED by single quotes(\')', required=False) -@click.option("-i",'--input_file', help='Input file', required=False) -@click.option("-l",'--language', default="en", help='Language', required=False) - -@click.option('-n','--ngram-size', default=3, help='Max size of the ngram.', required=False, type=int) -@click.option('-df','--dedup-func', help='Deduplication function.', default='seqm', type=click.Choice(['leve', 'jaro', 'seqm']), required=False) -@click.option('-dl','--dedup-lim', type=float, help='Deduplication limiar.', default=.9, required=False) - -@click.option('-ws','--window-size', type=int, help='Window size.', default=1, required=False) -@click.option('-t','--top', type=int, help='Number of keyphrases to extract', default=10, required=False) -@click.option('-v','--verbose', count=True, required=False) - -def keywords(text_input, input_file, language, ngram_size, verbose=False, dedup_func="seqm", dedup_lim=.9, window_size=1, top=10): - - def run_yake(text_content): - myake = yake.KeywordExtractor(lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, - windowsSize=window_size, top=top) - results = myake.extract_keywords(text_content) - - table = [] - for kw in results: - if (verbose): - table.append({"keyword":kw[0], "score":kw[1]}) - else: - table.append({"keyword":kw[0]}) - - print(tabulate(table, headers="keys")) - - if text_input and input_file: - print("You should specify either an input file or direct text input, but not both!") - exit(1) - elif not text_input and not input_file: - print("You should specify either an input file or direct text input") - exit(1) - else: - if text_input: - run_yake(text_input) - else: - with open(input_file) as fpath: - text_content = fpath.read() - run_yake(text_content) +@click.option( + "-ti", "--text_input", + help="Input text, SURROUNDED by single quotes(\')", + required=False, +) +@click.option( + "-i", "--input_file", + help="Input file", + required=False, +) +@click.option( + "-l", "--language", + default="en", + help="Language", + required=False, +) + +@click.option( + "-n", "--ngram_size", + default=3, + help="Max size of the ngram", + type=int, +) +@click.option( + "-df", "--dedup_func", + help="Deduplication function", + default="seqm", + type=click.Choice(["leve", "jaro", "seqm"]), +) +@click.option( + "-dl", "--dedup_lim", + help="Deduplication limiar", + default=0.9, + type=float, +) + +@click.option( + "-ws", "--window_size", + help="Window size", + default=1, + type=int, +) +@click.option( + "-t", "--top", + help="Number of keyphrases to extract", + default=10, + type=int, +) +@click.option( + "-v", "--verbose", + count=True, + help="Verbose output", +) + + +def keywords( + text_input, input_file, language, ngram_size, dedup_func, dedup_lim, window_size, top, verbose +): + """Extract keywords using YAKE!""" + + def run_yake(text_content): + extractor = yake.KeywordExtractor( + lan=language, n=ngram_size, dedupLim=dedup_lim, + dedupFunc=dedup_func, windowsSize=window_size, top=top + ) + results = extractor.extract_keywords(text_content) + + table = [ + {"keyword": kw[0], "score": kw[1]} if verbose else {"keyword": kw[0]} + for kw in results + ] + print(tabulate(table, headers="keys")) + + if text_input and input_file: + print("Specify either an input file or direct text input, not both!") + sys.exit(1) + elif not text_input and not input_file: + print("Specify either an input file or direct text input") + sys.exit(1) + + if text_input: + run_yake(text_input) + else: + with open(input_file, encoding="utf-8") as f: + run_yake(f.read()) + if __name__ == "__main__": - keywords() + keywords() From ecddac42e9f58a2e2bd439ed9fb260b070ea5246 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:01:09 +0000 Subject: [PATCH 012/118] removidos ficheiros originais Removidos ficheiros originais, pois estavam a interferir com o score do teste pylint --- originalfiles/Levenshteinog.py | 0 originalfiles/cliog.py | 53 -------------------- originalfiles/highlightog.py | 0 originalfiles/yakeog.py | 88 ---------------------------------- 4 files changed, 141 deletions(-) delete mode 100644 originalfiles/Levenshteinog.py delete mode 100644 originalfiles/cliog.py delete mode 100644 originalfiles/highlightog.py delete mode 100644 originalfiles/yakeog.py diff --git a/originalfiles/Levenshteinog.py b/originalfiles/Levenshteinog.py deleted file mode 100644 index e69de29b..00000000 diff --git a/originalfiles/cliog.py b/originalfiles/cliog.py deleted file mode 100644 index 03c083f8..00000000 --- a/originalfiles/cliog.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- - -"""Console script for yake.""" - -import click -import yake -from tabulate import tabulate - -@click.command() -@click.option("-ti",'--text_input', help='Input text, SURROUNDED by single quotes(\')', required=False) -@click.option("-i",'--input_file', help='Input file', required=False) -@click.option("-l",'--language', default="en", help='Language', required=False) - -@click.option('-n','--ngram-size', default=3, help='Max size of the ngram.', required=False, type=int) -@click.option('-df','--dedup-func', help='Deduplication function.', default='seqm', type=click.Choice(['leve', 'jaro', 'seqm']), required=False) -@click.option('-dl','--dedup-lim', type=float, help='Deduplication limiar.', default=.9, required=False) - -@click.option('-ws','--window-size', type=int, help='Window size.', default=1, required=False) -@click.option('-t','--top', type=int, help='Number of keyphrases to extract', default=10, required=False) -@click.option('-v','--verbose', count=True, required=False) - -def keywords(text_input, input_file, language, ngram_size, verbose=False, dedup_func="seqm", dedup_lim=.9, window_size=1, top=10): - - def run_yake(text_content): - myake = yake.KeywordExtractor(lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, - windowsSize=window_size, top=top) - results = myake.extract_keywords(text_content) - - table = [] - for kw in results: - if (verbose): - table.append({"keyword":kw[0], "score":kw[1]}) - else: - table.append({"keyword":kw[0]}) - - print(tabulate(table, headers="keys")) - - if text_input and input_file: - print("You should specify either an input file or direct text input, but not both!") - exit(1) - elif not text_input and not input_file: - print("You should specify either an input file or direct text input") - exit(1) - else: - if text_input: - run_yake(text_input) - else: - with open(input_file) as fpath: - text_content = fpath.read() - run_yake(text_content) - -if __name__ == "__main__": - keywords() \ No newline at end of file diff --git a/originalfiles/highlightog.py b/originalfiles/highlightog.py deleted file mode 100644 index e69de29b..00000000 diff --git a/originalfiles/yakeog.py b/originalfiles/yakeog.py deleted file mode 100644 index 6ec7f59b..00000000 --- a/originalfiles/yakeog.py +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- - -"""Main module.""" - -import string -import os -import jellyfish -from .Levenshtein import Levenshtein - -from .datarepresentation import DataCore - -class KeywordExtractor(object): - - def __init__(self, lan="en", n=3, dedupLim=0.9, dedupFunc='seqm', windowsSize=1, top=20, features=None, stopwords=None): - self.lan = lan - - dir_path = os.path.dirname(os.path.realpath(__file__)) - - local_path = os.path.join("StopwordsList", "stopwords_%s.txt" % lan[:2].lower()) - - if os.path.exists(os.path.join(dir_path,local_path)) == False: - local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - - resource_path = os.path.join(dir_path,local_path) - - if stopwords is None: - try: - with open(resource_path, encoding='utf-8') as stop_fil: - self.stopword_set = set( stop_fil.read().lower().split("\n") ) - except: - print('Warning, read stopword list as ISO-8859-1') - with open(resource_path, encoding='ISO-8859-1') as stop_fil: - self.stopword_set = set( stop_fil.read().lower().split("\n") ) - else: - self.stopword_set = set(stopwords) - - self.n = n - self.top = top - self.dedupLim = dedupLim - self.features = features - self.windowsSize = windowsSize - if dedupFunc == 'jaro_winkler' or dedupFunc == 'jaro': - self.dedu_function = self.jaro - elif dedupFunc.lower() == 'sequencematcher' or dedupFunc.lower() == 'seqm': - self.dedu_function = self.seqm - else: - self.dedu_function = self.levs - - def jaro(self, cand1, cand2): - return jellyfish.jaro_winkler(cand1, cand2 ) - - def levs(self, cand1, cand2): - return 1.-jellyfish.levenshtein_distance(cand1, cand2 ) / max(len(cand1),len(cand2)) - - def seqm(self, cand1, cand2): - return Levenshtein.ratio(cand1, cand2) - - def extract_keywords(self, text): - try: - if not(len(text) > 0): - return [] - - text = text.replace('\n\t',' ') - dc = DataCore(text=text, stopword_set=self.stopword_set, windowsSize=self.windowsSize, n=self.n) - dc.build_single_terms_features(features=self.features) - dc.build_mult_terms_features(features=self.features) - resultSet = [] - todedup = sorted([cc for cc in dc.candidates.values() if cc.isValid()], key=lambda c: c.H) - - if self.dedupLim >= 1.: - return ([ (cand.unique_kw, cand.H) for cand in todedup])[:self.top] - - for cand in todedup: - toadd = True - for (h, candResult) in resultSet: - dist = self.dedu_function(cand.unique_kw, candResult.unique_kw) - if dist > self.dedupLim: - toadd = False - break - if toadd: - resultSet.append( (cand.H, cand) ) - if len(resultSet) == self.top: - break - - return [ (cand.kw,h) for (h,cand) in resultSet] - except Exception as e: - print(f"Warning! Exception: {e} generated by the following text: '{text}' ") - return [] From 3d7c317367ee55dcb137387fc3ec4285c2678a3c Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:24:03 +0000 Subject: [PATCH 013/118] cli.py atualizado --- tests/yakenew.md | 2 +- yake/cli.py | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index a01ca068..ba7ec8eb 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) -> (3.62) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.57) -> (3.67) 18/02/2025 \ No newline at end of file diff --git a/yake/cli.py b/yake/cli.py index d0cf5c2b..752f7ec0 100644 --- a/yake/cli.py +++ b/yake/cli.py @@ -1,13 +1,14 @@ +"""CLI para extração de palavras-chave utilizando YAKE!""" + import sys import click from tabulate import tabulate import yake - @click.command() @click.option( "-ti", "--text_input", - help="Input text, SURROUNDED by single quotes(\')", + help="Input text, SURROUNDED by single quotes(')", required=False, ) @click.option( @@ -21,7 +22,6 @@ help="Language", required=False, ) - @click.option( "-n", "--ngram_size", default=3, @@ -40,7 +40,6 @@ default=0.9, type=float, ) - @click.option( "-ws", "--window_size", help="Window size", @@ -58,8 +57,6 @@ count=True, help="Verbose output", ) - - def keywords( text_input, input_file, language, ngram_size, dedup_func, dedup_lim, window_size, top, verbose ): @@ -68,7 +65,7 @@ def keywords( def run_yake(text_content): extractor = yake.KeywordExtractor( lan=language, n=ngram_size, dedupLim=dedup_lim, - dedupFunc=dedup_func, windowsSize=window_size, top=top + dedupFunc=dedup_func, windowSize=window_size, top=top ) results = extractor.extract_keywords(text_content) @@ -88,9 +85,12 @@ def run_yake(text_content): if text_input: run_yake(text_input) else: - with open(input_file, encoding="utf-8") as f: - run_yake(f.read()) - + try: + with open(input_file, encoding="utf-8") as f: + run_yake(f.read()) + except FileNotFoundError: + print(f"File '{input_file}' not found.") + sys.exit(1) if __name__ == "__main__": keywords() From 956bb97b39c04f7cadd81a4ad9151967bc05dba5 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:33:24 +0000 Subject: [PATCH 014/118] trailing whitespaces --- demo/streamlit_app.py | 20 +++++++++--------- pke/yake.py | 1 - setup.py | 2 +- .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 20177 -> 20177 bytes tests/test_yake.py | 2 +- tests/yakenew.md | 2 +- yake/cli.py | 12 +++++------ 7 files changed, 19 insertions(+), 20 deletions(-) diff --git a/demo/streamlit_app.py b/demo/streamlit_app.py index 81648284..b6e9ba90 100644 --- a/demo/streamlit_app.py +++ b/demo/streamlit_app.py @@ -61,17 +61,17 @@ text_lower = text.lower() keywords_list = str(keywords[0][0]) -for m in re.finditer(keywords_list, text_lower): +for m in re.finditer(keywords_list, text_lower): d = dict(start = m.start(), end = m.end(), label = "") ents.append(d) - + for i in range(1, len(keywords)): kwords = str(keywords[i][0]) keywords_list += (', ' + kwords) - for m in re.finditer(kwords, text_lower): + for m in re.finditer(kwords, text_lower): d = dict(start = m.start(), end = m.end(), label = "") ents.append(d) - + #sort the result by ents, as ent rule suggests sort_ents = sorted(ents, key=lambda x: x["start"]) @@ -91,15 +91,15 @@ #tabular data (columns: keywords, score) df = pd.DataFrame(keywords, columns=("keywords","score")) st.table(df) - + else: #create and generate a word cloud image - wordcloud = WordCloud(width = 1000, height = 600, max_font_size = 80, - min_font_size=10, prefer_horizontal=1, + wordcloud = WordCloud(width = 1000, height = 600, max_font_size = 80, + min_font_size=10, prefer_horizontal=1, max_words=numOfKeywords, - background_color="white", - collocations=False, - regexp = r"\w[\w ']+").generate(keywords_list) + background_color="white", + collocations=False, + regexp = r"\w[\w ']+").generate(keywords_list), #display the generated image plt.imshow(wordcloud, interpolation='bilinear') diff --git a/pke/yake.py b/pke/yake.py index 05b23072..8ae38964 100644 --- a/pke/yake.py +++ b/pke/yake.py @@ -174,7 +174,6 @@ def _contexts_building(self, use_stems=False, window=2): if use_stems: words = sentence.stems - buffer = [] # loop through words in sentence for j, word in enumerate(words): diff --git a/setup.py b/setup.py index d1cf7fb7..50fc2f41 100644 --- a/setup.py +++ b/setup.py @@ -60,7 +60,7 @@ version='0.4.8', description="Keyword extraction Python package", long_description=readme, - long_description_content_type='text/markdown', + long_description_content_type='text/markdown', url='https://pypi.python.org/pypi/yake', project_urls={ 'Documentation': 'https://liaad.github.io/yake/', diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc index d711b7af22d04c628997c81732a5887da5bbf2f3..7cc70a9e4088c5a5b6a2a887cdf085bc0651c151 100644 GIT binary patch delta 24 ecmcaOm+|6UM&5j0UM>b8$UM9y{q;uPBYps6JP3gR delta 24 ecmcaOm+|6UM&5j0UM>b85DeO!{(d9x5kCN3sRz3N diff --git a/tests/test_yake.py b/tests/test_yake.py index 27f760d7..712567dd 100644 --- a/tests/test_yake.py +++ b/tests/test_yake.py @@ -20,7 +20,7 @@ def test_phraseless_example(): def test_null_and_blank_example(): pyake = yake.KeywordExtractor() - + result = pyake.extract_keywords("") assert len(result) == 0 diff --git a/tests/yakenew.md b/tests/yakenew.md index ba7ec8eb..267f0d35 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) -> (3.67) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.57) -> (3.71) 18/02/2025 \ No newline at end of file diff --git a/yake/cli.py b/yake/cli.py index 752f7ec0..8a726662 100644 --- a/yake/cli.py +++ b/yake/cli.py @@ -30,14 +30,14 @@ ) @click.option( "-df", "--dedup_func", - help="Deduplication function", - default="seqm", + help="Deduplication function", + default="seqm", type=click.Choice(["leve", "jaro", "seqm"]), ) @click.option( - "-dl", "--dedup_lim", - help="Deduplication limiar", - default=0.9, + "-dl", "--dedup_lim", + help="Deduplication limiar", + default=0.9, type=float, ) @click.option( @@ -64,7 +64,7 @@ def keywords( def run_yake(text_content): extractor = yake.KeywordExtractor( - lan=language, n=ngram_size, dedupLim=dedup_lim, + lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, windowSize=window_size, top=top ) results = extractor.extract_keywords(text_content) From cf3ef992b63277ccfb8b28fda8a6ba21b59b5e18 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:57:37 +0000 Subject: [PATCH 015/118] =?UTF-8?q?highlight=20refatoriza=C3=A7=C3=A3o=20i?= =?UTF-8?q?nicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/yakenew.md | 2 +- yake/__pycache__/highlight.cpython-310.pyc | Bin 4845 -> 4867 bytes yake/highlight.py | 25 ++++++++++++--------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index 267f0d35..e152f647 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) -> (3.71) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.21) -> (3.85) 18/02/2025 \ No newline at end of file diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index 945e36fad17fde9b0472561ba72dc2aa4ed72493..1876e6a2dad512b4072b0fb62ff508b9de2120c8 100644 GIT binary patch delta 353 zcmaE>+N`FX&&$ij00gH`Zb|o(VPJR+;vfTNAjbiSiFtj?6n0aGz~3ezD*zRBUt7HS1R zqf;1bnM)XIn3@?=n6g=l%xaiwSxOjdm{OP|8A_O%nTjMPZ)cX5)~sPzz*@st!?KX6 zmbr#Gn4yLtizS5>q+{|&=6j5)lP|EiadBl9XXX``B<3YgmSSxXkODbf0!Xm1@-VS5 z@@-zlYRAZExcMa;6C z2)HvcPMdr}@Sv6e&=d{^7G|#h96}tT9K0MZJYq#mKtWBGA~hgY6bd53fW+jTLPktN FOaMy_Q40V7 delta 335 zcmZoxd#kFQ&&$ij00ghLZAn*c@5JcM$XCk%oZ9&Ktoa( zYne+JYM7cCQ<$<@ip*=6YFSDcYnW1)BpI3+OPI2miXZf*d0OBv@E^m{=GEHXmcPV`S9X%*xKh$f&iMgCmQX+Y%^U z#0Mm*%qH`*i%)jo5ua?&&M|p2cP69XW?7z). It defaults to - :highlight_post – Specifies the text that should appear after a highlighted term. (e.g. ). It defaults to + :max_ngram_size - Specifies the maximum ngram size in the keywords. + + :highlight_pre – Specifies the text that should appear before a highlighted term.(e.g. ). + It defaults to + + :highlight_post – Specifies the text that should appear after a highlighted term. (e.g. ). + It defaults to """ self.highlight_pre = highlight_pre @@ -25,10 +30,10 @@ def highlight(self, text, keywords): n_text = '' # extract only the kw - if(len(keywords) > 0): + if len(keywords) > 0: kw_list = keywords - if(type(keywords[0]) == tuple): + if isinstance(keywords[0], tuple): kw_list = [x[0] for x in keywords] text = text.strip() @@ -44,7 +49,7 @@ def format_one_gram_text(self, text, relevant_words_array): relevant_words_array = [kw.lower() for kw in relevant_words_array] try: for tk in range(len(text_tokens)): - kw = re.sub('[!",:.;?()]$|^[!",:.;?()]|\W["!,:.;?()]', '', text_tokens[tk]) + kw = re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', text_tokens[tk]) if kw.lower() in relevant_words_array: text_tokens[tk] = text_tokens[tk].replace(kw, self.highlight_pre + kw + self.highlight_post) except: @@ -126,7 +131,7 @@ def find_more_relevant(self, y, text_tokens, n_gram, relevant_words_array, kw_l for i in range(n_gram): temporary_list.append(text_tokens[y:y + i + 1]) - k = re.sub('''[!",:.;?()]$|^[!",':.;?()]|\W["!,:.;?()]''', '', ' '.join(temporary_list[i])) + k = re.sub('''[!",:.;?()]$|^[!",':.;?()]|\\W["!,:.;?()]''', '', ' '.join(temporary_list[i])) if k.lower() in relevant_words_array: temporary_list_two.append(k) @@ -145,6 +150,6 @@ def find_more_relevant(self, y, text_tokens, n_gram, relevant_words_array, kw_l def replace_token(self, text_tokens, y, n_gram_word_list): txt = ' '.join(text_tokens[y:y + len(n_gram_word_list[0].split(' '))]) - new_expression = txt.replace(re.sub('[!",:.;?()]$|^[!",:.;?()]|\W["!,:.;?()]', '', txt), self.highlight_pre + n_gram_word_list[0] + self.highlight_post) + new_expression = txt.replace(re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', txt), self.highlight_pre + n_gram_word_list[0] + self.highlight_post) y += len(n_gram_word_list[0].split(' ')) return y, new_expression \ No newline at end of file From 2aadc643df6afe6acc58783b776f7670d9c01c8e Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:20:14 +0000 Subject: [PATCH 016/118] highlight.py lines --- tests/yakenew.md | 2 +- yake/__pycache__/highlight.cpython-310.pyc | Bin 4867 -> 4929 bytes yake/highlight.py | 142 +++++++++++---------- 3 files changed, 77 insertions(+), 67 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index e152f647..22d8cfc8 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.21) -> (3.85) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.21) -> (3.94) 18/02/2025 \ No newline at end of file diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index 1876e6a2dad512b4072b0fb62ff508b9de2120c8..cf0ad6a2597f9f2ca3f38954006ba5ac1d3105fb 100644 GIT binary patch delta 1713 zcmZux-H#Jh6rXeFb~>HTPTOI(%Ps=5u?JG_2=N8;Kt?IcM%Y_ntfF z{(k42s}uJptYBckQ1E&9_BTt{w|s2@z)6vXqfiuQ;I#M_Cd306wVfm0V)>m~6gpAh z9IQ5Gi{dL7632*cpIY%2DvK2lmzF&z@-9cBNjBO4aCkEIxKF--0THNQ!Z9&LU&CK; zT7j)%js7w=f-!^}QBh(71q)vt48XB!Jj$X){F<1uG~A%0yeM~nEC#gk%ydK|m8)0b zDjZSHZ5M~Nt*iUF%IS#GR(OId7m~N}i=tf6Z!34y4w0(|m5ak?6hB3kDE00fDDs_G zd}t^xX&YSaz$vAWY)-xuuzFcu8}H>T2FwY3Z}$=_*PZ3c(sB(Ys`yLAE*KBNSpbYn zQN-ukS=cEO$#QON+w}h8fkRV;b4Lp?LjN#z3S`|N&2f=Qj*H{^fHi~;DHK(D zeJ~%Eu)px)l@sqw6;Gv9vIWRkubBl<3EJ?|3eqsBubefag&(aF)@;pu70pquAg_yv!}&o^C-L_T=T@9g4{D9my?SX-!0c_Od?+x zVlrV_UMhJ`SMy6Uci1lRoB6|Ps#Xr8QYG^0-Sk3GKVR`Zw^VI(wWz*=-`-#MNar{m zB&qvQ!Vgi&bf5$a1x3ClCWA)vU}ND(y9rs;SuoZKH9=dqsD^83jmwIz=T&2l5S(D0 z5nW~!A&)fNq{rJdV#_?cqJea?V2~L7k%je1u2|?}erL=zxAg%_i;^{9r7^O<^X`^t zTIE%)vsZYc4Uxw6Yswy-%dp1|$<_?PRA+F!hl7d%f@k1 zNcTvZmCn1QdQPgHVkZ0g{+Rd23`q2^p@a@9N+rsph&>i17Nmi&NaXW4vsLk9_GwGH zOE}_oRTFA%ay3%h)Ky)|X-92gHe*K19;IP_Qe7;rxKClnl6|VBaS}n#-X<<|uv&+e zJ~WBuo|E26t-K%`Z&3C8(5d*nHr1#^%a7ZW=Q@`>7GkqOoCM3|S7RWu7*`BHoVaXK zPPa=XGnY|Rg=7zz7?c>E7tq>Oqsvj(s5VLqHLr{r%jE6;-MXGd+Z~k9L^UpR6*eL+ vqqMpCE%AHqZc#!L+NgAePy)uEdQP`c-Zb-!pt(SMah=66n-@RZGobzjGHrSw delta 1623 zcmah}O>7%Q6rMLbJG)+Q){f)E`6+arv~ISFlK!Zrg%D5^DXJnOp+eKrhG?sGej3L~ z$6H!OV>PItR{T~SsW&8B9HEp-2&7(UPyAiDAw}ZEtrx_N0};GgCpo}@wdU>2dvD+K z_ue<}N$Fag9R zJ~OkKgE5T_Y21XHFhORE>PK_$%O|8ESr2ItX-ab0l4gP6+b)nM)s|6mr7%OP42b@n zClPI=q|t;rm;4L~tZ8+Dm*KE_!o&9d;?VQMFT6Au%nIG8z)?r7V-~x-x>OA;wQe1E zHtlNp+FV?|9;+{{{J@C*e;QH_JfM(;93t_7Zm=!RC^*1C{caug^5~MnWoZAe)gk)? zyr!1y{V=XRwvQFf1yWDrvScbU5ehU(-Hmx<##Fipma5GW#y=A&9SCw%;ai5wvuyPu(Wy+unra%_FA=>wtA?$11@x z6HjBOk;baIGO;yj?P+Vb>N%O)&T>rV)D>p{`qV?Gi`{`M zed>WT)KTw{9a!h|wCF?dVh@Uh5GA_Q8;!+{gs|n6Yi@=2DP!Ijn@29H3};gp=%rD1=p4?Ep(JkUY%PI;fgq@zH`65 z!Q+*+x#eqONZXSHNAyl-5uGSTan&j)bU&HqXCk|SLl@oAxsapJLLRxxlYVDu7j$8- zDICEw2RqSn^vC{haMb88^M(W6t*u90q=;wO;C}C%WOTiM8+}?;yf)9p{JUiNLf!Jh z8!?ymEiw<08S!`Q$oi1h)9anmY=BHhwr)2N$#+f-tC?tK^p)WA^h`p1P5zy8keU`5 zOtU_Cq1eB}`F-+DeLApx1?0t<3)>gMz#E}vGE?xr`ZO~)oD_dAe!j_Ts{$vH*oTL} zZPh+$>OoY97qtk~q3kQ;r}Xw;1wVnh4O}%J1;eZ2LNDzG7smnJ$Ww}=ArCg=TNFnG z*64nwU;UbG^K^%GeUjm@sQ%0zn3Swx#H?XPM#Lm*8c1a>jR-G7G7Ky|4C$aADlC6%VGQD9E1PudHW1YH*6C#b}L-f5T#~1N*%pG{{cQJMnM1o diff --git a/yake/highlight.py b/yake/highlight.py index 8dada811..14f339a5 100644 --- a/yake/highlight.py +++ b/yake/highlight.py @@ -3,74 +3,73 @@ DEFAULT_HIGHLIGHT_PRE = "" DEFAULT_HIGHLIGHT_POST = "" -class TextHighlighter(): - def __init__(self, max_ngram_size, - highlight_pre = DEFAULT_HIGHLIGHT_PRE, highlight_post = DEFAULT_HIGHLIGHT_POST): +class TextHighlighter: + def __init__( + self, + max_ngram_size, + highlight_pre=DEFAULT_HIGHLIGHT_PRE, + highlight_post=DEFAULT_HIGHLIGHT_POST, + ): """ - TextHighlighter constructor. Define highlight text snippets + TextHighlighter constructor. Define highlight text snippets. :max_ngram_size - Specifies the maximum ngram size in the keywords. - - :highlight_pre – Specifies the text that should appear before a highlighted term.(e.g. ). - It defaults to - - :highlight_post – Specifies the text that should appear after a highlighted term. (e.g. ). - It defaults to + :highlight_pre – Specifies the text before a highlighted term. Defaults to . + :highlight_post – Specifies the text after a highlighted term. Defaults to . """ - self.highlight_pre = highlight_pre self.highlight_post = highlight_post self.max_ngram_size = max_ngram_size def highlight(self, text, keywords): - """ - Returns the highlighted text snippets of matching text in the original data - """ - - n_text = '' - # extract only the kw + """Returns the highlighted text snippets of matching text in the original data.""" + n_text = "" if len(keywords) > 0: kw_list = keywords - if isinstance(keywords[0], tuple): kw_list = [x[0] for x in keywords] - text = text.strip() if self.max_ngram_size == 1: n_text = self.format_one_gram_text(text, kw_list) elif self.max_ngram_size > 1: n_text = self.format_n_gram_text(text, kw_list, self.max_ngram_size) - return n_text def format_one_gram_text(self, text, relevant_words_array): - text_tokens = text.replace('\n',' ').split(' ') + """Formats text for one-gram highlighting.""" + text_tokens = text.replace("\n", " ").split(" ") relevant_words_array = [kw.lower() for kw in relevant_words_array] try: for tk in range(len(text_tokens)): - kw = re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', text_tokens[tk]) + kw = re.sub( + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', text_tokens[tk] + ) if kw.lower() in relevant_words_array: - text_tokens[tk] = text_tokens[tk].replace(kw, self.highlight_pre + kw + self.highlight_post) - except: + text_tokens[tk] = text_tokens[tk].replace( + kw, f"{self.highlight_pre}{kw}{self.highlight_post}" + ) + except Exception: pass - new_text = ' '.join(text_tokens) - return new_text + return " ".join(text_tokens) def format_n_gram_text(self, text, relevant_words_array, n_gram): - text_tokens = text.replace('\n',' ').split(' ') + """Formats text for n-gram highlighting.""" + text_tokens = text.replace("\n", " ").split(" ") relevant_words_array = [kw.lower() for kw in relevant_words_array] y = 0 final_splited_text = [] - while y < len(text_tokens): + while y < len(text_tokens): splited_n_gram_kw_list = [] n_gram_kw_list = [] - n_gram_word_list, splited_n_gram_kw_list = self.find_more_relevant(y, text_tokens, n_gram, relevant_words_array, n_gram_kw_list, splited_n_gram_kw_list) - if n_gram_word_list: + n_gram_word_list, splited_n_gram_kw_list = self.find_more_relevant( + y, text_tokens, n_gram, relevant_words_array, n_gram_kw_list, splited_n_gram_kw_list + ) - if len(n_gram_word_list[0].split(' ')) == 1: + if n_gram_word_list: + if len(n_gram_word_list[0].split(" ")) == 1: y, new_expression = self.replace_token(text_tokens, y, n_gram_word_list) final_splited_text.append(new_expression) else: @@ -78,22 +77,35 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): splited_n_gram_kw_list = [] splited_one = n_gram_word_list[0].split() - for len_kw in range(0, len(splited_one)): - kw_list, splited_n_gram_kw_list = self.find_more_relevant(y+len_kw, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_kw_list) - min_score_word = min(kw_list, key=lambda x: relevant_words_array.index(x.lower())) + for len_kw in range(len(splited_one)): + kw_list, splited_n_gram_kw_list = self.find_more_relevant( + y + len_kw, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_kw_list + ) + + min_score_word = min( + kw_list, key=lambda x: relevant_words_array.index(x.lower()) + ) if kw_list.index(min_score_word) == 0: term_list = [min_score_word] y, new_expression = self.replace_token(text_tokens, y, term_list) final_splited_text.append(new_expression) - elif kw_list.index(min_score_word) >= 1: - index_of_more_relevant = splited_n_gram_kw_list[0].index(min_score_word.split()[0]) - temporal_kw = ' '.join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + index_of_more_relevant = splited_n_gram_kw_list[0].index( + min_score_word.split()[0] + ) + temporal_kw = " ".join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + if temporal_kw in relevant_words_array: try: - if relevant_words_array.index(temporal_kw) > relevant_words_array.index(final_splited_text[-1] +' '+temporal_kw) and not re.findall(self.highlight_pre, final_splited_text[-1]): - term_list = [final_splited_text[-1] +' '+temporal_kw] + last_item = final_splited_text[-1] + combined_kw = f"{last_item} {temporal_kw}" + if ( + relevant_words_array.index(temporal_kw) + > relevant_words_array.index(combined_kw) + and not re.findall(self.highlight_pre, last_item) + ): + term_list = [combined_kw] del final_splited_text[-1] y -= 1 y, new_expression = self.replace_token(text_tokens, y, term_list) @@ -106,50 +118,48 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): term_list = [temporal_kw] y, new_expression = self.replace_token(text_tokens, y, term_list) final_splited_text.append(new_expression) - else: for tmp_kw in splited_n_gram_kw_list[0][:index_of_more_relevant]: if tmp_kw in relevant_words_array: - term_list = [tmp_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) - final_splited_text.append(new_expression) + term_list = [tmp_kw] + y, new_expression = self.replace_token(text_tokens, y, term_list) + final_splited_text.append(new_expression) else: final_splited_text.append(text_tokens[y]) y += 1 - else: final_splited_text.append(text_tokens[y]) y += 1 - new_text = ' '.join(final_splited_text) - - return new_text - + return " ".join(final_splited_text) - def find_more_relevant(self, y, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_word_list): + def find_more_relevant( + self, y, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_word_list + ): + """Finds the most relevant n-gram words.""" temporary_list = [] temporary_list_two = [] for i in range(n_gram): - - temporary_list.append(text_tokens[y:y + i + 1]) - k = re.sub('''[!",:.;?()]$|^[!",':.;?()]|\\W["!,:.;?()]''', '', ' '.join(temporary_list[i])) - + temporary_list.append(text_tokens[y : y + i + 1]) + k = re.sub( + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', " ".join(temporary_list[i]) + ) if k.lower() in relevant_words_array: temporary_list_two.append(k) - n_gram_word_list = sorted(temporary_list_two, key=lambda x: relevant_words_array.index(x.lower())) - - try: - kw_list.append(n_gram_word_list[0]) - splited_n_gram_word_list.append(n_gram_word_list[0].split()) - except: - pass + if temporary_list_two: + kw_list.append( + sorted(temporary_list_two, key=lambda x: relevant_words_array.index(x.lower()))[0] + ) + splited_n_gram_word_list.append(kw_list[0].split()) return kw_list, splited_n_gram_word_list - def replace_token(self, text_tokens, y, n_gram_word_list): - txt = ' '.join(text_tokens[y:y + len(n_gram_word_list[0].split(' '))]) - - new_expression = txt.replace(re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', txt), self.highlight_pre + n_gram_word_list[0] + self.highlight_post) - y += len(n_gram_word_list[0].split(' ')) - return y, new_expression \ No newline at end of file + """Replaces tokens in text with highlighted versions.""" + txt = " ".join(text_tokens[y : y + len(n_gram_word_list[0].split(" "))]) + kw_cleaned = re.sub(r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', "", txt) + new_expression = txt.replace( + kw_cleaned, f"{self.highlight_pre}{n_gram_word_list[0]}{self.highlight_post}" + ) + + return y + len(n_gram_word_list[0].split(" ")), new_expression From 56b48b2d7fc8fab3262bddb0d2f7fea9060eecf0 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:49:08 +0000 Subject: [PATCH 017/118] highlight.py docstrings --- yake/__pycache__/highlight.cpython-310.pyc | Bin 4929 -> 5348 bytes yake/highlight.py | 62 +++++++++++++++------ 2 files changed, 45 insertions(+), 17 deletions(-) diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index cf0ad6a2597f9f2ca3f38954006ba5ac1d3105fb..5c3e7bb05f19e6dc4da2244f8343f531594f49b8 100644 GIT binary patch delta 1455 zcmZ8gL2TSa6!qA%_N>?IY?4j3p+KxONwrCuZki^bZ3Prap^B(PTNPEbO5J#}>%{SH z$8I-Sd7DT*fH*+V91$Y90WCsNg?fY{Ata6nIQYVaJK~B^mOtL4LF{Ut|9rps|G)po zPe%VJnzd|Jm*BU4{c)vdXxBWgp>>QDLQy3Op>#9Owm z0ISB_itF26;#&}y{G!A z&a;6Uk|S?tB4r1`=yZNc{ScM-6SZDQ%DdRiUZNGcW>Lm!tZWqxKCR6ZQpq;fyjlfD zQ;G3%&Gn0fH?`SRj3_Jeue5@CLex3Rf6|^aa)h8~5!saYbcO$^O`Aff(4q*=FT6xv zM3lQ^1YO}Dkr~v_e<1I5{~TquNo4LIM_oy6A$FPHNY9{Q&eIh@$It}d)%)=l zx;??a)=#1=|6OO9SD`p&0yJm&Us{0=8U_AA=Gwrx@M{9ZNMdrJ(!SzUbIn7eRF5XS_J3bwZ7`i|{+Oh}K@b8CyV9=bI@PSxSwg~fiR3a)4n6NzHg zU#P$r!6x{R#&5^jWa0}~>kBK5P7$XCRaC98D3-&%+g-GI@uHela@DAei zD=^`|^F(9;MqiTLlno?rnh?r(s9$Xk?RPTs$TPdpiIbx2l7J}z(*hDbPut68z_%;> zv;6a}^2HZ~DL$PdVI#smD?qfC9T$*vdJwEw4Qec;4jYC|G1F;lGSUgbJ11bAmvWcJ z4;xqp=V!12aRy`2wr4;J0YP#bT9JD6MJ|KT82_eway|)@1UwJySP9p{SYK%@EPB-T zA@3XD?M&!U%o*@Kh85%hhLb*uuJf^;Emb6EXZUwLrNKPuAvcX9Oa@mGchp@MuWtyD Lfm7h4y+{8AsB}*D delta 1089 zcmYLHO>Ep$5cWL3wY^@iyFYHy1VP;>P32T6w023yjT|uQbwkRMPd+<%Yi;Hfppz|R02F_ zOu7cSEs_f)-8-m^>}XzUY5u(h(0E_d5?I$Fv1e!cK2Y%{&Y7RUB>rG_L{PxX)=VY8 zuu*Sx(zu=UPz}Y92qfXW$TiXYb}-<-cH37$2t(ozKiDH=;#$R{BtkXcx8X6I)*9-PYdKC~Ye9 zuvYNp4!k{#zZXVe7!BtXI5_JlIFEOo-H}NuLzxUrUC(;16|TJ%h4YJewRlMcMf|$B zaON5I2MiM&WZsCAC~UP9{~q@(gCCIN`ri49ZZ4j59ziLq|;Og ziyI=uBZFcrsBxGfD%_`S131kEPuPz&m&QqKyOiWSuopJRsApsM%+et^{WKR@V>rby z#W1M;KeE)bWc!Tm(*&E-_-17cSIX66Gi>7#4lH$?^>YkNo#Fvf0e)G2vNX@?NrvYc zCh^Del@tH-!`$2=>G}jxG6$o?42>L(+r5`61%LowtJaPUt{7bQB1QJ}bR+HAtLsbk zRwGOrk-C7pPPIBmzAs3+4#7Cn4fs=ar@+rBb}EzO@O|&dsB4w2%g&GzWDev(;csxr JHT=dq^A87=)+zu1 diff --git a/yake/highlight.py b/yake/highlight.py index 14f339a5..13d4bee9 100644 --- a/yake/highlight.py +++ b/yake/highlight.py @@ -23,7 +23,13 @@ def __init__( self.max_ngram_size = max_ngram_size def highlight(self, text, keywords): - """Returns the highlighted text snippets of matching text in the original data.""" + """ + Highlights keywords in the given text. + + :param text: The original text to be processed. + :param keywords: A list of keywords to highlight. Each keyword can be a string or a tuple where the first element is the keyword. + :return: The text with highlighted keywords. + """ n_text = "" if len(keywords) > 0: kw_list = keywords @@ -32,7 +38,7 @@ def highlight(self, text, keywords): text = text.strip() if self.max_ngram_size == 1: n_text = self.format_one_gram_text(text, kw_list) - elif self.max_ngram_size > 1: + else: n_text = self.format_n_gram_text(text, kw_list, self.max_ngram_size) return n_text @@ -49,8 +55,9 @@ def format_one_gram_text(self, text, relevant_words_array): text_tokens[tk] = text_tokens[tk].replace( kw, f"{self.highlight_pre}{kw}{self.highlight_post}" ) - except Exception: - pass + except re.error as e: + import logging + logging.error(f"Regex error: {e}") return " ".join(text_tokens) def format_n_gram_text(self, text, relevant_words_array, n_gram): @@ -70,7 +77,9 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): if n_gram_word_list: if len(n_gram_word_list[0].split(" ")) == 1: - y, new_expression = self.replace_token(text_tokens, y, n_gram_word_list) + y, new_expression = self.replace_token( + text_tokens, y, n_gram_word_list + ) final_splited_text.append(new_expression) else: kw_list = [] @@ -79,7 +88,8 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): for len_kw in range(len(splited_one)): kw_list, splited_n_gram_kw_list = self.find_more_relevant( - y + len_kw, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_kw_list + y + len_kw, text_tokens, n_gram, + relevant_words_array, kw_list, splited_n_gram_kw_list ) min_score_word = min( @@ -88,13 +98,17 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): if kw_list.index(min_score_word) == 0: term_list = [min_score_word] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) elif kw_list.index(min_score_word) >= 1: index_of_more_relevant = splited_n_gram_kw_list[0].index( min_score_word.split()[0] ) - temporal_kw = " ".join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + temporal_kw = " ".join( + splited_n_gram_kw_list[0][:index_of_more_relevant] + ) if temporal_kw in relevant_words_array: try: @@ -108,21 +122,30 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): term_list = [combined_kw] del final_splited_text[-1] y -= 1 - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) else: term_list = [temporal_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) - except: + except Exception as e: + print(f"Error: {e}") term_list = [temporal_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) else: for tmp_kw in splited_n_gram_kw_list[0][:index_of_more_relevant]: if tmp_kw in relevant_words_array: term_list = [tmp_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) else: final_splited_text.append(text_tokens[y]) @@ -130,6 +153,7 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): else: final_splited_text.append(text_tokens[y]) y += 1 + return " ".join(final_splited_text) def find_more_relevant( @@ -139,9 +163,11 @@ def find_more_relevant( temporary_list = [] temporary_list_two = [] for i in range(n_gram): - temporary_list.append(text_tokens[y : y + i + 1]) + temporary_list.append(text_tokens[y: y + i + 1]) k = re.sub( - r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', " ".join(temporary_list[i]) + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', " ".join( + temporary_list[i] + ) ) if k.lower() in relevant_words_array: temporary_list_two.append(k) @@ -156,8 +182,10 @@ def find_more_relevant( def replace_token(self, text_tokens, y, n_gram_word_list): """Replaces tokens in text with highlighted versions.""" - txt = " ".join(text_tokens[y : y + len(n_gram_word_list[0].split(" "))]) - kw_cleaned = re.sub(r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', "", txt) + txt = " ".join(text_tokens[y: y + len(n_gram_word_list[0].split(" "))]) + kw_cleaned = re.sub( + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', "", txt + ) new_expression = txt.replace( kw_cleaned, f"{self.highlight_pre}{n_gram_word_list[0]}{self.highlight_post}" ) From 9a13e29935373336d002e244209b32c1046284a0 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:47:47 +0000 Subject: [PATCH 018/118] =?UTF-8?q?datarepresentation.py=20formata=C3=A7?= =?UTF-8?q?=C3=A3o=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit highligths.py 90% --- tests/yakenew.md | 5 +- .../datarepresentation.cpython-310.pyc | Bin 14498 -> 15712 bytes yake/__pycache__/highlight.cpython-310.pyc | Bin 5348 -> 5359 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 4485 -> 4485 bytes yake/datarepresentation.py | 158 +++++++++++------- yake/highlight.py | 16 +- yake/yake.py | 12 +- 7 files changed, 114 insertions(+), 77 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index 22d8cfc8..a1bb11b6 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,7 @@ Planos próxima semana -////// Refactoring score (3.21) -> (3.94) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.21) -> (3.94) 18/02/2025 + + +////// Refactoring score (3.94) -> (4.15) 18/02/2025 \ No newline at end of file diff --git a/yake/__pycache__/datarepresentation.cpython-310.pyc b/yake/__pycache__/datarepresentation.cpython-310.pyc index b9517e10ee58a62b5c2241d3e838225f168fa231..c13b6280935c1bfb5c79692f1faf24c84db78ae4 100644 GIT binary patch literal 15712 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 +

Applications

+

Levenshtein distance is commonly used in:

+
    +
  • Spell checking and correction
  • +
  • DNA sequence alignment
  • +
  • Plagiarism detection
  • +
  • Fuzzy string matching
  • +
  • Natural language processing
  • +
  • Record linkage and data deduplication
  • +

On this page

\ No newline at end of file diff --git a/docs/docs/core/Levenshtein.txt b/docs/docs/core/Levenshtein.txt index 9073f71a..b4bcb0c8 100644 --- a/docs/docs/core/Levenshtein.txt +++ b/docs/docs/core/Levenshtein.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","core","Levenshtein"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/Levenshtein","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/Levenshtein","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","SU1MzOoLewueq23UVEOqf",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","Levenshtein"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/Levenshtein","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/Levenshtein","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","4_sg_dP2wxm0_sFMuuxbU",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] @@ -47,7 +47,7 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 3a:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] 3b:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] 17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#levenshtein","title":"Levenshtein"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#static-methods","title":"Static Methods"},{"depth":2,"url":"#usage-guide","title":"Usage Guide"},{"depth":3,"url":"#distance-calculation","title":"Distance Calculation"},{"depth":3,"url":"#similarity-ratio","title":"Similarity Ratio"},{"depth":2,"url":"#algorithm-explanation","title":"Algorithm Explanation"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#performance-considerations","title":"Performance Considerations"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"levenshtein","children":[["$","a",null,{"data-card":"","href":"#levenshtein","className":"peer","children":"Levenshtein"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" Levenshtein"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Class for computing Levenshtein distance and similarity ratio.\"\"\""}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class offers methods to measure the difference between two strings and calculate their similarity."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"static-methods","children":[["$","a",null,{"data-card":"","href":"#static-methods","className":"peer","children":"Static Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"ratio-private","children":[["$","$L31",null,{"children":["$","code",null,{"children":"__ratio(distance, str_length)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" __ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", str_length: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the similarity ratio based on distance and string length."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" distance (float): The Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_length (int): The length of the longer string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"ratio","children":[["$","$L31",null,{"children":["$","code",null,{"children":"ratio(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Compute the similarity ratio between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(seq1, seq2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_length "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.__ratio(str_distance, str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"distance","children":[["$","$L31",null,{"children":["$","code",null,{"children":"distance(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" distance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: The Levenshtein distance."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.zeros((size_x, size_y))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq1[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq2[y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" min"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deletion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Insertion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Substitution"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(matrix[size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-guide","children":[["$","a",null,{"data-card":"","href":"#usage-guide","className":"peer","children":"Usage Guide"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"distance-calculation","children":[["$","a",null,{"data-card":"","href":"#distance-calculation","className":"peer","children":"Distance Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the edit distance between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 3"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-ratio","children":[["$","a",null,{"data-card":"","href":"#similarity-ratio","className":"peer","children":"Similarity Ratio"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the similarity ratio between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 0.5714"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"algorithm-explanation","children":[["$","a",null,{"data-card":"","href":"#algorithm-explanation","className":"peer","children":"Algorithm Explanation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["Initialize a matrix of size ",["$","code",null,{"children":"(len(seq1)+1) × (len(seq2)+1)"}]]}],"\n",["$","li",null,{"children":"Fill the first row and column with increasing integers (0, 1, 2, ...)"}],"\n",["$","li",null,{"children":["For each cell in the matrix:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"If the corresponding characters match, the cost is 0; otherwise, it's 1"}],"\n",["$","li",null,{"children":["Calculate the minimum cost from three possible operations:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Deletion: Value from the cell above + 1"}],"\n",["$","li",null,{"children":"Insertion: Value from the cell to the left + 1"}],"\n",["$","li",null,{"children":"Substitution: Value from the diagonal cell + cost"}],"\n"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","li",null,{"children":"The bottom-right cell contains the final Levenshtein distance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" numpy "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Test strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"neural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate distance and similarity"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Strings:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"1: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"2: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Example output:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Strings:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 1: 'natural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 2: 'neural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Levenshtein distance: 3"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Similarity ratio: 0.8889"}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"performance-considerations","children":[["$","a",null,{"data-card":"","href":"#performance-considerations","className":"peer","children":"Performance Considerations"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Time Complexity: O(m×n) where m and n are the lengths of the input strings"}],"\n",["$","li",null,{"children":"Space Complexity: O(m×n) due to the matrix storage"}],"\n",["$","li",null,{"children":"For very long strings, consider using optimized variants or approximate algorithms"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For efficient matrix operations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] +2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","title":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""},{"depth":1,"url":"#levenshtein","title":"Levenshtein"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#static-methods","title":"Static Methods"},{"depth":2,"url":"#usage-guide","title":"Usage Guide"},{"depth":3,"url":"#distance-calculation","title":"Distance Calculation"},{"depth":3,"url":"#similarity-ratio","title":"Similarity Ratio"},{"depth":2,"url":"#algorithm-explanation","title":"Algorithm Explanation"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#performance-considerations","title":"Performance Considerations"},{"depth":2,"url":"#dependencies","title":"Dependencies"},{"depth":2,"url":"#applications","title":"Applications"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","children":[["$","a",null,{"data-card":"","href":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","className":"peer","children":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"levenshtein","children":[["$","a",null,{"data-card":"","href":"#levenshtein","className":"peer","children":"Levenshtein"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" Levenshtein"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Class for computing Levenshtein distance and similarity ratio.\"\"\""}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class offers methods to measure the difference between two strings and calculate their similarity."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"static-methods","children":[["$","a",null,{"data-card":"","href":"#static-methods","className":"peer","children":"Static Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"ratio-private","children":[["$","$L31",null,{"children":["$","code",null,{"children":"__ratio(distance, str_length)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" __ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", str_length: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the similarity ratio based on distance and string length."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" distance (float): The Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_length (int): The length of the longer string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"ratio","children":[["$","$L31",null,{"children":["$","code",null,{"children":"ratio(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Compute the similarity ratio between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(seq1, seq2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_length "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.__ratio(str_distance, str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"distance","children":[["$","$L31",null,{"children":["$","code",null,{"children":"distance(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" distance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: The Levenshtein distance."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.zeros((size_x, size_y))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq1[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq2[y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" min"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deletion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Insertion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Substitution"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(matrix[size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-guide","children":[["$","a",null,{"data-card":"","href":"#usage-guide","className":"peer","children":"Usage Guide"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"distance-calculation","children":[["$","a",null,{"data-card":"","href":"#distance-calculation","className":"peer","children":"Distance Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the edit distance between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 3"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-ratio","children":[["$","a",null,{"data-card":"","href":"#similarity-ratio","className":"peer","children":"Similarity Ratio"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the similarity ratio between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 0.5714"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"algorithm-explanation","children":[["$","a",null,{"data-card":"","href":"#algorithm-explanation","className":"peer","children":"Algorithm Explanation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["Initialize a matrix of size ",["$","code",null,{"children":"(len(seq1)+1) × (len(seq2)+1)"}]]}],"\n",["$","li",null,{"children":"Fill the first row and column with increasing integers (0, 1, 2, ...)"}],"\n",["$","li",null,{"children":["For each cell in the matrix:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"If the corresponding characters match, the cost is 0; otherwise, it's 1"}],"\n",["$","li",null,{"children":["Calculate the minimum cost from three possible operations:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Deletion: Value from the cell above + 1"}],"\n",["$","li",null,{"children":"Insertion: Value from the cell to the left + 1"}],"\n",["$","li",null,{"children":"Substitution: Value from the diagonal cell + cost"}],"\n"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","li",null,{"children":"The bottom-right cell contains the final Levenshtein distance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" numpy "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Test strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"neural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate distance and similarity"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Strings:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"1: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"2: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Example output:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Strings:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 1: 'natural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 2: 'neural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Levenshtein distance: 3"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Similarity ratio: 0.8889"}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"performance-considerations","children":[["$","a",null,{"data-card":"","href":"#performance-considerations","className":"peer","children":"Performance Considerations"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Time Complexity: O(m×n) where m and n are the lengths of the input strings"}],"\n",["$","li",null,{"children":"Space Complexity: O(m×n) due to the matrix storage"}],"\n",["$","li",null,{"children":"For very long strings, consider using optimized variants or approximate algorithms"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For efficient matrix operations"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"applications","children":[["$","a",null,{"data-card":"","href":"#applications","className":"peer","children":"Applications"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Levenshtein distance is commonly used in:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Spell checking and correction"}],"\n",["$","li",null,{"children":"DNA sequence alignment"}],"\n",["$","li",null,{"children":"Plagiarism detection"}],"\n",["$","li",null,{"children":"Fuzzy string matching"}],"\n",["$","li",null,{"children":"Natural language processing"}],"\n",["$","li",null,{"children":"Record linkage and data deduplication"}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] 1a:null 1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 19:null diff --git a/docs/docs/core/highlight.html b/docs/docs/core/highlight.html index d1618d8b..f9405d12 100644 --- a/docs/docs/core/highlight.html +++ b/docs/docs/core/highlight.html @@ -1,4 +1,8 @@ -
YAKE!
Core

TextHighlighter

+
YAKE!

Class Definitions

NgramData

-

+

A data class to store n-gram processing results containing:

  • word_list: List of extracted words
  • split_kw_list: List of split keywords for processing

TextHighlighter

-

+

Parameters:

  • max_ngram_size (int): Maximum size of n-grams to consider for highlighting
  • @@ -33,9 +37,9 @@

  • highlight_post (str, optional): Text to insert after highlighted terms (default: </kw>)

Core Methods

-

+

Helper Methods

-

+

Usage Example

On this page

\ No newline at end of file +

On this page

\ No newline at end of file diff --git a/docs/docs/core/highlight.txt b/docs/docs/core/highlight.txt index c4157f2f..0a46afdb 100644 --- a/docs/docs/core/highlight.txt +++ b/docs/docs/core/highlight.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","core","highlight"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/highlight","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/highlight","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Y0jlqs3q3k8VQ74tAQWey",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","highlight"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/highlight","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/highlight","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","NeSGWNmXZOZ8KPM6HtxT3",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] @@ -47,7 +47,7 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 3f:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] 40:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] 17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#texthighlighter","title":"TextHighlighter"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definitions","title":"Class Definitions"},{"depth":3,"url":"#ngramdata","title":"NgramData"},{"depth":3,"url":"#texthighlighter-1","title":"TextHighlighter"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter","children":[["$","a",null,{"data-card":"","href":"#texthighlighter","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Module for highlighting text based on keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Provides functionality to highlight specific keywords in text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclasses "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclass"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" typing "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" List"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definitions","children":[["$","a",null,{"data-card":"","href":"#class-definitions","className":"peer","children":"Class Definitions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"ngramdata","children":[["$","a",null,{"data-card":"","href":"#ngramdata","className":"peer","children":"NgramData"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"ngram_data","children":[["$","$L31",null,{"children":["$","code",null,{"children":"NgramData"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@dataclass"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" NgramData"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Data structure to hold n-gram processing results.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_list: List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_kw_list: List[List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":"A data class to store n-gram processing results containing:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word_list"}],": List of extracted words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"split_kw_list"}],": List of split keywords for processing"]}],"\n"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter-1","children":[["$","a",null,{"data-card":"","href":"#texthighlighter-1","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(max_ngram_size, highlight_pre=DEFAULT_HIGHLIGHT_PRE, highlight_post=DEFAULT_HIGHLIGHT_POST)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TextHighlighter constructor. Define highlight text snippets."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" max_ngram_size: Specifies the maximum ngram size in the keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_pre: Specifies the text before a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_post: Specifies the text after a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"max_ngram_size"}]," (int): Maximum size of n-grams to consider for highlighting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_pre"}]," (str, optional): Text to insert before highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_post"}]," (str, optional): Text to insert after highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"highlight","children":[["$","$L31",null,{"children":["$","code",null,{"children":"highlight(text, keywords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" highlight"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, keywords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Highlights keywords in the given text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The original text to be processed."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords: A list of keywords to highlight."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Each keyword can be a string or a tuple where the first element is the keyword."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" The text with highlighted keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" isinstance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"tuple"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.strip()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_one_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_n_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_one_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_one_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_one_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for one-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tk, token "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", token)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens[tk] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" token.replace("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.error "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" e:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging.error("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Regex error: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"%s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", e)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_n_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_n_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_n_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for n-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" while"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".find_relevant_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list, splited_n_gram_kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".process_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, y, n_gram_word_list, context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(new_expression)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(text_tokens[y])"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(final_splited_text)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"find_relevant_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"find_relevant_ngrams(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" find_relevant_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Finds relevant n-grams in the text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing n-gram word list and split n-gram keyword list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._find_more_relevant_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"process_ngrams(text_tokens, position, n_gram_word_list, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" process_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Processes n-grams and updates the final text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context: Dictionary containing split n-gram keywords,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant words array, and final split text"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".replace_token("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, n_gram_word_list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ctx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._create_ngram_context("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_multi_word_ngrams_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, ctx"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"replace_token","children":[["$","$L31",null,{"children":["$","code",null,{"children":"replace_token(text_tokens, position, n_gram_word_list)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" replace_token"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Replaces tokens in text with highlighted versions."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", text_tokens[position]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", txt)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt.replace("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens, new_expression"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"find_more_relevant_helper","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_find_more_relevant_helper(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _find_more_relevant_helper"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Helper method for finding relevant n-gram words."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" NgramData containing keyword list and split n-gram word list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list.append(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(temporary_list[i]),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two.append(k)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sorted_temp "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: relevant_words_array.index(x.lower())"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list.append(sorted_temp["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list.append(kw_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list, splited_n_gram_word_list"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"create_ngram_context","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_create_ngram_context(n_gram_word_list, splited_n_gram_kw_list, relevant_words_array, final_splited_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _create_ngram_context"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_kw_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates a context object for n-gram processing."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" splited_n_gram_kw_list: List of split n-gram keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" final_splited_text: List of processed text tokens"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Dictionary with context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n_gram_word_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n_gram_word_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sample text to process"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"natural language processing\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"artificial intelligence\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"computers\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize the highlighter with maximum n-gram size of 3"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get highlighted text"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighted_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(highlighted_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Custom highlighting markers"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" custom_highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(custom_highlighted)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language.\""}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations in text processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"logging"}],": For error handling and reporting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dataclasses"}],": For defining the ",["$","code",null,{"children":"NgramData"}]," dataclass"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"typing"}],": For type annotations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3e",null,{"items":"$undefined"}]]}]]}],["$","$L3f",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L40",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] +2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","title":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""},{"depth":1,"url":"#texthighlighter","title":"TextHighlighter"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definitions","title":"Class Definitions"},{"depth":3,"url":"#ngramdata","title":"NgramData"},{"depth":3,"url":"#texthighlighter-1","title":"TextHighlighter"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","children":[["$","a",null,{"data-card":"","href":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","className":"peer","children":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter","children":[["$","a",null,{"data-card":"","href":"#texthighlighter","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Module for highlighting text based on keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Provides functionality to highlight specific keywords in text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclasses "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclass"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" typing "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" List"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definitions","children":[["$","a",null,{"data-card":"","href":"#class-definitions","className":"peer","children":"Class Definitions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"ngramdata","children":[["$","a",null,{"data-card":"","href":"#ngramdata","className":"peer","children":"NgramData"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"ngram_data","children":[["$","$L31",null,{"children":["$","code",null,{"children":"NgramData"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@dataclass"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" NgramData"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Data structure to hold n-gram processing results.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_list: List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_kw_list: List[List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":"A data class to store n-gram processing results containing:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word_list"}],": List of extracted words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"split_kw_list"}],": List of split keywords for processing"]}],"\n"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter-1","children":[["$","a",null,{"data-card":"","href":"#texthighlighter-1","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(max_ngram_size, highlight_pre=DEFAULT_HIGHLIGHT_PRE, highlight_post=DEFAULT_HIGHLIGHT_POST)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TextHighlighter constructor. Define highlight text snippets."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" max_ngram_size: Specifies the maximum ngram size in the keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_pre: Specifies the text before a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_post: Specifies the text after a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"max_ngram_size"}]," (int): Maximum size of n-grams to consider for highlighting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_pre"}]," (str, optional): Text to insert before highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_post"}]," (str, optional): Text to insert after highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"highlight","children":[["$","$L31",null,{"children":["$","code",null,{"children":"highlight(text, keywords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" highlight"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, keywords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Highlights keywords in the given text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The original text to be processed."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords: A list of keywords to highlight."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Each keyword can be a string or a tuple where the first element is the keyword."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" The text with highlighted keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" isinstance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"tuple"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.strip()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_one_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_n_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_one_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_one_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_one_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for one-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tk, token "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", token)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens[tk] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" token.replace("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.error "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" e:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging.error("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Regex error: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"%s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", e)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_n_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_n_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_n_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for n-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" while"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".find_relevant_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list, splited_n_gram_kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".process_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, y, n_gram_word_list, context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(new_expression)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(text_tokens[y])"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(final_splited_text)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"find_relevant_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"find_relevant_ngrams(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" find_relevant_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Finds relevant n-grams in the text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing n-gram word list and split n-gram keyword list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._find_more_relevant_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"process_ngrams(text_tokens, position, n_gram_word_list, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" process_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Processes n-grams and updates the final text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context: Dictionary containing split n-gram keywords,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant words array, and final split text"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".replace_token("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, n_gram_word_list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ctx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._create_ngram_context("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_multi_word_ngrams_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, ctx"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"replace_token","children":[["$","$L31",null,{"children":["$","code",null,{"children":"replace_token(text_tokens, position, n_gram_word_list)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" replace_token"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Replaces tokens in text with highlighted versions."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", text_tokens[position]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", txt)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt.replace("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens, new_expression"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"find_more_relevant_helper","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_find_more_relevant_helper(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _find_more_relevant_helper"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Helper method for finding relevant n-gram words."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" NgramData containing keyword list and split n-gram word list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list.append(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(temporary_list[i]),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two.append(k)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sorted_temp "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: relevant_words_array.index(x.lower())"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list.append(sorted_temp["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list.append(kw_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list, splited_n_gram_word_list"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"create_ngram_context","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_create_ngram_context(n_gram_word_list, splited_n_gram_kw_list, relevant_words_array, final_splited_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _create_ngram_context"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_kw_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates a context object for n-gram processing."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" splited_n_gram_kw_list: List of split n-gram keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" final_splited_text: List of processed text tokens"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Dictionary with context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n_gram_word_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n_gram_word_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sample text to process"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"natural language processing\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"artificial intelligence\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"computers\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize the highlighter with maximum n-gram size of 3"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get highlighted text"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighted_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(highlighted_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Custom highlighting markers"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" custom_highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(custom_highlighted)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language.\""}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations in text processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"logging"}],": For error handling and reporting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dataclasses"}],": For defining the ",["$","code",null,{"children":"NgramData"}]," dataclass"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"typing"}],": For type annotations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3e",null,{"items":"$undefined"}]]}]]}],["$","$L3f",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L40",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] 1a:null 1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 19:null diff --git a/docs/docs/core/yake.html b/docs/docs/core/yake.html index 5237cab6..3d470d41 100644 --- a/docs/docs/core/yake.html +++ b/docs/docs/core/yake.html @@ -1,4 +1,8 @@ -
YAKE!
Core

KeywordExtractor

+
YAKE!

The KeywordExtractor class provides an interface to extract and process keywords from text documents using statistical features and deduplication.

Class Definition

-

+

Parameters:

  • lan (str, optional): Language for stopwords (default: "en")
  • @@ -25,7 +29,7 @@

    <
  • stopwords (set, optional): Custom stopwords set (default: None, loads from language file)

Core Methods

-

+

Parameters:

Helper Methods

-

+

Similarity Functions

-

+

Usage Examples

Basic Usage

On this page

\ No newline at end of file +

On this page

\ No newline at end of file diff --git a/docs/docs/core/yake.txt b/docs/docs/core/yake.txt index 558ef9f1..46253154 100644 --- a/docs/docs/core/yake.txt +++ b/docs/docs/core/yake.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","core","yake"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/yake","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/yake","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","8mwkndFGm2bayWYAoIidb",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","yake"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/yake","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/yake","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","YEhx10j7CLf2IgqJWdu0n",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] @@ -47,7 +47,7 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 3d:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] 3e:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] 17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#keywordextractor","title":"KeywordExtractor"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definition","title":"Class Definition"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#similarity-functions","title":"Similarity Functions"},{"depth":2,"url":"#usage-examples","title":"Usage Examples"},{"depth":3,"url":"#basic-usage","title":"Basic Usage"},{"depth":3,"url":"#customized-usage","title":"Customized Usage"},{"depth":2,"url":"#deduplication-functions","title":"Deduplication Functions"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"keywordextractor","children":[["$","a",null,{"data-card":"","href":"#keywordextractor","className":"peer","children":"KeywordExtractor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Module for keyword extraction from text documents.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" .Levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class provides an interface to extract and process keywords from text documents using statistical features and deduplication."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definition","children":[["$","a",null,{"data-card":"","href":"#class-definition","className":"peer","children":"Class Definition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(**kwargs)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"**"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kwargs):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize the KeywordExtractor with configuration parameters.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.9"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"20"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._load_stopwords(kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._get_dedup_function("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lan"}]," (str, optional): Language for stopwords (default: \"en\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int, optional): Maximum n-gram size (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_lim"}]," (float, optional): Deduplication similarity threshold (default: 0.9)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_func"}]," (str, optional): Deduplication function to use (default: \"seqm\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"window_size"}]," (int, optional): Window size for co-occurrence (default: 1)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"top"}]," (int, optional): Maximum number of keywords to return (default: 20)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"features"}]," (dict, optional): Custom features for keyword scoring (default: None)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopwords"}]," (set, optional): Custom stopwords set (default: None, loads from language file)"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"extract_keywords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"extract_keywords(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Extract keywords from text.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a config dictionary for DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" core_config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"stopword_set"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"core_config)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_single_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_mult_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc.is_valid()], "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c: c.h"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted]["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" : "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" h, cand_result "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function(cand.unique_kw, cand_result.unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" >"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set.append((cand.h, cand))"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(result_set) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.kw, h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (h, cand) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The text to extract keywords from"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A list of tuples containing (keyword, score) pairs, sorted by relevance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"load_stopwords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_load_stopwords(stopwords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _load_stopwords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stopwords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Load stopwords from file or use provided set.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stopwords)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dir_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.dirname(os.path.realpath("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"__file__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'lan'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":".txt\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.exists(os.path.join(dir_path, local_path)):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_noLang.txt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" resource_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join(dir_path, local_path)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"utf-8\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" UnicodeDecodeError"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Warning: reading stopword list as ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_dedup_function","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_get_dedup_function(func_name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _get_dedup_function"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, func_name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Retrieve the appropriate deduplication function.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro_winkler\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sequencematcher\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }.get(func_name.lower(), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".levs)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-functions","children":[["$","a",null,{"data-card":"","href":"#similarity-functions","className":"peer","children":"Similarity Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"jaro","children":[["$","$L31",null,{"children":["$","code",null,{"children":"jaro(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" jaro"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.jaro(cand1, cand2)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"levs","children":[["$","$L31",null,{"children":["$","code",null,{"children":"levs(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" levs"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(cand1, cand2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand2))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"seqm","children":[["$","$L31",null,{"children":["$","code",null,{"children":"seqm(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" seqm"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(cand1, cand2)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-examples","children":[["$","a",null,{"data-card":"","href":"#usage-examples","className":"peer","children":"Usage Examples"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-usage","children":[["$","a",null,{"data-card":"","href":"#basic-usage","className":"peer","children":"Basic Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"concerned with the interactions between computers and human language, in particular how to program computers"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"to process and analyze large amounts of natural language data."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Simple example with default parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the keywords and their scores"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"customized-usage","children":[["$","a",null,{"data-card":"","href":"#customized-usage","className":"peer","children":"Customized Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a custom stopwords set"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"the\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"an\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"in\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"on\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"at\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"of\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"for\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"with\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Language"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Maximum n-gram size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_lim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.8"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication threshold"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_func"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication function"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" window_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Window size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Number of keywords to extract"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" stopwords"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Machine learning is the study of computer algorithms that improve automatically through experience.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the top 10 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"deduplication-functions","children":[["$","a",null,{"data-card":"","href":"#deduplication-functions","className":"peer","children":"Deduplication Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," supports multiple string similarity algorithms for deduplication:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Jaro-Winkler"}]," (\"jaro\", \"jaro_winkler\"): Based on character matches with higher weights for prefix matches"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Levenshtein Ratio"}]," (\"levs\"): Based on Levenshtein edit distance normalized by string length"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"SequenceMatcher"}]," (\"seqm\", \"sequencematcher\"): Based on Python's difflib sequence matching algorithm"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"os"}],": For file operations and path handling"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For Jaro-Winkler string similarity"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"yake.data.DataCore"}],": For core data representation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":".Levenshtein"}],": For Levenshtein distance and ratio calculations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3c",null,{"items":"$undefined"}]]}]]}],["$","$L3d",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3e",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] +2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","title":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""},{"depth":1,"url":"#keywordextractor-class","title":"KeywordExtractor Class"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definition","title":"Class Definition"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#similarity-functions","title":"Similarity Functions"},{"depth":2,"url":"#usage-examples","title":"Usage Examples"},{"depth":3,"url":"#basic-usage","title":"Basic Usage"},{"depth":3,"url":"#customized-usage","title":"Customized Usage"},{"depth":2,"url":"#deduplication-functions","title":"Deduplication Functions"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","children":[["$","a",null,{"data-card":"","href":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","className":"peer","children":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"keywordextractor-class","children":[["$","a",null,{"data-card":"","href":"#keywordextractor-class","className":"peer","children":"KeywordExtractor Class"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Module for keyword extraction from text documents.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" .Levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class provides an interface to extract and process keywords from text documents using statistical features and deduplication."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definition","children":[["$","a",null,{"data-card":"","href":"#class-definition","className":"peer","children":"Class Definition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(**kwargs)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"**"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kwargs):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize the KeywordExtractor with configuration parameters.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.9"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"20"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._load_stopwords(kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._get_dedup_function("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lan"}]," (str, optional): Language for stopwords (default: \"en\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int, optional): Maximum n-gram size (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_lim"}]," (float, optional): Deduplication similarity threshold (default: 0.9)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_func"}]," (str, optional): Deduplication function to use (default: \"seqm\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"window_size"}]," (int, optional): Window size for co-occurrence (default: 1)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"top"}]," (int, optional): Maximum number of keywords to return (default: 20)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"features"}]," (dict, optional): Custom features for keyword scoring (default: None)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopwords"}]," (set, optional): Custom stopwords set (default: None, loads from language file)"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"extract_keywords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"extract_keywords(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Extract keywords from text.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a config dictionary for DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" core_config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"stopword_set"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"core_config)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_single_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_mult_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc.is_valid()], "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c: c.h"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted]["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" : "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" h, cand_result "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function(cand.unique_kw, cand_result.unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" >"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set.append((cand.h, cand))"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(result_set) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.kw, h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (h, cand) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The text to extract keywords from"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A list of tuples containing (keyword, score) pairs, sorted by relevance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"load_stopwords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_load_stopwords(stopwords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _load_stopwords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stopwords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Load stopwords from file or use provided set.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stopwords)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dir_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.dirname(os.path.realpath("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"__file__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'lan'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":".txt\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.exists(os.path.join(dir_path, local_path)):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_noLang.txt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" resource_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join(dir_path, local_path)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"utf-8\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" UnicodeDecodeError"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Warning: reading stopword list as ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_dedup_function","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_get_dedup_function(func_name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _get_dedup_function"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, func_name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Retrieve the appropriate deduplication function.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro_winkler\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sequencematcher\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }.get(func_name.lower(), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".levs)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-functions","children":[["$","a",null,{"data-card":"","href":"#similarity-functions","className":"peer","children":"Similarity Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"jaro","children":[["$","$L31",null,{"children":["$","code",null,{"children":"jaro(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" jaro"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.jaro(cand1, cand2)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"levs","children":[["$","$L31",null,{"children":["$","code",null,{"children":"levs(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" levs"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(cand1, cand2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand2))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"seqm","children":[["$","$L31",null,{"children":["$","code",null,{"children":"seqm(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" seqm"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(cand1, cand2)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-examples","children":[["$","a",null,{"data-card":"","href":"#usage-examples","className":"peer","children":"Usage Examples"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-usage","children":[["$","a",null,{"data-card":"","href":"#basic-usage","className":"peer","children":"Basic Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"concerned with the interactions between computers and human language, in particular how to program computers"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"to process and analyze large amounts of natural language data."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Simple example with default parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the keywords and their scores"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"customized-usage","children":[["$","a",null,{"data-card":"","href":"#customized-usage","className":"peer","children":"Customized Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a custom stopwords set"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"the\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"an\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"in\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"on\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"at\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"of\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"for\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"with\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Language"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Maximum n-gram size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_lim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.8"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication threshold"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_func"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication function"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" window_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Window size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Number of keywords to extract"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" stopwords"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Machine learning is the study of computer algorithms that improve automatically through experience.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the top 10 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"deduplication-functions","children":[["$","a",null,{"data-card":"","href":"#deduplication-functions","className":"peer","children":"Deduplication Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," supports multiple string similarity algorithms for deduplication:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Jaro-Winkler"}]," (\"jaro\", \"jaro_winkler\"): Based on character matches with higher weights for prefix matches"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Levenshtein Ratio"}]," (\"levs\"): Based on Levenshtein edit distance normalized by string length"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"SequenceMatcher"}]," (\"seqm\", \"sequencematcher\"): Based on Python's difflib sequence matching algorithm"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"os"}],": For file operations and path handling"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For Jaro-Winkler string similarity"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"yake.data.DataCore"}],": For core data representation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":".Levenshtein"}],": For Levenshtein distance and ratio calculations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3c",null,{"items":"$undefined"}]]}]]}],["$","$L3d",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3e",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] 1a:null 1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 19:null diff --git a/docs/docs/data/composedword.html b/docs/docs/data/composedword.html index de79bfd6..b65f817d 100644 --- a/docs/docs/data/composedword.html +++ b/docs/docs/data/composedword.html @@ -1,4 +1,4 @@ -
YAKE!
Data

ComposedWord

+
YAKE!
Data

ComposedWord

The ComposedWord class represents multi-word terms in YAKE (Yet Another Keyword Extractor), providing the foundation for analyzing and scoring potential keyword phrases.

Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

@@ -151,4 +151,4 @@

On this page

\ No newline at end of file +

On this page

\ No newline at end of file diff --git a/docs/docs/data/composedword.txt b/docs/docs/data/composedword.txt index 2e0503f8..532063d7 100644 --- a/docs/docs/data/composedword.txt +++ b/docs/docs/data/composedword.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","composedword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/composedword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/composedword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","SEYzMi6rqNU1zUbQdPA1t",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","composedword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/composedword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/composedword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","kUzGCAYuNhwRBUUtxnCTq",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/docs/data/core.html b/docs/docs/data/core.html deleted file mode 100644 index 3df9a5c8..00000000 --- a/docs/docs/data/core.html +++ /dev/null @@ -1,118 +0,0 @@ -
YAKE!
Data

DataCore

-

The DataCore class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction.

-
-

Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

-
-

Class Overview

-
class DataCore:
-    def __init__(self, text, stopword_set, config=None):
-        # Initialize the data core with text and configuration
-

The DataCore class processes text documents to identify potential keywords based on statistical features and contextual relationships.

-

Constructor

-

-

Parameters:

-
    -
  • text (str): The input text to analyze for keyword extraction
  • -
  • stopword_set (set): A set of stopwords to filter out non-content words
  • -
  • config (dict, optional): Configuration options including: -
      -
    • windows_size (int): Size of word window for co-occurrence (default: 2)
    • -
    • n (int): Maximum length of keyword phrases (default: 3)
    • -
    • tags_to_discard (set): POS tags to ignore (default: d)
    • -
    • exclude (set): Characters to exclude (default: string.punctuation)
    • -
    -
  • -
-

Example:

-
from yake.datarepresentation import DataCore
-import string
- 
-# Initialize with default configuration
-data = DataCore("Sample text for analysis", stopword_set)
- 
-# Initialize with custom configuration
-config = {
-    "windows_size": 3,
-    "n": 4,
-    "tags_to_discard": {"u", "d", "p"},
-    "exclude": set(string.punctuation)
-}
-data = DataCore("Sample text for analysis", stopword_set, config)
-

Core Methods

-

-

Public API Methods

-

-

Property Accessors

-

The DataCore class includes various property accessors for backward compatibility:

-

Configuration Properties

-
    -
  • exclude: Characters to exclude from processing
  • -
  • tags_to_discard: Part-of-speech tags to ignore during analysis
  • -
  • stopword_set: Set of stopwords to filter out
  • -
  • g: DirectedGraph representing term co-occurrences
  • -
-
# Examples
-excluded_chars = data.exclude
-ignored_tags = data.tags_to_discard
-stopwords = data.stopword_set
-graph = data.g
-

Text Statistics Properties

-
    -
  • number_of_sentences: Count of sentences in the processed text
  • -
  • number_of_words: Total number of words processed
  • -
-
# Examples
-sentence_count = data.number_of_sentences
-word_count = data.number_of_words
-

Collection Properties

-
    -
  • terms: Dictionary of SingleWord objects representing individual terms
  • -
  • candidates: Dictionary of ComposedWord objects representing keyword candidates
  • -
  • sentences_obj: Processed sentence objects
  • -
  • sentences_str: Raw sentence strings from the original text
  • -
  • freq_ns: Frequency of n-grams by length
  • -
-
# Examples
-all_terms = data.terms
-all_candidates = data.candidates
-processed_sentences = data.sentences_obj
-raw_sentences = data.sentences_str
-ngram_frequencies = data.freq_ns
-

Complete Usage Example

-
from yake.datarepresentation import DataCore
-from yake.stopwordremover import StopwordRemover
- 
-# Initialize stopwords
-stopword_remover = StopwordRemover("en")
-stopword_set = stopword_remover.get_stopword_set()
- 
-# Create DataCore instance
-text = "Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language."
-data = DataCore(text, stopword_set)
- 
-# Build features for keyword extraction
-data.build_single_terms_features()
-data.build_mult_terms_features()
- 
-# Extract top candidates
-candidates = [(cand.unique_kw, cand.h) for cand in data.candidates.values() if cand.is_valid()]
-candidates.sort(key=lambda x: x[1])  # Sort by score (lower is better in YAKE)
- 
-# Print top 5 keywords
-for keyword, score in candidates[:5]:
-    print(f"{keyword}: {score:.4f}")
-

Dependencies

-

The DataCore class relies on:

-
    -
  • string: For punctuation constants
  • -
  • networkx: For graph representation (co-occurrences)
  • -
  • numpy: For statistical calculations
  • -
  • segtok: For tokenization
  • -
  • Internal utility modules: -
      -
    • utils: For pre-filtering and tokenization
    • -
    • single_word: For representing individual terms
    • -
    • composed_word: For representing multi-word candidates
    • -
    -
  • -

On this page

\ No newline at end of file diff --git a/docs/docs/data/datacore.html b/docs/docs/data/datacore.html new file mode 100644 index 00000000..8d4709a7 --- /dev/null +++ b/docs/docs/data/datacore.html @@ -0,0 +1,118 @@ +
YAKE!
Data

DataCore

+

The DataCore class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction.

+
+

Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

+
+

Class Overview

+
class DataCore:
+    def __init__(self, text, stopword_set, config=None):
+        # Initialize the data core with text and configuration
+

The DataCore class processes text documents to identify potential keywords based on statistical features and contextual relationships.

+

Constructor

+

+

Parameters:

+
    +
  • text (str): The input text to analyze for keyword extraction
  • +
  • stopword_set (set): A set of stopwords to filter out non-content words
  • +
  • config (dict, optional): Configuration options including: +
      +
    • windows_size (int): Size of word window for co-occurrence (default: 2)
    • +
    • n (int): Maximum length of keyword phrases (default: 3)
    • +
    • tags_to_discard (set): POS tags to ignore (default: d)
    • +
    • exclude (set): Characters to exclude (default: string.punctuation)
    • +
    +
  • +
+

Example:

+
from yake.datarepresentation import DataCore
+import string
+ 
+# Initialize with default configuration
+data = DataCore("Sample text for analysis", stopword_set)
+ 
+# Initialize with custom configuration
+config = {
+    "windows_size": 3,
+    "n": 4,
+    "tags_to_discard": {"u", "d", "p"},
+    "exclude": set(string.punctuation)
+}
+data = DataCore("Sample text for analysis", stopword_set, config)
+

Core Methods

+

+

Public API Methods

+

+

Property Accessors

+

The DataCore class includes various property accessors for backward compatibility:

+

Configuration Properties

+
    +
  • exclude: Characters to exclude from processing
  • +
  • tags_to_discard: Part-of-speech tags to ignore during analysis
  • +
  • stopword_set: Set of stopwords to filter out
  • +
  • g: DirectedGraph representing term co-occurrences
  • +
+
# Examples
+excluded_chars = data.exclude
+ignored_tags = data.tags_to_discard
+stopwords = data.stopword_set
+graph = data.g
+

Text Statistics Properties

+
    +
  • number_of_sentences: Count of sentences in the processed text
  • +
  • number_of_words: Total number of words processed
  • +
+
# Examples
+sentence_count = data.number_of_sentences
+word_count = data.number_of_words
+

Collection Properties

+
    +
  • terms: Dictionary of SingleWord objects representing individual terms
  • +
  • candidates: Dictionary of ComposedWord objects representing keyword candidates
  • +
  • sentences_obj: Processed sentence objects
  • +
  • sentences_str: Raw sentence strings from the original text
  • +
  • freq_ns: Frequency of n-grams by length
  • +
+
# Examples
+all_terms = data.terms
+all_candidates = data.candidates
+processed_sentences = data.sentences_obj
+raw_sentences = data.sentences_str
+ngram_frequencies = data.freq_ns
+

Complete Usage Example

+
from yake.datarepresentation import DataCore
+from yake.stopwordremover import StopwordRemover
+ 
+# Initialize stopwords
+stopword_remover = StopwordRemover("en")
+stopword_set = stopword_remover.get_stopword_set()
+ 
+# Create DataCore instance
+text = "Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language."
+data = DataCore(text, stopword_set)
+ 
+# Build features for keyword extraction
+data.build_single_terms_features()
+data.build_mult_terms_features()
+ 
+# Extract top candidates
+candidates = [(cand.unique_kw, cand.h) for cand in data.candidates.values() if cand.is_valid()]
+candidates.sort(key=lambda x: x[1])  # Sort by score (lower is better in YAKE)
+ 
+# Print top 5 keywords
+for keyword, score in candidates[:5]:
+    print(f"{keyword}: {score:.4f}")
+

Dependencies

+

The DataCore class relies on:

+
    +
  • string: For punctuation constants
  • +
  • networkx: For graph representation (co-occurrences)
  • +
  • numpy: For statistical calculations
  • +
  • segtok: For tokenization
  • +
  • Internal utility modules: +
      +
    • utils: For pre-filtering and tokenization
    • +
    • single_word: For representing individual terms
    • +
    • composed_word: For representing multi-word candidates
    • +
    +
  • +

On this page

\ No newline at end of file diff --git a/docs/docs/data/core.txt b/docs/docs/data/datacore.txt similarity index 96% rename from docs/docs/data/core.txt rename to docs/docs/data/datacore.txt index 0546b309..cd66a23b 100644 --- a/docs/docs/data/core.txt +++ b/docs/docs/data/datacore.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","core"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/core","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/core","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","pBKNw9wyvDYBP7CiPT9qr",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","datacore"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/datacore","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/datacore","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Lw-dwezEjojj4N6ZTlN6P",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/docs/data/singleword.html b/docs/docs/data/singleword.html index f436c7f9..65c28b46 100644 --- a/docs/docs/data/singleword.html +++ b/docs/docs/data/singleword.html @@ -1,4 +1,4 @@ -
YAKE!
Data

SingleWord

+
YAKE!
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/docs/data/singleword.txt b/docs/docs/data/singleword.txt index e2d6a45e..eb4c8371 100644 --- a/docs/docs/data/singleword.txt +++ b/docs/docs/data/singleword.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","singleword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/singleword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/singleword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","qy9CSh4RC_BzjuAjciiHl",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","singleword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/singleword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/singleword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","tr4vhxH0kS7Q1lGGl0Y4u",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/docs/data/utils.html b/docs/docs/data/utils.html index e8590eb3..0205ef81 100644 --- a/docs/docs/data/utils.html +++ b/docs/docs/data/utils.html @@ -1,4 +1,4 @@ -
YAKE!
Data

Utils

+
YAKE!
Data

Utils

The utils module provides essential text processing functions for YAKE (Yet Another Keyword Extractor), handling tokenization, normalization, and classification of textual elements.

Info: This documentation provides interactive code views for each function. Click on a function name to view its implementation.

@@ -99,4 +99,4 @@

re: For regular expression operations
  • segtok.segmenter: For sentence segmentation
  • segtok.tokenizer: For tokenization and contraction handling
  • -

    On this page

    \ No newline at end of file +

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/utils.txt b/docs/docs/data/utils.txt index 3e5f0320..9006c5eb 100644 --- a/docs/docs/data/utils.txt +++ b/docs/docs/data/utils.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","utils"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/utils","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/utils","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","-GriRkXk9VRMRd-dGSuKT",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","utils"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/utils","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/utils","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","g6e_OIDW49VJw3tERUFnQ",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/index.html b/docs/index.html index 6456e005..1c3d83e4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -

    Hello

    Open /docs and see the documentation.

    \ No newline at end of file +

    Hello

    Open /docs and see the documentation.

    \ No newline at end of file diff --git a/docs/index.txt b/docs/index.txt index a323ac8a..e27c5752 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"NavProvider"] @@ -17,9 +17,9 @@ f:I[9665,[],"MetadataBoundary"] 14:I[4911,[],"AsyncMetadataOutlet"] 16:I[9665,[],"ViewportBoundary"] 18:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["",""],"i":false,"f":[[["",{"children":["(home)",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["(home)",["$","$1","c",{"children":[null,["$","$L5",null,{"transparentMode":"$undefined","children":["$","main",null,{"id":"nd-home-layout","children":[["$","$L6",null,{"children":[["$","$L7",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],"$undefined",["$","ul",null,{"className":"flex flex-row items-center gap-2 px-6 max-sm:hidden","children":[]}],["$","div",null,{"className":"flex flex-row items-center justify-end gap-1.5 flex-1","children":[["$","$L8",null,{"className":"lg:hidden","hideIfDisabled":true}],["$","$L9",null,{"className":"w-full max-w-[240px] max-lg:hidden","hideIfDisabled":true}],["$","$La",null,{"className":"max-lg:hidden","mode":"$undefined"}],null]}],["$","ul",null,{"className":"flex flex-row items-center","children":[[],["$","$Lb",null,{"className":"lg:hidden","children":[["$","$Lc",null,{"aria-label":"Toggle Menu","className":"group -me-2","enableHover":"$undefined","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-down size-3 transition-transform duration-300 group-data-[state=open]:rotate-180","aria-hidden":"true","children":[["$","path","qrunsl",{"d":"m6 9 6 6 6-6"}],"$undefined"]}]}],["$","$Ld",null,{"className":"sm:flex-row sm:items-center sm:justify-end","children":[[],["$","div",null,{"className":"-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$La",null,{"mode":"$undefined"}]]}]]}]]}]]}]]}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]],"className":"flex flex-1 flex-col pt-14"}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"className":"flex flex-1 flex-col justify-center text-center","children":[["$","h1",null,{"className":"mb-4 text-2xl font-bold","children":"Hello"}],["$","p",null,{"className":"text-fd-muted-foreground","children":["Open"," ",["$","$Le",null,{"href":"/docs","className":"text-fd-foreground font-semibold underline","children":"/docs"}]," ","and see the documentation."]}]]}],["$","$Lf",null,{"children":"$L10"}],null,["$","$L11",null,{"children":["$L12","$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","DYVh9YM6rkXxWE6J6MU1v",{"children":[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$18","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["",""],"i":false,"f":[[["",{"children":["(home)",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["(home)",["$","$1","c",{"children":[null,["$","$L5",null,{"transparentMode":"$undefined","children":["$","main",null,{"id":"nd-home-layout","children":[["$","$L6",null,{"children":[["$","$L7",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],"$undefined",["$","ul",null,{"className":"flex flex-row items-center gap-2 px-6 max-sm:hidden","children":[]}],["$","div",null,{"className":"flex flex-row items-center justify-end gap-1.5 flex-1","children":[["$","$L8",null,{"className":"lg:hidden","hideIfDisabled":true}],["$","$L9",null,{"className":"w-full max-w-[240px] max-lg:hidden","hideIfDisabled":true}],["$","$La",null,{"className":"max-lg:hidden","mode":"$undefined"}],null]}],["$","ul",null,{"className":"flex flex-row items-center","children":[[],["$","$Lb",null,{"className":"lg:hidden","children":[["$","$Lc",null,{"aria-label":"Toggle Menu","className":"group -me-2","enableHover":"$undefined","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-down size-3 transition-transform duration-300 group-data-[state=open]:rotate-180","aria-hidden":"true","children":[["$","path","qrunsl",{"d":"m6 9 6 6 6-6"}],"$undefined"]}]}],["$","$Ld",null,{"className":"sm:flex-row sm:items-center sm:justify-end","children":[[],["$","div",null,{"className":"-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$La",null,{"mode":"$undefined"}]]}]]}]]}]]}]]}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]],"className":"flex flex-1 flex-col pt-14"}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"className":"flex flex-1 flex-col justify-center text-center","children":[["$","h1",null,{"className":"mb-4 text-2xl font-bold","children":"Hello"}],["$","p",null,{"className":"text-fd-muted-foreground","children":["Open"," ",["$","$Le",null,{"href":"/docs","className":"text-fd-foreground font-semibold underline","children":"/docs"}]," ","and see the documentation."]}]]}],["$","$Lf",null,{"children":"$L10"}],null,["$","$L11",null,{"children":["$L12","$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","WzdSACzHwvrajktiygNPS",{"children":[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$18","$undefined"],"s":false,"S":true} 19:"$Sreact.suspense" 1a:I[4911,[],"AsyncMetadata"] 10:["$","$19",null,{"fallback":null,"children":["$","$L1a",null,{"promise":"$@1b"}]}] From 771f4ca2d115d335de8912ed94777991df21227b Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 18:50:51 +0100 Subject: [PATCH 061/118] =?UTF-8?q?cortes=20e=20organiza=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20reposit=C3=B3rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MANIFEST.in | 11 - README.md | 373 ++----- docs-site/README.md | 15 +- docs-site/next.config.mjs | 4 +- docs/404.html | 1 - AUTHORS.rst => docs/AUTHORS.rst | 0 CONTRIBUTING.rst => docs/CONTRIBUTING.rst | 0 .../static/chunks/176-a0a1cf5d9e7b7a9e.js | 1 - .../static/chunks/318-23c47eb018ec8a69.js | 1 - .../static/chunks/323.3d40b3f10e4f6645.js | 10 - .../static/chunks/477.c67b77b0908a8d3c.js | 1 - .../chunks/4bd1b696-bad170bae81532a4.js | 1 - .../static/chunks/534-bbb1ba4032b129a8.js | 1 - .../static/chunks/595-993b621b2225d9dc.js | 1 - .../static/chunks/684-db277683248699e5.js | 1 - .../static/chunks/728.0a8f45173f3a857c.js | 1 - .../static/chunks/874-0cb5402bc7a91b88.js | 1 - .../static/chunks/882-90fa2d4319e1517d.js | 1 - .../static/chunks/886.9b81414a450ef20f.js | 1 - .../static/chunks/920-aed94374b29ba4e2.js | 1 - .../static/chunks/996.84f6c850bac17e1e.js | 1 - .../static/chunks/997-04a205149f54dcb1.js | 1 - .../app/(home)/layout-dd16dd94e0ac6dfb.js | 1 - .../app/(home)/page-ff294463e6438f3b.js | 1 - .../app/_not-found/page-1dda221cd75e58ca.js | 1 - .../docs/[[...slug]]/page-2caa2683c2838a7d.js | 1 - .../app/docs/layout-6d9e86ce9d5501d3.js | 1 - .../chunks/app/layout-c6241da76fad0b40.js | 1 - .../chunks/framework-f593a28cde54158e.js | 1 - .../static/chunks/main-5ab622ad5f4fefa1.js | 1 - .../chunks/main-app-d5ad76d309db59c9.js | 1 - .../chunks/pages/_app-da15c11dea942c36.js | 1 - .../chunks/pages/_error-cc3f077a18ea1793.js | 1 - .../chunks/polyfills-42372ed130431b0a.js | 1 - .../static/chunks/webpack-2d20c2f079869833.js | 1 - docs/_next/static/css/0d177ebb9848c15c.css | 1 - .../static/media/26a46d62cd723877-s.woff2 | Bin 18820 -> 0 bytes .../static/media/55c55f0601d81cf3-s.woff2 | Bin 25908 -> 0 bytes .../static/media/581909926a08bbc8-s.woff2 | Bin 19072 -> 0 bytes .../static/media/6d93bde91c0c2823-s.woff2 | Bin 74316 -> 0 bytes .../static/media/97e0cb1ae144a2a9-s.woff2 | Bin 11220 -> 0 bytes .../static/media/a34f9d1faa5f3315-s.p.woff2 | Bin 48556 -> 0 bytes .../static/media/df0a9ae256c0569c-s.woff2 | Bin 10280 -> 0 bytes .../vvyse3XSZUANbPbQ3_ktG/_buildManifest.js | 1 - .../vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js | 1 - docs/docs.html | 259 ----- docs/docs.txt | 85 -- docs/docs/core/Levenshtein.html | 95 -- docs/docs/core/Levenshtein.txt | 55 -- docs/docs/core/highlight.html | 77 -- docs/docs/core/highlight.txt | 55 -- docs/docs/core/yake.html | 106 -- docs/docs/core/yake.txt | 55 -- docs/docs/data/composedword.html | 154 --- docs/docs/data/composedword.txt | 55 -- docs/docs/data/datacore.html | 118 --- docs/docs/data/datacore.txt | 55 -- docs/docs/data/singleword.html | 126 --- docs/docs/data/singleword.txt | 55 -- docs/docs/data/utils.html | 102 -- docs/docs/data/utils.txt | 55 -- docs/index.html | 1 - docs/index.txt | 30 - strategy.ini => docs/strategy.ini | 0 microsoft.gpg | Bin 641 -> 0 bytes requirements.txt | 5 +- yake/datarepresentation.py | 916 ------------------ 67 files changed, 62 insertions(+), 2841 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 docs/404.html rename AUTHORS.rst => docs/AUTHORS.rst (100%) rename CONTRIBUTING.rst => docs/CONTRIBUTING.rst (100%) delete mode 100644 docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js delete mode 100644 docs/_next/static/chunks/318-23c47eb018ec8a69.js delete mode 100644 docs/_next/static/chunks/323.3d40b3f10e4f6645.js delete mode 100644 docs/_next/static/chunks/477.c67b77b0908a8d3c.js delete mode 100644 docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js delete mode 100644 docs/_next/static/chunks/534-bbb1ba4032b129a8.js delete mode 100644 docs/_next/static/chunks/595-993b621b2225d9dc.js delete mode 100644 docs/_next/static/chunks/684-db277683248699e5.js delete mode 100644 docs/_next/static/chunks/728.0a8f45173f3a857c.js delete mode 100644 docs/_next/static/chunks/874-0cb5402bc7a91b88.js delete mode 100644 docs/_next/static/chunks/882-90fa2d4319e1517d.js delete mode 100644 docs/_next/static/chunks/886.9b81414a450ef20f.js delete mode 100644 docs/_next/static/chunks/920-aed94374b29ba4e2.js delete mode 100644 docs/_next/static/chunks/996.84f6c850bac17e1e.js delete mode 100644 docs/_next/static/chunks/997-04a205149f54dcb1.js delete mode 100644 docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js delete mode 100644 docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js delete mode 100644 docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js delete mode 100644 docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js delete mode 100644 docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js delete mode 100644 docs/_next/static/chunks/app/layout-c6241da76fad0b40.js delete mode 100644 docs/_next/static/chunks/framework-f593a28cde54158e.js delete mode 100644 docs/_next/static/chunks/main-5ab622ad5f4fefa1.js delete mode 100644 docs/_next/static/chunks/main-app-d5ad76d309db59c9.js delete mode 100644 docs/_next/static/chunks/pages/_app-da15c11dea942c36.js delete mode 100644 docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js delete mode 100644 docs/_next/static/chunks/polyfills-42372ed130431b0a.js delete mode 100644 docs/_next/static/chunks/webpack-2d20c2f079869833.js delete mode 100644 docs/_next/static/css/0d177ebb9848c15c.css delete mode 100644 docs/_next/static/media/26a46d62cd723877-s.woff2 delete mode 100644 docs/_next/static/media/55c55f0601d81cf3-s.woff2 delete mode 100644 docs/_next/static/media/581909926a08bbc8-s.woff2 delete mode 100644 docs/_next/static/media/6d93bde91c0c2823-s.woff2 delete mode 100644 docs/_next/static/media/97e0cb1ae144a2a9-s.woff2 delete mode 100644 docs/_next/static/media/a34f9d1faa5f3315-s.p.woff2 delete mode 100644 docs/_next/static/media/df0a9ae256c0569c-s.woff2 delete mode 100644 docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js delete mode 100644 docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js delete mode 100644 docs/docs.html delete mode 100644 docs/docs.txt delete mode 100644 docs/docs/core/Levenshtein.html delete mode 100644 docs/docs/core/Levenshtein.txt delete mode 100644 docs/docs/core/highlight.html delete mode 100644 docs/docs/core/highlight.txt delete mode 100644 docs/docs/core/yake.html delete mode 100644 docs/docs/core/yake.txt delete mode 100644 docs/docs/data/composedword.html delete mode 100644 docs/docs/data/composedword.txt delete mode 100644 docs/docs/data/datacore.html delete mode 100644 docs/docs/data/datacore.txt delete mode 100644 docs/docs/data/singleword.html delete mode 100644 docs/docs/data/singleword.txt delete mode 100644 docs/docs/data/utils.html delete mode 100644 docs/docs/data/utils.txt delete mode 100644 docs/index.html delete mode 100644 docs/index.txt rename strategy.ini => docs/strategy.ini (100%) delete mode 100644 microsoft.gpg delete mode 100644 yake/datarepresentation.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 021f78aa..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,11 +0,0 @@ -include AUTHORS.rst -include CONTRIBUTING.rst -include LICENSE -include README.rst - -recursive-include tests * -recursive-exclude * __pycache__ -recursive-exclude * *.py[co] - -recursive-include yake/StopwordsList *.txt -recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif diff --git a/README.md b/README.md index ceccb29d..ce4e5597 100644 --- a/README.md +++ b/README.md @@ -1,358 +1,101 @@ -# Yet Another Keyword Extractor (Yake) +# YAKE! (Yet Another Keyword Extractor) -Unsupervised Approach for Automatic Keyword Extraction using Text Features. +[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) -YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app. +YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. -## Main Features +## Features -* Unsupervised approach -* Corpus-Independent -* Domain and Language Independent -* Single-Document +- 🚀 Unsupervised approach +- 🌐 Language and domain independent +- 📄 Single-document focused +- 🧠 No training or dictionaries required -## Benchmark - -For Benchmark results check out our paper published on Information Science Journal (see the references section). - -## Rationale - -Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. - -## Where can I find YAKE!? -YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords). - -## Installing YAKE! - -There are three installation alternatives. - -- To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our [simple YAKE! Docker image](#cli-image). This container will allow you to run text extraction as a command, and then exit. -- To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our [RESTful API server image](#rest-api-image). This container/server *will run in the background*. -- To install YAKE! straight "on the metal" or you want to integrate it in your Python app, you can [install it and its dependencies](#standalone-installation). - - -### Option 1. YAKE as a CLI utility inside a Docker container - -First, install Docker. Ubuntu users, please see our [script below](#installing-docker) for a complete installation script. - -Then, run: +## Quick Installation ```bash -docker run liaad/yake:latest -ti "Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system." -``` -*Example text from Wikipedia* - - -### Option 2. REST API Server in a Docker container - -This install will provide you a mirror of the original REST API of YAKE! available [here](https://boiling-castle-88317.herokuapp.com). - -```bash -docker run -p 5000:5000 -d liaad/yake-server:latest -``` - -After it starts up, the container will run in the background, at http://127.0.0.1:5000. To access the YAKE! API documentation, go to http://127.0.0.1:5000/apidocs/. - -You can test the RESTful API using `curl`: - -```bash -curl -X POST "http://localhost:5000/yake/" -H "accept: application/json" -H "Content-Type: application/json" \ --d @- <<'EOF' -{ - "language": "en", - "max_ngram_size": 3, - "number_of_keywords": 10, - "text": "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ..." -} -EOF -``` -*Example text from Wikipedia* - - -### Option 3. Standalone Installation (for development or integration) - -#### Requirements - -Python3 - -#### Installation - -To install Yake using pip: - -``` bash pip install git+https://github.com/LIAAD/yake ``` -To upgrade using pip: - -``` bash -pip install git+https://github.com/LIAAD/yake –-upgrade -``` -#### Usage (Command line) - -How to use it on your favorite command line -``` bash -Usage: yake [OPTIONS] - -Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. -``` -### Usage (Python) +## Basic Usage -How to use it on Python - -``` python +```python import yake -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ -"was founded by Goldbloom and Ben Hamner in 2010. "\ -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ -"it has managed to stay well ahead of them by focusing on its specific niche. "\ -"The service is basically the de facto home for running data science and machine learning competitions. "\ -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ -"will keep the service running - likely under its current name. While the acquisition is probably more about "\ -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ -"share this code on the platform (the company previously called them 'scripts'). "\ -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ -"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " -``` +text = "YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text." -#### assuming default parameters -```bash +# Simple usage with default parameters kw_extractor = yake.KeywordExtractor() keywords = kw_extractor.extract_keywords(text) -for kw in keywords: - print(kw) -``` +for kw, score in keywords: + print(f"{kw} ({score})") -#### specifying parameters -```bash -language = "en" -max_ngram_size = 3 -deduplication_threshold = 0.9 -deduplication_algo = 'seqm' -windowSize = 1 -numOfKeywords = 20 +# With custom parameters +custom_kw_extractor = yake.KeywordExtractor( + lan="en", # language + n=3, # ngram size + dedupLim=0.9, # deduplication threshold + dedupFunc='seqm', # deduplication function + windowsSize=1, # context window + top=10, # number of keywords to extract + features=None # custom features +) -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_threshold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None) keywords = custom_kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) ``` -#### Output -The lower the score, the more relevant the keyword is. -``` bash -('google', 0.026580863364597897) -('kaggle', 0.0289005976239829) -('ceo anthony goldbloom', 0.029946071606210194) -('san francisco', 0.048810837074825336) -('anthony goldbloom declined', 0.06176910090701819) -('google cloud platform', 0.06261974476422487) -('co-founder ceo anthony', 0.07357749587020043) -('acquiring kaggle', 0.08723571551039863) -('ceo anthony', 0.08915156857226395) -('anthony goldbloom', 0.09123482372372106) -('machine learning', 0.09147989238151344) -('kaggle co-founder ceo', 0.093805063905847) -('data', 0.097574333771058) -('google cloud', 0.10260128641464673) -('machine learning competitions', 0.10773000650607861) -('francisco this week', 0.11519915079240485) -('platform', 0.1183512305596321) -('conference in san', 0.12392066376108138) -('service', 0.12546743261462942) -('goldbloom', 0.14611408778815776) -``` - -### Highlighting Feature -Highlighting feature will tag every keyword in the text with the default tag ``. - -``` python +## Multilingual Support -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size = 3) -th.highlight(text, keywords) +YAKE! supports multiple languages. Example with Portuguese text: -``` -#### Output -By default, keywords will be highlighted using the tag 'kw'. -``` -Sources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that google is hosting its Cloud Next conference in san francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the acquisition is happening. google itself declined 'to comment on rumors'. -..... -..... +```python +text_pt = "YAKE! é um extrator de palavras-chave automático não supervisionado." +custom_kw_extractor = yake.KeywordExtractor(lan="pt") +keywords = custom_kw_extractor.extract_keywords(text_pt) ``` +## Text Highlighting -### Custom Highlighting Feature -Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag `` makes use of an hyphotetical function `my_class` whose purpose would be to highlight in white colour or the relevant keywords. +YAKE! includes a highlighting feature to mark keywords in text: -#### Output ```python - from yake.highlight import TextHighlighter -th = TextHighlighter(max_ngram_size = 3, highlight_pre = "", highlight_post= "") -th.highlight(text, keywords) -``` -``` -self.highlight_postSources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that google is hosting self.highlight_postits Cloud Next conference in san francisco this week, the official announcement could come as early self.highlight_postas tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the self.highlight_postacquisition is happening. google itself declined 'to comment on rumors'. -..... -..... -``` +th = TextHighlighter(max_ngram_size=3) +highlighted_text = th.highlight(text, keywords) -### Languages others than English -While English (`en`) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text. -``` bash -text = ''' -"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui. -A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto. -''' - -custom_kw_extractor = yake.KeywordExtractor(lan="pt") -keywords = custom_kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) +# With custom HTML tags +custom_th = TextHighlighter( + max_ngram_size=3, + highlight_pre="", + highlight_post="" +) ``` -#### Output -``` bash -('conta-me histórias', 0.006225012963810038) -('liaad do inesc', 0.01899063587015275) -('inesc tec', 0.01995432290332246) -('conta-me', 0.04513273690417472) -('histórias', 0.04513273690417472) -('prémio arquivo.pt', 0.05749361520927859) -('liaad', 0.07738867367929901) -('inesc', 0.07738867367929901) -('tec', 0.08109398065524037) -('xutos inspiram projeto', 0.08720742489353424) -('inspiram projeto premiado', 0.08720742489353424) -('adam jatwot docente', 0.09407053486771558) -('arquivo.pt', 0.10261392141666957) -('alípio jorge', 0.12190479662535166) -('ciências da universidade', 0.12368384021490342) -('ricardo campos investigador', 0.12789997272332762) -('politécnico de tomar', 0.13323587141127738) -('arian pasquali', 0.13323587141127738) -('vitor mangaravite', 0.13323587141127738) -('preservados da web', 0.13596322680882506) -``` - -## Related projects - -### YAKE! Mobile APP -YAKE! is now available on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake) - -### `pke` - python keyphrase extraction - -https://github.com/boudinfl/pke - `pke` is an **open source** python-based **keyphrase extraction** toolkit. It -provides an end-to-end keyphrase extraction pipeline in which each component can -be easily modified or extended to develop new models. `pke` also allows for -easy benchmarking of state-of-the-art keyphrase extraction models, and -ships with supervised models trained on the SemEval-2010 dataset (http://aclweb.org/anthology/S10-1004). - -Credits to https://github.com/boudinfl - -### `SparkNLP` - State of the Art Natural Language Processing framework -https://github.com/JohnSnowLabs/spark-nlp - `SparkNLP` from [John Snow Labs](https://www.johnsnowlabs.com/) is an open source framework with full Python, Scala, and Java Support. Check [their documentation](https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction), [demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/) and [google colab](https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb). A video on how to use spark nlp with yake can also be found here: https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code - -### `General Index` by Archive.org -https://archive.org/details/GeneralIndex - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in [Nature](https://www.nature.com/articles/d41586-021-02895-8). -### `textacy` - NLP, before and after spaCy +## Where to Find YAKE! -https://github.com/chartbeat-labs/textacy - `textacy` is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE. +- 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) +- 🔌 Documentation site: [Documentation](http://github.io/yakerf/docs/) +- 📦 Python package: [GitHub](https://github.com/LIAAD/yake_demo) -Credits to https://github.com/chartbeat-labs +## Citation - +If you use YAKE in your research, please cite: -### `Annif` - Tool for automated subject indexing and classification -https://github.com/NatLibFi/Annif/ - `Annif` is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website http://annif.org/. - -### `Portulan Clarin` - Services and data for researchers, innovators, students and language professionals -https://portulanclarin.net/workbench/liaad-yake/ - `Portulan Clarin` is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website https://portulanclarin.net/. - -## How to install Docker - -Here is the "just copy and paste" installations script for Docker in Ubuntu. Enjoy. - -```bash -# Install dependencies -sudo apt-get update -sudo apt-get install \ - apt-transport-https \ - ca-certificates \ - curl \ - software-properties-common - -# Add Docker repo -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -sudo apt-key fingerprint 0EBFCD88 -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" -sudo apt-get update - -# Install Docker -sudo apt-get install -y docker-ce - -# Start Docker Daemon -sudo service docker start - -# Add yourself to the Docker user group, otherwise docker will complain that -# it does not know if the Docker Daemon is running -sudo usermod -aG docker ${USER} - -# Install docker-compose -sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -source ~/.bashrc -docker-compose --version -echo "Done!" +``` +Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). +YAKE! Keyword Extraction from Single Documents using Multiple Local Features. +Information Sciences Journal. Elsevier, Vol 509, pp 257-289. ``` -Credits to https://github.com/silvae86 for the Docker scripts. - -## References -Please cite the following works when using YAKE - -In-depth journal paper at Information Sciences Journal - -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) - -ECIR'18 Best Short Paper - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) +``` +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). +A Text Feature Based Automatic Keyword Extraction Method for Single Documents. +ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. +``` ## Awards -[ECIR'18](http://ecir2018.org) Best Short Paper + +🏆 [ECIR'18](http://ecir2018.org) Best Short Paper \ No newline at end of file diff --git a/docs-site/README.md b/docs-site/README.md index 9f468772..4bf5dfc1 100644 --- a/docs-site/README.md +++ b/docs-site/README.md @@ -1,9 +1,6 @@ # docs-site -This is a Next.js application generated with -[Create Fumadocs](https://github.com/fuma-nama/fumadocs). - -Run development server: +To access Documentation site run development server inside de docs-site folder: ```bash npm run dev @@ -14,13 +11,3 @@ yarn dev ``` Open http://localhost:3000 with your browser to see the result. - -## Learn More - -To learn more about Next.js and Fumadocs, take a look at the following -resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js - features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. -- [Fumadocs](https://fumadocs.vercel.app) - learn about Fumadocs diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index 8b4c79a7..201541a6 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -5,9 +5,7 @@ const withMDX = createMDX(); /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, - output: 'export', - basePath: '/docs-site', // nome do repositório - assetPrefix: '/docs-site', // garante que os estilos/scripts carregam corretamente + output: 'export', }; export default withMDX(config); diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index f2fb0d22..00000000 --- a/docs/404.html +++ /dev/null @@ -1 +0,0 @@ -404: This page could not be found.

    404

    This page could not be found.

    \ No newline at end of file diff --git a/AUTHORS.rst b/docs/AUTHORS.rst similarity index 100% rename from AUTHORS.rst rename to docs/AUTHORS.rst diff --git a/CONTRIBUTING.rst b/docs/CONTRIBUTING.rst similarity index 100% rename from CONTRIBUTING.rst rename to docs/CONTRIBUTING.rst diff --git a/docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js b/docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js deleted file mode 100644 index 708bd3ef..00000000 --- a/docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[176],{244:(e,t,r)=>{"use strict";function n(e,t,r){let{includePage:n=!0,includeSeparator:i=!1,includeRoot:o}=r,a=[];return t.forEach((e,r)=>{if("separator"===e.type&&i&&a.push({name:e.name}),"folder"===e.type){let n=t.at(r+1);if(n&&e.index===n)return;if(e.root){a=[];return}a.push({name:e.name,url:e.index?.url})}"page"===e.type&&n&&a.push({name:e.name,url:e.url})}),o&&a.unshift({name:e.name,url:"object"==typeof o?o.url:void 0}),a}r.d(t,{Pp:()=>n,oe:()=>function e(t,r){let n;for(let i of(r.endsWith("/")&&(r=r.slice(0,-1)),t)){if("separator"===i.type&&(n=i),"folder"===i.type){if(i.index?.url===r){let e=[];return n&&e.push(n),e.push(i,i.index),e}let t=e(i.children,r);if(t)return t.unshift(i),n&&t.unshift(n),t}if("page"===i.type&&i.url===r){let e=[];return n&&e.push(n),e.push(i),e}}return null}}),r(9189),r(2115)},263:(e,t,r)=>{"use strict";r.d(t,{G:()=>d,c:()=>u});var n=r(5155),i=r(2115),o=r(344),a=r(5547),l=r(3259);let s=(0,o.q6)("SidebarContext");function u(){return s.use()}function d(e){let{children:t}=e,r=(0,i.useRef)(!0),[u,d]=(0,i.useState)(!1),[c,f]=(0,i.useState)(!1),m=(0,o.a8)();return(0,l.T)(m,()=>{r.current&&d(!1),r.current=!0}),(0,n.jsx)(s.Provider,{value:(0,i.useMemo)(()=>({open:u,setOpen:d,collapsed:c,setCollapsed:f,closeOnRedirect:r}),[u,c]),children:(0,n.jsx)(a.GB,{open:u,onOpenChange:d,children:t})})}},901:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return n}});let n=r(8229)._(r(2115)).default.createContext(null)},1193:(e,t)=>{"use strict";function r(e){var t;let{config:r,src:n,width:i,quality:o}=e,a=o||(null==(t=r.qualities)?void 0:t.reduce((e,t)=>Math.abs(t-75){"use strict";r.d(t,{D:()=>u,N:()=>d});var n=r(2115),i=(e,t,r,n,i,o,a,l)=>{let s=document.documentElement,u=["light","dark"];function d(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?i.map(e=>o[e]||e):i;r?(s.classList.remove(...n),s.classList.add(o&&o[t]?o[t]:t)):s.setAttribute(e,t)}),r=t,l&&u.includes(r)&&(s.style.colorScheme=r)}if(n)d(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(n)}catch(e){}},o=["light","dark"],a="(prefers-color-scheme: dark)",l=n.createContext(void 0),s={setTheme:e=>{},themes:[]},u=()=>{var e;return null!=(e=n.useContext(l))?e:s},d=e=>n.useContext(l)?n.createElement(n.Fragment,null,e.children):n.createElement(f,{...e}),c=["light","dark"],f=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:i=!0,enableColorScheme:s=!0,storageKey:u="theme",themes:d=c,defaultTheme:f=i?"system":"light",attribute:y="data-theme",value:v,children:b,nonce:_,scriptProps:w}=e,[x,S]=n.useState(()=>p(u,f)),[j,C]=n.useState(()=>"system"===x?g():x),E=v?Object.values(v):d,P=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&i&&(t=g());let n=v?v[t]:t,a=r?h(_):null,l=document.documentElement,u=e=>{"class"===e?(l.classList.remove(...E),n&&l.classList.add(n)):e.startsWith("data-")&&(n?l.setAttribute(e,n):l.removeAttribute(e))};if(Array.isArray(y)?y.forEach(u):u(y),s){let e=o.includes(f)?f:null,r=o.includes(t)?t:e;l.style.colorScheme=r}null==a||a()},[_]),O=n.useCallback(e=>{let t="function"==typeof e?e(x):e;S(t);try{localStorage.setItem(u,t)}catch(e){}},[x]),k=n.useCallback(e=>{C(g(e)),"system"===x&&i&&!t&&P("system")},[x,t]);n.useEffect(()=>{let e=window.matchMedia(a);return e.addListener(k),k(e),()=>e.removeListener(k)},[k]),n.useEffect(()=>{let e=e=>{e.key===u&&(e.newValue?S(e.newValue):O(f))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[O]),n.useEffect(()=>{P(null!=t?t:x)},[t,x]);let M=n.useMemo(()=>({theme:x,setTheme:O,forcedTheme:t,resolvedTheme:"system"===x?j:x,themes:i?[...d,"system"]:d,systemTheme:i?j:void 0}),[x,O,t,j,i,d]);return n.createElement(l.Provider,{value:M},n.createElement(m,{forcedTheme:t,storageKey:u,attribute:y,enableSystem:i,enableColorScheme:s,defaultTheme:f,value:v,themes:d,nonce:_,scriptProps:w}),b)},m=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:o,enableSystem:a,enableColorScheme:l,defaultTheme:s,value:u,themes:d,nonce:c,scriptProps:f}=e,m=JSON.stringify([o,r,s,t,d,u,a,l]).slice(1,-1);return n.createElement("script",{...f,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(i.toString(),")(").concat(m,")")}})}),p=(e,t)=>{let r;try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t},h=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},g=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")},1469:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return s},getImageProps:function(){return l}});let n=r(8229),i=r(8883),o=r(3063),a=n._(r(1193));function l(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:a.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs-site/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let s=o.Image},2464:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AmpStateContext",{enumerable:!0,get:function(){return n}});let n=r(8229)._(r(2115)).default.createContext({})},3063:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return _}});let n=r(8229),i=r(6966),o=r(5155),a=i._(r(2115)),l=n._(r(7650)),s=n._(r(5564)),u=r(8883),d=r(5840),c=r(6752);r(3230);let f=r(901),m=n._(r(1193)),p=r(6654),h={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs-site/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function g(e,t,r,n,i,o,a){let l=null==e?void 0:e.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),null==r?void 0:r.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,i=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}(null==n?void 0:n.current)&&n.current(e)}}))}function y(e){return a.use?{fetchPriority:e}:{fetchpriority:e}}let v=(0,a.forwardRef)((e,t)=>{let{src:r,srcSet:n,sizes:i,height:l,width:s,decoding:u,className:d,style:c,fetchPriority:f,placeholder:m,loading:h,unoptimized:v,fill:b,onLoadRef:_,onLoadingCompleteRef:w,setBlurComplete:x,setShowAltText:S,sizesInput:j,onLoad:C,onError:E,...P}=e,O=(0,a.useCallback)(e=>{e&&(E&&(e.src=e.src),e.complete&&g(e,m,_,w,x,v,j))},[r,m,_,w,x,E,v,j]),k=(0,p.useMergedRef)(t,O);return(0,o.jsx)("img",{...P,...y(f),loading:h,width:s,height:l,decoding:u,"data-nimg":b?"fill":"1",className:d,style:c,sizes:i,srcSet:n,src:r,ref:k,onLoad:e=>{g(e.currentTarget,m,_,w,x,v,j)},onError:e=>{S(!0),"empty"!==m&&x(!0),E&&E(e)}})});function b(e){let{isAppRouter:t,imgAttributes:r}=e,n={as:"image",imageSrcSet:r.srcSet,imageSizes:r.sizes,crossOrigin:r.crossOrigin,referrerPolicy:r.referrerPolicy,...y(r.fetchPriority)};return t&&l.default.preload?(l.default.preload(r.src,n),null):(0,o.jsx)(s.default,{children:(0,o.jsx)("link",{rel:"preload",href:r.srcSet?void 0:r.src,...n},"__nimg-"+r.src+r.srcSet+r.sizes)})}let _=(0,a.forwardRef)((e,t)=>{let r=(0,a.useContext)(f.RouterContext),n=(0,a.useContext)(c.ImageConfigContext),i=(0,a.useMemo)(()=>{var e;let t=h||n||d.imageConfigDefault,r=[...t.deviceSizes,...t.imageSizes].sort((e,t)=>e-t),i=t.deviceSizes.sort((e,t)=>e-t),o=null==(e=t.qualities)?void 0:e.sort((e,t)=>e-t);return{...t,allSizes:r,deviceSizes:i,qualities:o}},[n]),{onLoad:l,onLoadingComplete:s}=e,p=(0,a.useRef)(l);(0,a.useEffect)(()=>{p.current=l},[l]);let g=(0,a.useRef)(s);(0,a.useEffect)(()=>{g.current=s},[s]);let[y,_]=(0,a.useState)(!1),[w,x]=(0,a.useState)(!1),{props:S,meta:j}=(0,u.getImgProps)(e,{defaultLoader:m.default,imgConf:i,blurComplete:y,showAltText:w});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(v,{...S,unoptimized:j.unoptimized,placeholder:j.placeholder,fill:j.fill,onLoadRef:p,onLoadingCompleteRef:g,setBlurComplete:_,setShowAltText:x,sizesInput:e.sizes,ref:t}),j.priority?(0,o.jsx)(b,{isAppRouter:!r,imgAttributes:S}):null]})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3259:(e,t,r)=>{"use strict";r.d(t,{T:()=>n.T});var n=r(5936);r(9189)},3834:(e,t,r)=>{"use strict";r.d(t,{RootProvider:()=>w});var n=r(5155),i=r(1362),o=r(2115),a=r(4315),l=r(263),s=r(8169),u=r(8265),d=r(9697),c=r(344);let f=(0,o.lazy)(()=>Promise.all([r.e(534),r.e(920),r.e(477)]).then(r.bind(r,477)));function m(e){let{children:t,dir:r="ltr",theme:o={},search:u,i18n:d}=e,c=t;return(null==u?void 0:u.enabled)!==!1&&(c=(0,n.jsx)(s.YL,{SearchDialog:f,...u,children:c})),(null==o?void 0:o.enabled)!==!1&&(c=(0,n.jsx)(i.N,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,...o,children:c})),d&&(c=(0,n.jsx)(p,{...d,children:c})),(0,n.jsx)(a.FX,{dir:r,children:(0,n.jsx)(l.G,{children:c})})}function p(e){let{locales:t=[],locale:r,onLocaleChange:i,...a}=e,l=(0,c.rd)(),s=(0,c.a8)(),f=(0,u.J)(e=>{if(i)return i(e);let t=s.split("/").filter(e=>e.length>0);t[0]!==r?t.unshift(e):t[0]=e,l.push("/".concat(t.join("/"))),l.refresh()});return(0,n.jsx)(d.gJ.Provider,{value:(0,o.useMemo)(()=>({locale:r,locales:t,text:{...d.Cr,...a.translations},onChange:f}),[r,t,f,a.translations]),children:a.children})}var h=r(9600);r(9189);var g=r(8999),y=r(6874),v=r(1469),b=r.n(v);function _(e){let{children:t}=e;return(0,n.jsx)(h.Uy,{usePathname:g.usePathname,useRouter:g.useRouter,useParams:g.useParams,Link:y,Image:b(),children:t})}function w(e){return(0,n.jsx)(_,{children:(0,n.jsx)(m,{...e,children:e.children})})}r(8693),r(1339)},5029:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(2115),i=n.useLayoutEffect,o=n.useEffect;function a(e){let{headManager:t,reduceComponentsToState:r}=e;function a(){if(t&&t.mountedInstances){let i=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(i,e))}}return i(()=>{var r;return null==t||null==(r=t.mountedInstances)||r.add(e.children),()=>{var r;null==t||null==(r=t.mountedInstances)||r.delete(e.children)}}),i(()=>(t&&(t._pendingUpdate=a),()=>{t&&(t._pendingUpdate=a)})),o(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},5100:(e,t)=>{"use strict";function r(e){let{widthInt:t,heightInt:r,blurWidth:n,blurHeight:i,blurDataURL:o,objectFit:a}=e,l=n?40*n:t,s=i?40*i:r,u=l&&s?"viewBox='0 0 "+l+" "+s+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+u+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(u?"none":"contain"===a?"xMidYMid":"cover"===a?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+o+"'/%3E%3C/svg%3E"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},5299:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_62dcf0"}},5547:(e,t,r)=>{"use strict";r.d(t,{GB:()=>s,Pg:()=>d,x2:()=>u}),r(9189);var n=r(2115),i=r(3795),o=r(5155),a=(0,n.createContext)(null);function l(){let e=(0,n.useContext)(a);if(!e)throw Error("Missing sidebar provider");return e}function s(e){let[t,r]=void 0===e.open?(0,n.useState)(!1):[e.open,e.onOpenChange];return(0,o.jsx)(a.Provider,{value:(0,n.useMemo)(()=>({open:t,setOpen:null!=r?r:()=>void 0}),[t,r]),children:e.children})}function u(e){let{as:t,...r}=e,{open:n,setOpen:i}=l();return(0,o.jsx)(null!=t?t:"button",{"aria-label":"Toggle Sidebar","data-open":n,onClick:()=>{i(!n)},...r})}function d(e){let{as:t,blockScrollingWidth:r,removeScrollOn:a=r?"(width < ".concat(r,"px)"):void 0,...s}=e,{open:u}=l(),[d,c]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{if(!a)return;let e=window.matchMedia(a),t=()=>{c(e.matches)};return t(),e.addEventListener("change",t),()=>{e.removeEventListener("change",t)}},[a]),(0,o.jsx)(i.A,{as:null!=t?t:"aside","data-open":u,enabled:!!(d&&u),...s,children:s.children})}},5564:(e,t,r)=>{"use strict";var n=r(9509);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return g},defaultHead:function(){return f}});let i=r(8229),o=r(6966),a=r(5155),l=o._(r(2115)),s=i._(r(5029)),u=r(2464),d=r(2830),c=r(7544);function f(e){void 0===e&&(e=!1);let t=[(0,a.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,a.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function m(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(3230);let p=["name","httpEquiv","charSet","itemProp"];function h(e,t){let{inAmpMode:r}=t;return e.reduce(m,[]).reverse().concat(f(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return i=>{let o=!0,a=!1;if(i.key&&"number"!=typeof i.key&&i.key.indexOf("$")>0){a=!0;let t=i.key.slice(i.key.indexOf("$")+1);e.has(t)?o=!1:e.add(t)}switch(i.type){case"title":case"base":t.has(i.type)?o=!1:t.add(i.type);break;case"meta":for(let e=0,t=p.length;e{let i=e.key||t;if(n.env.__NEXT_OPTIMIZE_FONTS&&!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,l.default.cloneElement(e,t)}return l.default.cloneElement(e,{key:i})})}let g=function(e){let{children:t}=e,r=(0,l.useContext)(u.AmpStateContext),n=(0,l.useContext)(d.HeadManagerContext);return(0,a.jsx)(s.default,{reduceComponentsToState:h,headManager:n,inAmpMode:(0,c.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5840:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{VALID_LOADERS:function(){return r},imageConfigDefault:function(){return n}});let r=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:void 0,unoptimized:!1}},5936:(e,t,r)=>{"use strict";r.d(t,{T:()=>i});var n=r(2115);function i(e,t,r=function e(t,r){if(Array.isArray(t)&&Array.isArray(r))return r.length!==t.length||t.some((t,n)=>e(t,r[n]));if("object"==typeof t&&t&&"object"==typeof r&&r){let n=Object.keys(t),i=Object.keys(r);return n.length!==i.length||n.some(n=>e(t[n],r[n]))}return t!==r}){let[o,a]=(0,n.useState)(e);r(o,e)&&(t(e,o),a(e))}},6752:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageConfigContext",{enumerable:!0,get:function(){return o}});let n=r(8229)._(r(2115)),i=r(5840),o=n.default.createContext(i.imageConfigDefault)},7544:(e,t)=>{"use strict";function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},8169:(e,t,r)=>{"use strict";r.d(t,{$A:()=>a,YL:()=>s});var n=r(5155),i=r(2115);let o=(0,r(344).q6)("SearchContext",{enabled:!1,hotKey:[],setOpenSearch:()=>void 0});function a(){return o.use()}function l(){let[e,t]=(0,i.useState)("⌘");return(0,i.useEffect)(()=>{window.navigator.userAgent.includes("Windows")&&t("Ctrl")},[]),e}function s(e){let{SearchDialog:t,children:r,preload:a=!0,options:s,hotKey:u=[{key:e=>e.metaKey||e.ctrlKey,display:(0,n.jsx)(l,{})},{key:"k",display:"K"}],links:d}=e,[c,f]=(0,i.useState)(!a&&void 0);return(0,i.useEffect)(()=>{let e=e=>{u.every(t=>"string"==typeof t.key?e.key===t.key:t.key(e))&&(f(!0),e.preventDefault())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[u]),(0,n.jsxs)(o.Provider,{value:(0,i.useMemo)(()=>({enabled:!0,hotKey:u,setOpenSearch:f}),[u]),children:[void 0!==c&&(0,n.jsx)(t,{open:c,onOpenChange:f,links:d,...s}),r]})}},8265:(e,t,r)=>{"use strict";r.d(t,{J:()=>i}),r(9189);var n=r(2115);function i(e){let t=(0,n.useRef)(e);return t.current=e,(0,n.useCallback)(function(){for(var e=arguments.length,r=Array(e),n=0;n{"use strict";r.d(t,{L:()=>d,TreeContextProvider:()=>u,t:()=>c});var n=r(5155),i=r(344),o=r(2115),a=r(244);let l=(0,i.q6)("TreeContext"),s=(0,i.q6)("PathContext",[]);function u(e){var t,r,u;let d=(0,o.useRef)(0),c=(0,i.a8)(),f=(0,o.useMemo)(()=>e.tree,[null!=(t=e.tree.$id)?t:e.tree]),m=(0,o.useMemo)(()=>{var e;return null!=(e=(0,a.oe)(f.children,c))?e:[]},[f,c]),p=null!=(r=m.findLast(e=>"folder"===e.type&&e.root))?r:f;return null!=p.$id||(p.$id=String(d.current++)),(0,n.jsx)(l.Provider,{value:(0,o.useMemo)(()=>({root:p}),[p]),children:(0,n.jsx)(s.Provider,{value:m,children:e.children})})}function d(){return s.use()}function c(){return l.use("You must wrap this component under ")}},8883:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return s}}),r(3230);let n=r(5100),i=r(5840),o=["-moz-initial","fill","none","scale-down",void 0];function a(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function s(e,t){var r,s;let u,d,c,{src:f,sizes:m,unoptimized:p=!1,priority:h=!1,loading:g,className:y,quality:v,width:b,height:_,fill:w=!1,style:x,overrideSrc:S,onLoad:j,onLoadingComplete:C,placeholder:E="empty",blurDataURL:P,fetchPriority:O,decoding:k="async",layout:M,objectFit:R,objectPosition:T,lazyBoundary:A,lazyRoot:z,...I}=e,{imgConf:L,showAltText:D,blurComplete:N,defaultLoader:F}=t,G=L||i.imageConfigDefault;if("allSizes"in G)u=G;else{let e=[...G.deviceSizes,...G.imageSizes].sort((e,t)=>e-t),t=G.deviceSizes.sort((e,t)=>e-t),n=null==(r=G.qualities)?void 0:r.sort((e,t)=>e-t);u={...G,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===F)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let U=I.loader||F;delete I.loader,delete I.srcSet;let q="__next_img_default"in U;if(q){if("custom"===u.loader)throw Object.defineProperty(Error('Image with src "'+f+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader'),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=U;U=t=>{let{config:r,...n}=t;return e(n)}}if(M){"fill"===M&&(w=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[M];e&&(x={...x,...e});let t={responsive:"100vw",fill:"100vw"}[M];t&&!m&&(m=t)}let W="",B=l(b),K=l(_);if((s=f)&&"object"==typeof s&&(a(s)||void 0!==s.src)){let e=a(f)?f.default:f;if(!e.src)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!e.height||!e.width)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(d=e.blurWidth,c=e.blurHeight,P=P||e.blurDataURL,W=e.src,!w)if(B||K){if(B&&!K){let t=B/e.width;K=Math.round(e.height*t)}else if(!B&&K){let t=K/e.height;B=Math.round(e.width*t)}}else B=e.width,K=e.height}let V=!h&&("lazy"===g||void 0===g);(!(f="string"==typeof f?f:W)||f.startsWith("data:")||f.startsWith("blob:"))&&(p=!0,V=!1),u.unoptimized&&(p=!0),q&&!u.dangerouslyAllowSVG&&f.split("?",1)[0].endsWith(".svg")&&(p=!0);let $=l(v),H=Object.assign(w?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:R,objectPosition:T}:{},D?{}:{color:"transparent"},x),J=N||"empty"===E?null:"blur"===E?'url("data:image/svg+xml;charset=utf-8,'+(0,n.getImageBlurSvg)({widthInt:B,heightInt:K,blurWidth:d,blurHeight:c,blurDataURL:P||"",objectFit:H.objectFit})+'")':'url("'+E+'")',X=o.includes(H.objectFit)?"fill"===H.objectFit?"100% 100%":"cover":H.objectFit,Y=J?{backgroundSize:X,backgroundPosition:H.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:J}:{},Z=function(e){let{config:t,src:r,unoptimized:n,width:i,quality:o,sizes:a,loader:l}=e;if(n)return{src:r,srcSet:void 0,sizes:void 0};let{widths:s,kind:u}=function(e,t,r){let{deviceSizes:n,allSizes:i}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let n;n=e.exec(r);)t.push(parseInt(n[2]));if(t.length){let e=.01*Math.min(...t);return{widths:i.filter(t=>t>=n[0]*e),kind:"w"}}return{widths:i,kind:"w"}}return"number"!=typeof t?{widths:n,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>i.find(t=>t>=e)||i[i.length-1]))],kind:"x"}}(t,i,a),d=s.length-1;return{sizes:a||"w"!==u?a:"100vw",srcSet:s.map((e,n)=>l({config:t,src:r,quality:o,width:e})+" "+("w"===u?e:n+1)+u).join(", "),src:l({config:t,src:r,quality:o,width:s[d]})}}({config:u,src:f,unoptimized:p,width:B,quality:$,sizes:m,loader:U});return{props:{...I,loading:V?"lazy":g,fetchPriority:O,width:B,height:K,decoding:k,className:y,style:{...H,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:S||Z.src},meta:{unoptimized:p,priority:h,placeholder:E,fill:w}}}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/318-23c47eb018ec8a69.js b/docs/_next/static/chunks/318-23c47eb018ec8a69.js deleted file mode 100644 index 67876725..00000000 --- a/docs/_next/static/chunks/318-23c47eb018ec8a69.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[318],{5455:(e,t,r)=>{r.d(t,{$:()=>n});function n(e,t,r=!0){return e.endsWith("/")&&(e=e.slice(0,-1)),t.endsWith("/")&&(t=t.slice(0,-1)),e===t||r&&t.startsWith(`${e}/`)}},7328:(e,t,r)=>{function n(e,t,r){if(!t.has(e))throw TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function l(e,t){var r=n(e,t,"get");return r.get?r.get.call(e):r.value}function a(e,t,r){var l=n(e,t,"set");if(l.set)l.set.call(e,r);else{if(!l.writable)throw TypeError("attempted to set read only private field");l.value=r}return r}r.d(t,{N:()=>d});var o,i=r(2115),u=r(6081),c=r(6101),f=r(9708),s=r(5155);function d(e){let t=e+"CollectionProvider",[r,n]=(0,u.A)(t),[l,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:r}=e,n=i.useRef(null),a=i.useRef(new Map).current;return(0,s.jsx)(l,{scope:t,itemMap:a,collectionRef:n,children:r})};o.displayName=t;let d=e+"CollectionSlot",p=(0,f.TL)(d),m=i.forwardRef((e,t)=>{let{scope:r,children:n}=e,l=a(d,r),o=(0,c.s)(t,l.collectionRef);return(0,s.jsx)(p,{ref:o,children:n})});m.displayName=d;let h=e+"CollectionItemSlot",v="data-radix-collection-item",y=(0,f.TL)(h),w=i.forwardRef((e,t)=>{let{scope:r,children:n,...l}=e,o=i.useRef(null),u=(0,c.s)(t,o),f=a(h,r);return i.useEffect(()=>(f.itemMap.set(o,{ref:o,...l}),()=>void f.itemMap.delete(o))),(0,s.jsx)(y,{...{[v]:""},ref:u,children:n})});return w.displayName=h,[{Provider:o,Slot:m,ItemSlot:w},function(t){let r=a(e+"CollectionConsumer",t);return i.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(v,"]")));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}var p=new WeakMap;function m(e,t){if("at"in Array.prototype)return Array.prototype.at.call(e,t);let r=function(e,t){let r=e.length,n=h(t),l=n>=0?n:r+n;return l<0||l>=r?-1:l}(e,t);return -1===r?void 0:e[r]}function h(e){return e!=e||0===e?0:Math.trunc(e)}o=new WeakMap},9949:(e,t,r)=>{r.r(t),r.d(t,{default:()=>o});var n=r(9600),l=r(2115),a=r(5155),o=(0,l.forwardRef)(({href:e="#",external:t=!(e.startsWith("/")||e.startsWith("#")||e.startsWith(".")),prefetch:r,...l},o)=>t?(0,a.jsx)("a",{ref:o,href:e,rel:"noreferrer noopener",target:"_blank",...l,children:l.children}):(0,a.jsx)(n.N_,{ref:o,href:e,prefetch:r,...l}));o.displayName="Link",r(9189)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/323.3d40b3f10e4f6645.js b/docs/_next/static/chunks/323.3d40b3f10e4f6645.js deleted file mode 100644 index e06acf52..00000000 --- a/docs/_next/static/chunks/323.3d40b3f10e4f6645.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[323],{323:(e,t,r)=>{r.d(t,{createStaticClient:()=>tm});var n=r(3522);let o={arabic:"ar",armenian:"am",bulgarian:"bg",czech:"cz",danish:"dk",dutch:"nl",english:"en",finnish:"fi",french:"fr",german:"de",greek:"gr",hungarian:"hu",indian:"in",indonesian:"id",irish:"ie",italian:"it",lithuanian:"lt",nepali:"np",norwegian:"no",portuguese:"pt",romanian:"ro",russian:"ru",serbian:"rs",slovenian:"ru",spanish:"es",swedish:"se",tamil:"ta",turkish:"tr",ukrainian:"uk",sanskrit:"sk"},i={dutch:/[^A-Za-zàèéìòóù0-9_'-]+/gim,english:/[^A-Za-zàèéìòóù0-9_'-]+/gim,french:/[^a-z0-9äâàéèëêïîöôùüûœç-]+/gim,italian:/[^A-Za-zàèéìòóù0-9_'-]+/gim,norwegian:/[^a-z0-9_æøåÆØÅäÄöÖüÜ]+/gim,portuguese:/[^a-z0-9à-úÀ-Ú]/gim,russian:/[^a-z0-9а-яА-ЯёЁ]+/gim,spanish:/[^a-z0-9A-Zá-úÁ-ÚñÑüÜ]+/gim,swedish:/[^a-z0-9_åÅäÄöÖüÜ-]+/gim,german:/[^a-z0-9A-ZäöüÄÖÜß]+/gim,finnish:/[^a-z0-9äöÄÖ]+/gim,danish:/[^a-z0-9æøåÆØÅ]+/gim,hungarian:/[^a-z0-9áéíóöőúüűÁÉÍÓÖŐÚÜŰ]+/gim,romanian:/[^a-z0-9ăâîșțĂÂÎȘȚ]+/gim,serbian:/[^a-z0-9čćžšđČĆŽŠĐ]+/gim,turkish:/[^a-z0-9çÇğĞıİöÖşŞüÜ]+/gim,lithuanian:/[^a-z0-9ąčęėįšųūžĄČĘĖĮŠŲŪŽ]+/gim,arabic:/[^a-z0-9أ-ي]+/gim,nepali:/[^a-z0-9अ-ह]+/gim,irish:/[^a-z0-9áéíóúÁÉÍÓÚ]+/gim,indian:/[^a-z0-9अ-ह]+/gim,armenian:/[^a-z0-9ա-ֆ]+/gim,greek:/[^a-z0-9α-ωά-ώ]+/gim,indonesian:/[^a-z0-9]+/gim,ukrainian:/[^a-z0-9а-яА-ЯіїєІЇЄ]+/gim,slovenian:/[^a-z0-9螚ȎŠ]+/gim,bulgarian:/[^a-z0-9а-яА-Я]+/gim,tamil:/[^a-z0-9அ-ஹ]+/gim,sanskrit:/[^a-z0-9A-Zāīūṛḷṃṁḥśṣṭḍṇṅñḻḹṝ]+/gim,czech:/[^A-Z0-9a-zěščřžýáíéúůóťďĚŠČŘŽÝÁÍÉÓÚŮŤĎ-]+/gim},s=Object.keys(o);var a=r(9509);let l=Date.now().toString().slice(5),u=0,c=BigInt(1e3),f=BigInt(1e6),d=BigInt(1e9);function h(e,t){if(t.length<65535)Array.prototype.push.apply(e,t);else{let r=t.length;for(let n=0;n({...e,document:{...e.document,...t.reduce((e,t)=>{let r=t.split("."),n=r.pop(),o=e;for(let e of r)o[e]=o[e]??{},o=o[e];return o[n]=null,e},e.document)}}))}function N(e){return Array.isArray(e)?e.some(e=>N(e)):e?.constructor?.name==="AsyncFunction"}let D="intersection"in new Set,v="union"in new Set;function _(e,t){return v?e?e.union(t):t:new Set(e?[...e,...t]:t)}let A=s.join("\n - "),E={NO_LANGUAGE_WITH_CUSTOM_TOKENIZER:"Do not pass the language option to create when using a custom tokenizer.",LANGUAGE_NOT_SUPPORTED:`Language "%s" is not supported. -Supported languages are: - - ${A}`,INVALID_STEMMER_FUNCTION_TYPE:"config.stemmer property must be a function.",MISSING_STEMMER:'As of version 1.0.0 @orama/orama does not ship non English stemmers by default. To solve this, please explicitly import and specify the "%s" stemmer from the package @orama/stemmers. See https://docs.orama.com/open-source/text-analysis/stemming for more information.',CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY:"Custom stop words array must only contain strings.",UNSUPPORTED_COMPONENT:'Unsupported component "%s".',COMPONENT_MUST_BE_FUNCTION:'The component "%s" must be a function.',COMPONENT_MUST_BE_FUNCTION_OR_ARRAY_FUNCTIONS:'The component "%s" must be a function or an array of functions.',INVALID_SCHEMA_TYPE:'Unsupported schema type "%s" at "%s". Expected "string", "boolean" or "number" or array of them.',DOCUMENT_ID_MUST_BE_STRING:'Document id must be of type "string". Got "%s" instead.',DOCUMENT_ALREADY_EXISTS:'A document with id "%s" already exists.',DOCUMENT_DOES_NOT_EXIST:'A document with id "%s" does not exists.',MISSING_DOCUMENT_PROPERTY:'Missing searchable property "%s".',INVALID_DOCUMENT_PROPERTY:'Invalid document property "%s": expected "%s", got "%s"',UNKNOWN_INDEX:'Invalid property name "%s". Expected a wildcard string ("*") or array containing one of the following properties: %s',INVALID_BOOST_VALUE:"Boost value must be a number greater than, or less than 0.",INVALID_FILTER_OPERATION:"You can only use one operation per filter, you requested %d.",SCHEMA_VALIDATION_FAILURE:'Cannot insert document due schema validation failure on "%s" property.',INVALID_SORT_SCHEMA_TYPE:'Unsupported sort schema type "%s" at "%s". Expected "string" or "number".',CANNOT_SORT_BY_ARRAY:'Cannot configure sort for "%s" because it is an array (%s).',UNABLE_TO_SORT_ON_UNKNOWN_FIELD:'Unable to sort on unknown field "%s". Allowed fields: %s',SORT_DISABLED:"Sort is disabled. Please read the documentation at https://docs.oramasearch for more information.",UNKNOWN_GROUP_BY_PROPERTY:'Unknown groupBy property "%s".',INVALID_GROUP_BY_PROPERTY:'Invalid groupBy property "%s". Allowed types: "%s", but given "%s".',UNKNOWN_FILTER_PROPERTY:'Unknown filter property "%s".',INVALID_VECTOR_SIZE:'Vector size must be a number greater than 0. Got "%s" instead.',INVALID_VECTOR_VALUE:'Vector value must be a number greater than 0. Got "%s" instead.',INVALID_INPUT_VECTOR:`Property "%s" was declared as a %s-dimensional vector, but got a %s-dimensional vector instead. -Input vectors must be of the size declared in the schema, as calculating similarity between vectors of different sizes can lead to unexpected results.`,WRONG_SEARCH_PROPERTY_TYPE:'Property "%s" is not searchable. Only "string" properties are searchable.',FACET_NOT_SUPPORTED:'Facet doens\'t support the type "%s".',INVALID_DISTANCE_SUFFIX:'Invalid distance suffix "%s". Valid suffixes are: cm, m, km, mi, yd, ft.',INVALID_SEARCH_MODE:'Invalid search mode "%s". Valid modes are: "fulltext", "vector", "hybrid".',MISSING_VECTOR_AND_SECURE_PROXY:"No vector was provided and no secure proxy was configured. Please provide a vector or configure an Orama Secure Proxy to perform hybrid search.",MISSING_TERM:'"term" is a required parameter when performing hybrid search. Please provide a search term.',INVALID_VECTOR_INPUT:'Invalid "vector" property. Expected an object with "value" and "property" properties, but got "%s" instead.',PLUGIN_CRASHED:"A plugin crashed during initialization. Please check the error message for more information:",PLUGIN_SECURE_PROXY_NOT_FOUND:`Could not find '@orama/secure-proxy-plugin' installed in your Orama instance. -Please install it before proceeding with creating an answer session. -Read more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy -`,PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL:`Could not find a chat model defined in the secure proxy plugin configuration. -Please provide a chat model before proceeding with creating an answer session. -Read more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy -`,ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT:"The last message in the session is not an assistant message. Cannot regenerate non-assistant messages.",PLUGIN_COMPONENT_CONFLICT:'The component "%s" is already defined. The plugin "%s" is trying to redefine it.'};function k(e,...t){let r=Error(function(e,...t){return e.replace(/%(?:(?\d+)\$)?(?-?\d*\.?\d*)(?[dfs])/g,function(...e){let{width:r,type:n,position:o}=e[e.length-1],i=o?t[Number.parseInt(o)-1]:t.shift(),s=""===r?0:Number.parseInt(r);switch(n){case"d":return i.toString().padStart(s,"0");case"f":{let e=i,[t,n]=r.split(".").map(e=>Number.parseFloat(e));return"number"==typeof n&&n>=0&&(e=e.toFixed(n)),"number"==typeof t&&t>=0?e.toString().padStart(s,"0"):e.toString()}case"s":return s<0?i.toString().padEnd(-s," "):i.toString().padStart(s," ");default:return i}})}(E[e]??`Unsupported Orama Error code: ${e}`,...t));return r.code=e,"captureStackTrace"in Error.prototype&&Error.captureStackTrace(r),r}function P(e){return{raw:Number(e),formatted:g(e)}}function x(e){if(e.id){if("string"!=typeof e.id)throw k("DOCUMENT_ID_MUST_BE_STRING",typeof e.id);return e.id}return y()}let R={string:!1,number:!1,boolean:!1,enum:!1,geopoint:!1,"string[]":!0,"number[]":!0,"boolean[]":!0,"enum[]":!0},M={"string[]":"string","number[]":"number","boolean[]":"boolean","enum[]":"enum"};function C(e){return"string"==typeof e&&/^vector\[\d+\]$/.test(e)}function z(e){return"string"==typeof e&&R[e]}function U(e){let t=Number(e.slice(7,-1));switch(!0){case isNaN(t):throw k("INVALID_VECTOR_VALUE",e);case t<=0:throw k("INVALID_VECTOR_SIZE",e);default:return t}}function L(e){return{internalIdToId:e.internalIdToId}}function B(e,t){let{internalIdToId:r}=t;e.internalDocumentIDStore.idToInternalId.clear(),e.internalDocumentIDStore.internalIdToId=[];let n=r.length;for(let t=0;te.internalIdToId.length?V(e,t.toString()):t}function F(e,t){if(e.internalIdToId.length{for(let i of e)await i(t,r,n,o)})();for(let i of e)i(t,r,n,o)}function et(e,t,r,n){if(e.some(N))return(async()=>{for(let o of e)await o(t,r,n)})();for(let o of e)o(t,r,n)}class er{k;v;l=null;r=null;h=1;constructor(e,t){this.k=e,this.v=new Set(t)}updateHeight(){this.h=Math.max(er.getHeight(this.l),er.getHeight(this.r))+1}static getHeight(e){return e?e.h:0}getBalanceFactor(){return er.getHeight(this.l)-er.getHeight(this.r)}rotateLeft(){let e=this.r;return this.r=e.l,e.l=this,this.updateHeight(),e.updateHeight(),e}rotateRight(){let e=this.l;return this.l=e.r,e.r=this,this.updateHeight(),e.updateHeight(),e}toJSON(){return{k:this.k,v:Array.from(this.v),l:this.l?this.l.toJSON():null,r:this.r?this.r.toJSON():null,h:this.h}}static fromJSON(e){let t=new er(e.k,e.v);return t.l=e.l?er.fromJSON(e.l):null,t.r=e.r?er.fromJSON(e.r):null,t.h=e.h,t}}class en{root=null;insertCount=0;constructor(e,t){void 0!==e&&void 0!==t&&(this.root=new er(e,t))}insert(e,t,r=1e3){this.root=this.insertNode(this.root,e,t,r)}insertMultiple(e,t,r=1e3){for(let n of t)this.insert(e,n,r)}rebalance(){this.root&&(this.root=this.rebalanceNode(this.root))}toJSON(){return{root:this.root?this.root.toJSON():null,insertCount:this.insertCount}}static fromJSON(e){let t=new en;return t.root=e.root?er.fromJSON(e.root):null,t.insertCount=e.insertCount||0,t}insertNode(e,t,r,n){if(null===e)return new er(t,[r]);let o=[],i=e,s=null;for(;null!==i;)if(o.push({parent:s,node:i}),ti.k))return i.v.add(r),e;else if(null===i.r){i.r=new er(t,[r]),o.push({parent:i,node:i.r});break}else s=i,i=i.r;let a=!1;this.insertCount++%n==0&&(a=!0);for(let t=o.length-1;t>=0;t--){let{parent:r,node:n}=o[t];if(n.updateHeight(),a){let t=this.rebalanceNode(n);r?r.l===n?r.l=t:r.r===n&&(r.r=t):e=t}}return e}rebalanceNode(e){let t=e.getBalanceFactor();if(t>1){if(e.l&&e.l.getBalanceFactor()>=0)return e.rotateRight();else if(e.l)return e.l=e.l.rotateLeft(),e.rotateRight()}if(t<-1){if(e.r&&0>=e.r.getBalanceFactor())return e.rotateLeft();else if(e.r)return e.r=e.r.rotateRight(),e.rotateLeft()}return e}find(e){let t=this.findNodeByKey(e);return t?t.v:null}contains(e){return null!==this.find(e)}getSize(){let e=0,t=[],r=this.root;for(;r||t.length>0;){for(;r;)t.push(r),r=r.l;r=t.pop(),e++,r=r.r}return e}isBalanced(){if(!this.root)return!0;let e=[this.root];for(;e.length>0;){let t=e.pop();if(Math.abs(t.getBalanceFactor())>1)return!1;t.l&&e.push(t.l),t.r&&e.push(t.r)}return!0}remove(e){this.root=this.removeNode(this.root,e)}removeDocument(e,t){let r=this.findNodeByKey(e);r&&(1===r.v.size?this.root=this.removeNode(this.root,e):r.v=new Set([...r.v.values()].filter(e=>e!==t)))}findNodeByKey(e){let t=this.root;for(;t;)if(et.k))return t;t=t.r}return null}removeNode(e,t){if(null===e)return null;let r=[],n=e;for(;null!==n&&n.k!==t;)r.push(n),n=t=0;t--){let n=r[t];n.updateHeight();let o=this.rebalanceNode(n);if(t>0){let e=r[t-1];e.l===n?e.l=o:e.r===n&&(e.r=o)}else e=o}return e}rangeSearch(e,t){let r=new Set,n=[],o=this.root;for(;o||n.length>0;){for(;o;)n.push(o),o=o.l;if((o=n.pop()).k>=e&&o.k<=t&&(r=_(r,o.v)),o.k>t)break;o=o.r}return r}greaterThan(e,t=!1){let r=new Set,n=[],o=this.root;for(;o||n.length>0;){for(;o;)n.push(o),o=o.r;if(o=n.pop(),t&&o.k>=e||!t&&o.k>e)r=_(r,o.v);else if(o.k<=e)break;o=o.l}return r}lessThan(e,t=!1){let r=new Set,n=[],o=this.root;for(;o||n.length>0;){for(;o;)n.push(o),o=o.l;if(o=n.pop(),t&&o.k<=e||!t&&o.ke)break;o=o.r}return r}}class eo{numberToDocumentId;constructor(){this.numberToDocumentId=new Map}insert(e,t){this.numberToDocumentId.has(e)?this.numberToDocumentId.get(e).add(t):this.numberToDocumentId.set(e,new Set([t]))}find(e){let t=this.numberToDocumentId.get(e);return t?Array.from(t):null}remove(e){this.numberToDocumentId.delete(e)}removeDocument(e,t){let r=this.numberToDocumentId.get(t);r&&(r.delete(e),0===r.size&&this.numberToDocumentId.delete(t))}contains(e){return this.numberToDocumentId.has(e)}getSize(){let e=0;for(let t of this.numberToDocumentId.values())e+=t.size;return e}filter(e){let t=Object.keys(e);if(1!==t.length)throw Error("Invalid operation");let r=t[0];switch(r){case"eq":{let t=e[r],n=this.numberToDocumentId.get(t);return n?Array.from(n):[]}case"in":{let t=e[r],n=new Set;for(let e of t){let t=this.numberToDocumentId.get(e);if(t)for(let e of t)n.add(e)}return Array.from(n)}case"nin":{let t=new Set(e[r]),n=new Set;for(let[e,r]of this.numberToDocumentId.entries())if(!t.has(e))for(let e of r)n.add(e);return Array.from(n)}default:throw Error("Invalid operation")}}filterArr(e){let t=Object.keys(e);if(1!==t.length)throw Error("Invalid operation");let r=t[0];switch(r){case"containsAll":{let t=e[r].map(e=>this.numberToDocumentId.get(e)??new Set);if(0===t.length)return[];return Array.from(t.reduce((e,t)=>new Set([...e].filter(e=>t.has(e)))))}case"containsAny":{let t=e[r].map(e=>this.numberToDocumentId.get(e)??new Set);if(0===t.length)return[];return Array.from(t.reduce((e,t)=>new Set([...e,...t])))}default:throw Error("Invalid operation")}}static fromJSON(e){if(!e.numberToDocumentId)throw Error("Invalid Flat Tree JSON");let t=new eo;for(let[r,n]of e.numberToDocumentId)t.numberToDocumentId.set(r,new Set(n));return t}toJSON(){return{numberToDocumentId:Array.from(this.numberToDocumentId.entries()).map(([e,t])=>[e,Array.from(t)])}}}function ei(e,t,r){let n=function(e,t,r){if(r<0)return -1;if(e===t)return 0;let n=e.length,o=t.length;if(0===n)return o<=r?o:-1;if(0===o)return n<=r?n:-1;let i=Math.abs(n-o);if(e.startsWith(t))return i<=r?i:-1;if(t.startsWith(e))return 0;if(i>r)return -1;let s=[];for(let e=0;e<=n;e++){s[e]=[e];for(let t=1;t<=o;t++)s[e][t]=0===e?t:0}for(let i=1;i<=n;i++){let n=1/0;for(let r=1;r<=o;r++)e[i-1]===t[r-1]?s[i][r]=s[i-1][r-1]:s[i][r]=Math.min(s[i-1][r]+1,s[i][r-1]+1,s[i-1][r-1]+1),n=Math.min(n,s[i][r]);if(n>r)return -1}return s[n][o]<=r?s[n][o]:-1}(e,t,r);return{distance:n,isBounded:n>=0}}class es{k;s;c=new Map;d=new Set;e;w="";constructor(e,t,r){this.k=e,this.s=t,this.e=r}updateParent(e){this.w=e.w+this.s}addDocument(e){this.d.add(e)}removeDocument(e){return this.d.delete(e)}findAllWords(e,t,r,n){let o=[this];for(;o.length>0;){let i=o.pop();if(i.e){let{w:o,d:s}=i;if(r&&o!==t)continue;if(null!==b(e,o))if(n){if(!(Math.abs(t.length-o.length)<=n)||!ei(t,o,n).isBounded)continue;e[o]=[]}else e[o]=[];if(null!=b(e,o)&&s.size>0){let t=e[o];for(let e of s)t.includes(e)||t.push(e)}}i.c.size>0&&o.push(...i.c.values())}return e}insert(e,t){let r=this,n=0,o=e.length;for(;n0;){let{node:t,index:r,tolerance:s}=i.pop();if(t.w.startsWith(e)){t.findAllWords(o,e,!1,0);continue}if(s<0)continue;if(t.e){let{w:r,d:i}=t;if(r&&(ei(e,r,n).isBounded&&(o[r]=[]),void 0!==b(o,r)&&i.size>0)){let e=new Set(o[r]);for(let t of i)e.add(t);o[r]=Array.from(e)}}if(r>=e.length)continue;let a=e[r];if(t.c.has(a)){let e=t.c.get(a);i.push({node:e,index:r+1,tolerance:s})}for(let[e,n]of(i.push({node:t,index:r+1,tolerance:s-1}),t.c))i.push({node:n,index:r,tolerance:s-1}),e!==a&&i.push({node:n,index:r+1,tolerance:s-1})}}find(e){let{term:t,exact:r,tolerance:n}=e;if(n&&!r){let e={};return this._findLevenshtein(t,0,n,n,e),e}{let e=this,o=0,i=t.length;for(;o0&&0===t.c.size&&!t.e&&0===t.d.size;){let{parent:e,character:r}=n.pop();e.c.delete(r),t=e}return!0}removeDocumentByWord(e,t,r=!0){if(!e)return!0;let n=this,o=e.length;for(let i=0;i[e,t.toJSON()])}}static fromJSON(e){let t=new es(e.k,e.s,e.e);return t.w=e.w,t.d=new Set(e.d),t.c=new Map(e?.c?.map(([e,t])=>[e,es.fromJSON(t)])),t}}class ea extends es{constructor(){super("","",!1)}static fromJSON(e){let t=new ea;return t.w=e.w,t.s=e.s,t.e=e.e,t.k=e.k,t.d=new Set(e.d),t.c=new Map(e.c?.map(([e,t])=>[e,es.fromJSON(t)])),t}toJSON(){return super.toJSON()}}class el{point;docIDs;left;right;parent;constructor(e,t){this.point=e,this.docIDs=new Set(t),this.left=null,this.right=null,this.parent=null}toJSON(){return{point:this.point,docIDs:Array.from(this.docIDs),left:this.left?this.left.toJSON():null,right:this.right?this.right.toJSON():null}}static fromJSON(e,t=null){let r=new el(e.point,e.docIDs);return r.parent=t,e.left&&(r.left=el.fromJSON(e.left,r)),e.right&&(r.right=el.fromJSON(e.right,r)),r}}class eu{root;nodeMap;constructor(){this.root=null,this.nodeMap=new Map}getPointKey(e){return`${e.lon},${e.lat}`}insert(e,t){let r=this.getPointKey(e),n=this.nodeMap.get(r);if(n)return void t.forEach(e=>n.docIDs.add(e));let o=new el(e,t);if(this.nodeMap.set(r,o),null==this.root){this.root=o;return}let i=this.root,s=0;for(;;){if(0==s%2)if(e.lon0;){let{node:n,depth:o}=s.pop();if(null==n)continue;let l=i(e,n.point);(r?l<=t:l>t)&&a.push({point:n.point,docIDs:Array.from(n.docIDs)}),null!=n.left&&s.push({node:n.left,depth:o+1}),null!=n.right&&s.push({node:n.right,depth:o+1})}return n&&a.sort((t,r)=>{let o=i(e,t.point),s=i(e,r.point);return"asc"===n.toLowerCase()?o-s:s-o}),a}searchByPolygon(e,t=!0,r=null,n=!1){let o=[{node:this.root,depth:0}],i=[];for(;o.length>0;){let{node:r,depth:n}=o.pop();if(null==r)continue;null!=r.left&&o.push({node:r.left,depth:n+1}),null!=r.right&&o.push({node:r.right,depth:n+1});let s=eu.isPointInPolygon(e,r.point);(s&&t||!s&&!t)&&i.push({point:r.point,docIDs:Array.from(r.docIDs)})}let s=eu.calculatePolygonCentroid(e);if(r){let e=n?eu.vincentyDistance:eu.haversineDistance;i.sort((t,n)=>{let o=e(s,t.point),i=e(s,n.point);return"asc"===r.toLowerCase()?o-i:i-o})}return i}toJSON(){return{root:this.root?this.root.toJSON():null}}static fromJSON(e){let t=new eu;return e.root&&(t.root=el.fromJSON(e.root),t.buildNodeMap(t.root)),t}buildNodeMap(e){if(null==e)return;let t=this.getPointKey(e.point);this.nodeMap.set(t,e),e.left&&this.buildNodeMap(e.left),e.right&&this.buildNodeMap(e.right)}static calculatePolygonCentroid(e){let t=0,r=0,n=0,o=e.length;for(let i=0,s=o-1;io!=u>o&&n<(l-i)*(o-a)/(u-a)+i&&(r=!r)}return r}static haversineDistance(e,t){let r=Math.PI/180,n=e.lat*r,o=t.lat*r,i=(t.lat-e.lat)*r,s=(t.lon-e.lon)*r,a=Math.sin(i/2)*Math.sin(i/2)+Math.cos(n)*Math.cos(o)*Math.sin(s/2)*Math.sin(s/2);return 2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))*6371e3}static vincentyDistance(e,t){let r,n,o,i,s,a,l,u=1/298.257223563,c=(1-1/298.257223563)*6378137,f=Math.PI/180,d=e.lat*f,h=t.lat*f,p=(t.lon-e.lon)*f,g=Math.atan((1-u)*Math.tan(d)),m=Math.atan((1-u)*Math.tan(h)),y=Math.sin(g),b=Math.cos(g),S=Math.sin(m),I=Math.cos(m),w=p,O=1e3;do{let e=Math.sin(w),t=Math.cos(w);if(0===(n=Math.sqrt(I*e*(I*e)+(b*S-y*I*t)*(b*S-y*I*t))))return 0;i=Math.atan2(n,o=y*S+b*I*t),isNaN(l=o-2*y*S/(a=1-(s=b*I*e/n)*s))&&(l=0);let c=u/16*a*(4+u*(4-3*a));r=w,w=p+(1-c)*u*s*(i+c*n*(l+c*o*(-1+2*l*l)))}while(Math.abs(w-r)>1e-12&&--O>0);if(0===O)return NaN;let T=a*(0x24ffb2985f71-c*c)/(c*c),N=1+T/16384*(4096+T*(-768+T*(320-175*T))),D=T/1024*(256+T*(-128+T*(74-47*T)));return c*N*(i-D*n*(l+D/4*(o*(-1+2*l*l)-D/6*l*(-3+4*n*n)*(-3+4*l*l))))}}class ec{true;false;constructor(){this.true=new Set,this.false=new Set}insert(e,t){t?this.true.add(e):this.false.add(e)}delete(e,t){t?this.true.delete(e):this.false.delete(e)}getSize(){return this.true.size+this.false.size}toJSON(){return{true:Array.from(this.true),false:Array.from(this.false)}}static fromJSON(e){let t=new ec;return t.true=new Set(e.true),t.false=new Set(e.false),t}}class ef{size;vectors=new Map;constructor(e){this.size=e}add(e,t){t instanceof Float32Array||(t=new Float32Array(t));let r=ed(t,this.size);this.vectors.set(e,[r,t])}remove(e){this.vectors.delete(e)}find(e,t,r){return e instanceof Float32Array||(e=new Float32Array(e)),function(e,t,r,n,o){let i=ed(e,n),s=[];for(let a of t||r.keys()){let t=r.get(a);if(!t)continue;let l=t[0],u=t[1],c=0;for(let t=0;t=o&&s.push([a,f])}return s}(e,r,this.vectors,this.size,t)}toJSON(){let e=[];for(let[t,[r,n]]of this.vectors)e.push([t,[r,Array.from(n)]]);return{size:this.size,vectors:e}}static fromJSON(e){let t=new ef(e.size);for(let[r,[n,o]]of e.vectors)t.vectors.set(r,[n,new Float32Array(o)]);return t}}function ed(e,t){let r=0;for(let n=0;n1?e.avgFieldLength[t]=(e.avgFieldLength[t]*n-e.fieldLengths[t][o])/(n-1):e.avgFieldLength[t]=void 0,e.fieldLengths[t][o]=void 0,e.frequencies[t][o]=void 0}function em(e,t,r){e.tokenOccurrences[t][r]--}function ey(e,t,r,n,o,i,s,a,l,u,c){if(C(s)){var f,d,h,p,g;return f=t,d=r,h=i,p=0,g=o,void f.vectorIndexes[d].node.add(g,h)}let m=n=>{let{type:i,node:s}=t.indexes[r];switch(i){case"Bool":s[n?"true":"false"].add(o);break;case"AVL":{let e=c?.avlRebalanceThreshold??1;s.insert(n,o,e);break}case"Radix":{let i=l.tokenize(n,a,r,!1);for(let n of(e.insertDocumentScoreParameters(t,r,o,i,u),i))e.insertTokenScoreParameters(t,r,o,i,n),s.insert(n,o);break}case"Flat":s.insert(n,o);break;case"BKD":s.insert(n,[o])}};if(!z(s))return m(i);let y=i.length;for(let e=0;e0&&g.set(o,!0);let y=h.length;for(let t=0;t[e,t]).sort((e,t)=>t[1]-e[1]);if(0===y.length)return[];if(1===f)return y;if(0===f){if(1===h)return y;for(let e of d)if(!g.get(e))return[];return y.filter(([e])=>{let t=p.get(e);return!!t&&Array.from(t.values()).some(e=>e===h)})}let b=y.filter(([e])=>{let t=p.get(e);return!!t&&Array.from(t.values()).some(e=>e===h)});if(b.length>0){let e=y.filter(([e])=>!b.some(([t])=>t===e)),t=Math.ceil(e.length*f);return[...b,...e.slice(0,t)]}return y}function eO(e,t,r,n){let o=Object.keys(r),i=o.reduce((e,t)=>({[t]:new Set,...e}),{});for(let s of o){let o=r[s];if(void 0===e.indexes[s])throw k("UNKNOWN_FILTER_PROPERTY",s);let{node:a,type:l,isArray:u}=e.indexes[s];if("Bool"===l){let e=o?a.true:a.false;i[s]=_(i[s],e);continue}if("BKD"===l){let e;if("radius"in o)e="radius";else if("polygon"in o)e="polygon";else throw Error(`Invalid operation ${o}`);if("radius"===e){let{value:t,coordinates:r,unit:n="m",inside:l=!0,highPrecision:u=!1}=o[e],c=function(e,t){let r=O[t];if(void 0===r)throw Error(k("INVALID_DISTANCE_SUFFIX",e).message);return e*r}(t,n),f=a.searchByRadius(r,c,l,void 0,u);i[s]=e_(i[s],f)}else{let{coordinates:t,inside:r=!0,highPrecision:n=!1}=o[e],l=a.searchByPolygon(t,r,void 0,n);i[s]=e_(i[s],l)}continue}if("Radix"===l&&("string"==typeof o||Array.isArray(o))){for(let e of[o].flat())for(let r of t.tokenize(e,n,s)){let e=a.find({term:r,exact:!0});i[s]=function(e,t){e||(e=new Set);let r=Object.keys(t),n=r.length;for(let o=0;o1)throw k("INVALID_FILTER_OPERATION",c.length);if("Flat"===l){let e=new Set(u?a.filterArr(o):a.filter(o));i[s]=_(i[s],e);continue}if("AVL"===l){let e,t=c[0],r=o[t];switch(t){case"gt":e=a.greaterThan(r,!1);break;case"gte":e=a.greaterThan(r,!0);break;case"lt":e=a.lessThan(r,!1);break;case"lte":e=a.lessThan(r,!0);break;case"eq":e=a.find(r)??new Set;break;case"between":{let[t,n]=r;e=a.rangeSearch(t,n);break}default:throw k("INVALID_FILTER_OPERATION",t)}i[s]=_(i[s],e)}}return function(...e){if(0===e.length)return new Set;if(1===e.length)return e[0];if(2===e.length){let t=e[0],r=e[1];if(D)return t.intersection(r);let n=new Set,o=t.size!r.orderedDocsToRemove.has(e[0])),r.orderedDocsToRemove.clear())}function eC(e,t,r){if(!e.enabled)return;let n=e.sorts[t],o=V(e.sharedInternalDocumentStore,r);n.docs.get(o)&&(n.docs.delete(o),n.orderedDocsToRemove.set(o,!0))}function ez(e,t,r){if(!e.enabled)throw k("SORT_DISABLED");let n=r.property,o="DESC"===r.order,i=e.sorts[n];if(!i)throw k("UNABLE_TO_SORT_ON_UNKNOWN_FIELD",n,e.sortableProperties.join(", "));return eM(e,n),ek(e),t.sort((t,r)=>{let n=i.docs.get(V(e.sharedInternalDocumentStore,t[0])),s=i.docs.get(V(e.sharedInternalDocumentStore,r[0])),a=void 0!==n,l=void 0!==s;return a||l?a?l?o?s-n:n-s:-1:1:0}),t}function eU(e){return e.enabled?e.sortableProperties:[]}function eL(e){return e.enabled?e.sortablePropertiesWithTypes:{}}function eB(e,t){if(!t.enabled)return{enabled:!1};let r=Object.keys(t.sorts).reduce((e,r)=>{let{docs:n,orderedDocs:o,type:i}=t.sorts[r];return e[r]={docs:new Map(Object.entries(n).map(([e,t])=>[+e,t])),orderedDocsToRemove:new Map,orderedDocs:o,type:i},e},{});return{sharedInternalDocumentStore:e,language:t.language,sortableProperties:t.sortableProperties,sortablePropertiesWithTypes:t.sortablePropertiesWithTypes,sorts:r,enabled:!0,isSorted:t.isSorted}}function eV(e){if(!e.enabled)return{enabled:!1};for(let t of Object.keys(e.sorts))eM(e,t);ek(e);let t=Object.keys(e.sorts).reduce((t,r)=>{let{docs:n,orderedDocs:o,type:i}=e.sorts[r];return t[r]={docs:Object.fromEntries(n.entries()),orderedDocs:o,type:i},t},{});return{language:e.language,sortableProperties:e.sortableProperties,sortablePropertiesWithTypes:e.sortablePropertiesWithTypes,sorts:t,enabled:e.enabled,isSorted:e.isSorted}}let eF=[65,65,65,65,65,65,65,67,69,69,69,69,73,73,73,73,69,78,79,79,79,79,79,null,79,85,85,85,85,89,80,115,97,97,97,97,97,97,97,99,101,101,101,101,105,105,105,105,101,110,111,111,111,111,111,null,111,117,117,117,117,121,112,121,65,97,65,97,65,97,67,99,67,99,67,99,67,99,68,100,68,100,69,101,69,101,69,101,69,101,69,101,71,103,71,103,71,103,71,103,72,104,72,104,73,105,73,105,73,105,73,105,73,105,73,105,74,106,75,107,107,76,108,76,108,76,108,76,108,76,108,78,110,78,110,78,110,110,78,110,79,111,79,111,79,111,79,111,82,114,82,114,82,114,83,115,83,115,83,115,83,115,84,116,84,116,84,116,85,117,85,117,85,117,85,117,85,117,85,117,87,119,89,121,89,90,122,90,122,90,122,115],eW={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},ej={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},e$="[aeiouy]",eJ="[^aeiou][^aeiouy]*",eG=e$+"[aeiou]*",eY="^("+eJ+")?"+eG+eJ,eH="^("+eJ+")?"+eG+eJ+"("+eG+")?$",eK="^("+eJ+")?"+eG+eJ+eG+eJ,eq="^("+eJ+")?"+e$;function eX(e){let t,r,n,o,i,s;if(e.length<3)return e;let a=e.substring(0,1);if("y"==a&&(e=a.toUpperCase()+e.substring(1)),o=/^(.+?)([^s])s$/,(n=/^(.+?)(ss|i)es$/).test(e)?e=e.replace(n,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=/^(.+?)(ed|ing)$/,(n=/^(.+?)eed$/).test(e)){let t=n.exec(e);(n=new RegExp(eY)).test(t[1])&&(n=/.$/,e=e.replace(n,""))}else o.test(e)&&(t=o.exec(e)[1],(o=new RegExp(eq)).test(t)&&(e=t,o=/(at|bl|iz)$/,i=RegExp("([^aeiouylsz])\\1$"),s=RegExp("^"+eJ+e$+"[^aeiouwxy]$"),o.test(e)?e+="e":i.test(e)?(n=/.$/,e=e.replace(n,"")):s.test(e)&&(e+="e")));if((n=/^(.+?)y$/).test(e)){let r=n.exec(e);t=r?.[1],n=new RegExp(eq),t&&n.test(t)&&(e=t+"i")}if((n=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/).test(e)){let o=n.exec(e);t=o?.[1],r=o?.[2],n=new RegExp(eY),t&&n.test(t)&&(e=t+eW[r])}if((n=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/).test(e)){let o=n.exec(e);t=o?.[1],r=o?.[2],n=new RegExp(eY),t&&n.test(t)&&(e=t+ej[r])}if(o=/^(.+?)(s|t)(ion)$/,(n=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/).test(e)){let r=n.exec(e);t=r?.[1],n=new RegExp(eK),t&&n.test(t)&&(e=t)}else if(o.test(e)){let r=o.exec(e);t=r?.[1]??""+r?.[2]??"",(o=new RegExp(eK)).test(t)&&(e=t)}if((n=/^(.+?)e$/).test(e)){let r=n.exec(e);t=r?.[1],n=new RegExp(eK),o=new RegExp(eH),i=RegExp("^"+eJ+e$+"[^aeiouwxy]$"),t&&(n.test(t)||o.test(t)&&!i.test(t))&&(e=t)}return n=/ll$/,o=new RegExp(eK),n.test(e)&&o.test(e)&&(n=/.$/,e=e.replace(n,"")),"y"==a&&(e=a.toLowerCase()+e.substring(1)),e}function eZ(e,t,r=!0){let n=`${this.language}:${e}:${t}`;return r&&this.normalizationCache.has(n)?this.normalizationCache.get(n):this.stopWords?.includes(t)?(r&&this.normalizationCache.set(n,""),""):(this.stemmer&&!this.stemmerSkipProperties.has(e)&&(t=this.stemmer(t)),t=function(e){let t=[];for(let n=0;n383?r:eF[r-192]||r}return String.fromCharCode(...t)}(t),r&&this.normalizationCache.set(n,t),t)}function eQ(e,t,r,n=!0){let o;if(t&&t!==this.language)throw k("LANGUAGE_NOT_SUPPORTED",t);if("string"!=typeof e)return[e];let s=this.normalizeToken.bind(this,r??"");if(r&&this.tokenizeSkipProperties.has(r))o=[s(e,n)];else{let t=i[this.language];o=e.toLowerCase().split(t).map(e=>s(e,n)).filter(Boolean)}let a=function(e){for(;""===e[e.length-1];)e.pop();for(;""===e[0];)e.shift();return e}(o);return this.allowDuplicates?a:Array.from(new Set(a))}function e0(e={}){let t,r;if(e.language){if(!s.includes(e.language))throw k("LANGUAGE_NOT_SUPPORTED",e.language)}else e.language="english";if(e.stemming||e.stemmer&&!("stemming"in e))if(e.stemmer){if("function"!=typeof e.stemmer)throw k("INVALID_STEMMER_FUNCTION_TYPE");t=e.stemmer}else if("english"===e.language)t=eX;else throw k("MISSING_STEMMER",e.language);if(!1!==e.stopWords){if(r=[],Array.isArray(e.stopWords))r=e.stopWords;else if("function"==typeof e.stopWords)r=e.stopWords(r);else if(e.stopWords)throw k("CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY");if(!Array.isArray(r))throw k("CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY");for(let e of r)if("string"!=typeof e)throw k("CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY")}let n={tokenize:eQ,language:e.language,stemmer:t,stemmerSkipProperties:new Set(e.stemmerSkipProperties?[e.stemmerSkipProperties].flat():[]),tokenizeSkipProperties:new Set(e.tokenizeSkipProperties?[e.tokenizeSkipProperties].flat():[]),stopWords:r,allowDuplicates:!!e.allowDuplicates,normalizeToken:eZ,normalizationCache:new Map};return n.tokenize=eQ.bind(n),n.normalizeToken=eZ,n}function e1(e,t,r,n,o){let i=e.validateSchema(t,e.schema);if(i)throw createError("SCHEMA_VALIDATION_FAILURE",i);return isAsyncFunction(e.beforeInsert)||isAsyncFunction(e.afterInsert)||isAsyncFunction(e.index.beforeInsert)||isAsyncFunction(e.index.insert)||isAsyncFunction(e.index.afterInsert)?e2(e,t,r,n,o):function(e,t,r,n,o){let{index:i,docs:s}=e.data,a=e.getDocumentIndexId(t);if("string"!=typeof a)throw createError("DOCUMENT_ID_MUST_BE_STRING",typeof a);let l=getInternalDocumentId(e.internalDocumentIDStore,a);if(!e.documentsStore.store(s,a,l,t))throw createError("DOCUMENT_ALREADY_EXISTS",a);let u=e.documentsStore.count(s);n||runSingleHook(e.beforeInsert,e,a,t);let c=e.index.getSearchableProperties(i),f=e.index.getSearchablePropertiesWithTypes(i),d=e.getDocumentProperties(t,c);for(let[e,t]of Object.entries(d))void 0!==t&&e5(typeof t,f[e],e,t);return function(e,t,r,n,o,i,s,a){for(let s of r){let r=n[s];if(void 0===r)continue;let l=e.index.getSearchablePropertiesWithTypes(e.data.index)[s],u=getInternalDocumentId(e.internalDocumentIDStore,t);e.index.beforeInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o),e.index.insert(e.index,e.data.index,s,t,u,r,l,i,e.tokenizer,o,a),e.index.afterInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o)}let l=e.sorter.getSortableProperties(e.data.sorting),u=e.getDocumentProperties(s,l);for(let r of l){let n=u[r];if(void 0===n)continue;let o=e.sorter.getSortablePropertiesWithTypes(e.data.sorting)[r];e.sorter.insert(e.data.sorting,r,t,n,o,i)}}(e,a,c,d,u,r,t,o),n||runSingleHook(e.afterInsert,e,a,t),trackInsertion(e),a}(e,t,r,n,o)}Symbol("orama.insertions"),Symbol("orama.removals"),globalThis.process?.emitWarning;let e9=new Set(["enum","enum[]"]),e7=new Set(["string","number"]);async function e2(e,t,r,n,o){let{index:i,docs:s}=e.data,a=e.getDocumentIndexId(t);if("string"!=typeof a)throw createError("DOCUMENT_ID_MUST_BE_STRING",typeof a);let l=getInternalDocumentId(e.internalDocumentIDStore,a);if(!e.documentsStore.store(s,a,l,t))throw createError("DOCUMENT_ALREADY_EXISTS",a);let u=e.documentsStore.count(s);n||await runSingleHook(e.beforeInsert,e,a,t);let c=e.index.getSearchableProperties(i),f=e.index.getSearchablePropertiesWithTypes(i),d=e.getDocumentProperties(t,c);for(let[e,t]of Object.entries(d))void 0!==t&&e5(typeof t,f[e],e,t);return await e3(e,a,c,d,u,r,t,o),n||await runSingleHook(e.afterInsert,e,a,t),trackInsertion(e),a}function e5(e,t,r,n){if(!(isGeoPointType(t)&&"object"==typeof n&&"number"==typeof n.lon&&"number"==typeof n.lat||isVectorType(t)&&Array.isArray(n)||isArrayType(t)&&Array.isArray(n))&&!(e9.has(t)&&e7.has(e))&&e!==t)throw createError("INVALID_DOCUMENT_PROPERTY",r,t,e)}async function e3(e,t,r,n,o,i,s,a){for(let s of r){let r=n[s];if(void 0===r)continue;let l=e.index.getSearchablePropertiesWithTypes(e.data.index)[s];await e.index.beforeInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o);let u=e.internalDocumentIDStore.idToInternalId.get(t);await e.index.insert(e.index,e.data.index,s,t,u,r,l,i,e.tokenizer,o,a),await e.index.afterInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o)}let l=e.sorter.getSortableProperties(e.data.sorting),u=e.getDocumentProperties(s,l);for(let r of l){let n=u[r];if(void 0===n)continue;let o=e.sorter.getSortablePropertiesWithTypes(e.data.sorting)[r];e.sorter.insert(e.data.sorting,r,t,n,o,i)}}async function e6(e,t,r,n){let o=!0,{index:i,docs:s}=e.data,a=e.documentsStore.get(s,t);if(!a)return!1;let l=getInternalDocumentId(e.internalDocumentIDStore,t),u=getDocumentIdFromInternalId(e.internalDocumentIDStore,l),c=e.documentsStore.count(s);n||await runSingleHook(e.beforeRemove,e,u);let f=e.index.getSearchableProperties(i),d=e.index.getSearchablePropertiesWithTypes(i),h=e.getDocumentProperties(a,f);for(let n of f){let i=h[n];if(void 0===i)continue;let s=d[n];await e.index.beforeRemove?.(e.data.index,n,u,i,s,r,e.tokenizer,c),await e.index.remove(e.index,e.data.index,n,t,l,i,s,r,e.tokenizer,c)||(o=!1),await e.index.afterRemove?.(e.data.index,n,u,i,s,r,e.tokenizer,c)}let p=await e.sorter.getSortableProperties(e.data.sorting),g=await e.getDocumentProperties(a,p);for(let r of p)void 0!==g[r]&&e.sorter.remove(e.data.sorting,r,t);return n||await runSingleHook(e.afterRemove,e,u),e.documentsStore.remove(e.data.docs,t,l),trackRemoval(e),o}let e8="fulltext";function e4(e,t){return e[1]-t[1]}function te(e,t){return t[1]-e[1]}function tt(e,t,r){let n={},o=t.map(([e])=>e),i=e.documentsStore.getMultiple(e.data.docs,o),s=Object.keys(r),a=e.index.getSearchablePropertiesWithTypes(e.data.index);for(let e of s){let t;if("number"===a[e]){let{ranges:n}=r[e],o=n.length,i=Array.from({length:o});for(let e=0;e{for(let o of e){let e=`${o.from}-${o.to}`;!r?.has(e)&&n>=o.from&&n<=o.to&&(void 0===t[e]?t[e]=1:(t[e]++,r?.add(e)))}}}function tn(e,t,r){let n="boolean"===t?"false":"";return t=>{let o=t?.toString()??n;r?.has(o)||(e[o]=(e[o]??0)+1,r?.add(o))}}let to={reducer:(e,t,r,n)=>(t[n]=r,t),getInitialValue:e=>Array.from({length:e})},ti=["string","number","boolean"];function ts(e,t,r){let n=r.properties,o=n.length,i=e.index.getSearchablePropertiesWithTypes(e.data.index);for(let e=0;eF(e.internalDocumentIDStore,t)),a=e.documentsStore.getMultiple(e.data.docs,s),l=a.length,u=r.maxResult||Number.MAX_SAFE_INTEGER,c=[],f={};for(let e=0;e=u||(s.indexes.push(e),s.count++,r.perValue[i]=s,o.add(n))}c.push(Array.from(o)),f[t]=r}let d=function e(t,r=0){if(r+1===t.length)return t[r].map(e=>[e]);let n=t[r],o=e(t,r+1),i=[];for(let e of n)for(let t of o){let r=[e];h(r,t),i.push(r)}return i}(c),p=d.length,g=[];for(let e=0;e{let n=t.get(r);return void 0!==n&&t.set(r,0),n===e.length})})(i).sort((e,t)=>e-t),0!==o.indexes.length&&g.push(o)}let m=g.length,y=Array.from({length:m});for(let e=0;e({id:s[e],score:t[e][1],document:a[e]})),l=o.reducer.bind(null,n.values),u=o.getInitialValue(n.indexes.length),c=i.reduce(l,u);y[e]={values:n.values,result:c}}return y}function ta(e,t,r){let n,o,{term:i,properties:s}=t,a=e.data.index,l=e.caches.propertiesToSearch;if(!l){let t=e.index.getSearchablePropertiesWithTypes(a);l=(l=e.index.getSearchableProperties(a)).filter(e=>t[e].startsWith("string")),e.caches.propertiesToSearch=l}if(s&&"*"!==s){for(let e of s)if(!l.includes(e))throw k("UNKNOWN_INDEX",e,l.join(", "));l=l.filter(e=>s.includes(e))}Object.keys(t.where??{}).length>0&&(n=e.index.searchByWhereClause(a,e.tokenizer,t.where,r));let u=void 0!==t.threshold&&null!==t.threshold?t.threshold:1;if(i||s){let s=e.documentsStore.count(e.data.docs);o=e.index.search(a,i||"",e.tokenizer,r,l,t.exact||!1,t.tolerance||0,t.boost||{},function(e){let t=e??{};return t.k=t.k??tl.k,t.b=t.b??tl.b,t.d=t.d??tl.d,t}(t.relevance),s,n,u)}else o=(n?Array.from(n):Object.keys(e.documentsStore.getAll(e.data.docs))).map(e=>[+e,0]);return o}let tl={k:1.2,b:.75,d:.5};function tu(e,t,r){let n,o=t.vector;if(o&&(!("value"in o)||!("property"in o)))throw k("INVALID_VECTOR_INPUT",Object.keys(o).join(", "));let i=e.data.index.vectorIndexes[o.property],s=i.node.size;if(o?.value.length!==s){if(o?.property===void 0||o?.value.length===void 0)throw k("INVALID_INPUT_VECTOR","undefined",s,"undefined");throw k("INVALID_INPUT_VECTOR",o.property,s,o.value.length)}let a=e.data.index;return Object.keys(t.where??{}).length>0&&(n=e.index.searchByWhereClause(a,e.tokenizer,t.where,r)),i.node.find(o.value,t.similarity??.8,n)}function tc(e){return e[1]}function tf(e,t,r){let n=t.mode??e8;if(n===e8){let n=m();function o(){let o,i=Object.keys(e.data.index.vectorIndexes),s=t.facets&&Object.keys(t.facets).length>0,{limit:a=10,offset:l=0,distinctOn:u,includeVectors:c=!1}=t,f=!0===t.preflight,d=ta(e,t,r);if(t.sortBy)if("function"==typeof t.sortBy){let r=d.map(([e])=>e),n=e.documentsStore.getMultiple(e.data.docs,r).map((e,t)=>[d[t][0],d[t][1],e]);n.sort(t.sortBy),d=n.map(([e,t])=>[e,t])}else d=e.sorter.sortBy(e.data.sorting,d,t.sortBy).map(([t,r])=>[V(e.internalDocumentIDStore,t),r]);else d=d.sort(S);f||(o=u?function(e,t,r,n,o){let i=e.data.docs,s=new Map,a=[],l=new Set,u=t.length,c=0;for(let f=0;f=r+n)))break}return a}(e,d,l,a,u):td(e,d,l,a));let h={elapsed:{formatted:"",raw:0},hits:[],count:d.length};return void 0!==o&&(h.hits=o.filter(Boolean),c||T(h,i)),s&&(h.facets=tt(e,d,t.facets)),t.groupBy&&(h.groups=ts(e,d,t.groupBy)),h.elapsed=e.formatElapsedTime(m()-n),h}async function i(){e.beforeSearch&&await et(e.beforeSearch,e,t,r);let n=o();return e.afterSearch&&await ee(e.afterSearch,e,t,r,n),n}return e.beforeSearch?.length||e.afterSearch?.length?i():o()}if("vector"===n)return function(e,t,r="english"){let n=m();function o(){let o=tu(e,t,r).sort(S),i=[];t.facets&&Object.keys(t.facets).length>0&&(i=tt(e,o,t.facets));let s=t.vector.property,a=t.includeVectors??!1,l=t.limit??10,u=t.offset??0,c=Array.from({length:l});for(let t=0;t[e,r/t])}(ta(e,t,r)),o=tu(e,t,r),i=t.hybridWeights;return function(e,t,r,n){var o;let i=Math.max.apply(Math,e.map(tc)),s=Math.max.apply(Math,t.map(tc)),{text:a,vector:l}=n&&n.text&&n.vector?n:(o=0,{text:.5,vector:.5}),u=new Map,c=e.length,f=(e,t)=>e*a+t*l;for(let t=0;tt[1]-e[1])}(n,o,t.term??"",i)}(e,t,void 0);t.facets&&Object.keys(t.facets).length>0&&(r=tt(e,i,t.facets)),t.groupBy&&(o=ts(e,i,t.groupBy));let s=td(e,i,t.offset??0,t.limit??10).filter(Boolean),a=m(),l={count:i.length,elapsed:{raw:Number(a-n),formatted:g(a-n)},hits:s,...r?{facets:r}:{},...o?{groups:o}:{}};return t.includeVectors||T(l,Object.keys(e.data.index.vectorIndexes)),l}async function i(){e.beforeSearch&&await et(e.beforeSearch,e,t,void 0);let n=o();return e.afterSearch&&await ee(e.afterSearch,e,t,r,n),n}return e.beforeSearch?.length||e.afterSearch?.length?i():o()}(e,t);throw k("INVALID_SEARCH_MODE",n)}function td(e,t,r,n){let o=e.data.docs,i=Array.from({length:n}),s=new Set;for(let a=r;a({type:"page",content:e.document.title,id:e.document.url,url:e.document.url}))}async function tg(e,t,r,o={}){let i={where:(0,n.B)({tag:r,...o.where}),groupBy:{properties:["page_id"],maxResult:8,...o.groupBy}};t.length>0&&(i={...i,term:t,properties:["content","keywords"],...o,where:i.where,groupBy:i.groupBy});let s=await tf(e,i),a=[];for(let t of s.groups??[]){let r=t.values[0],n=await e.documentsStore.get(e.data.docs,r);if(n)for(let e of(a.push({id:r,type:"page",content:n.content,url:n.url}),t.result))"page"!==e.document.type&&a.push({id:e.document.id.toString(),content:e.document.content,type:e.document.type,url:e.document.url})}return a}function tm({from:e="/api/search",initOrama:t=e=>(function({schema:e,sort:t,language:r,components:n,id:o,plugins:i}){for(let t of(n||(n={}),i??[])){if(!("getComponents"in t)||"function"!=typeof t.getComponents)continue;let r=t.getComponents(e);for(let e of Object.keys(r))if(n[e])throw k("PLUGIN_COMPONENT_CONFLICT",e,t.name);n={...n,...r}}o||(o=y());let s=n.tokenizer,a=n.index,l=n.documentsStore,u=n.sorter;if(s=s?s.tokenize?s:e0(s):e0({language:r??"english"}),n.tokenizer&&r)throw k("NO_LANGUAGE_WITH_CUSTOM_TOKENIZER");let c={idToInternalId:new Map,internalIdToId:[],save:L,load:B};a||={create:function e(t,r,n,o,i=""){for(let[s,a]of(o||(o={sharedInternalDocumentStore:r,indexes:{},vectorIndexes:{},searchableProperties:[],searchablePropertiesWithTypes:{},frequencies:{},tokenOccurrences:{},avgFieldLength:{},fieldLengths:{}}),Object.entries(n))){let n=`${i}${i?".":""}${s}`;if("object"==typeof a&&!Array.isArray(a)){e(t,r,a,o,n);continue}if(C(a))o.searchableProperties.push(n),o.searchablePropertiesWithTypes[n]=a,o.vectorIndexes[n]={type:"Vector",node:new ef(U(a)),isArray:!1};else{let e=/\[/.test(a);switch(a){case"boolean":case"boolean[]":o.indexes[n]={type:"Bool",node:new ec,isArray:e};break;case"number":case"number[]":o.indexes[n]={type:"AVL",node:new en(0,[]),isArray:e};break;case"string":case"string[]":o.indexes[n]={type:"Radix",node:new ea,isArray:e},o.avgFieldLength[n]=0,o.frequencies[n]={},o.tokenOccurrences[n]={},o.fieldLengths[n]={};break;case"enum":case"enum[]":o.indexes[n]={type:"Flat",node:new eo,isArray:e};break;case"geopoint":o.indexes[n]={type:"BKD",node:new eu,isArray:e};break;default:throw k("INVALID_SCHEMA_TYPE",Array.isArray(a)?"array":a,n)}o.searchableProperties.push(n),o.searchablePropertiesWithTypes[n]=a}}return o},insert:ey,remove:eS,insertDocumentScoreParameters:eh,insertTokenScoreParameters:ep,removeDocumentScoreParameters:eg,removeTokenScoreParameters:em,calculateResultScores:eI,search:ew,searchByWhereClause:eO,getSearchableProperties:eT,getSearchablePropertiesWithTypes:eN,load:eD,save:ev},u||={create:eA,insert:eE,remove:eC,save:eV,load:eB,sortBy:ez,getSortableProperties:eU,getSortablePropertiesWithTypes:eL},l||={create:W,get:j,getMultiple:$,getAll:J,store:G,remove:Y,count:H,load:K,save:q};var f=n;let d={formatElapsedTime:P,getDocumentIndexId:x,getDocumentProperties:I,validateSchema:function e(t,r){for(let[n,o]of Object.entries(r)){let r=t[n];if(void 0!==r&&("geopoint"!==o||"object"!=typeof r||"number"!=typeof r.lon||"number"!=typeof r.lat)&&("enum"!==o||"string"!=typeof r&&"number"!=typeof r)){if("enum[]"===o&&Array.isArray(r)){let e=r.length;for(let t=0;t{for(let r of e)await r(t)})();for(let r of e)r(t)}(S,b),b})({schema:{_:"string"},language:e})}){let r=new Map,n=async function(){let n=await fetch(e);if(!n.ok)throw Error(`failed to fetch exported search indexes from ${e}, make sure the search database is exported and available for client.`);let o=await n.json();if("i18n"===o.type)for(let[e,n]of Object.entries(o.data)){let o=await t(e);th(o,n),r.set(e,{type:n.type,db:o})}else{let e=await t();th(e,o),r.set("",{type:o.type,db:e})}}();return{async search(e,t,o){await n;let i=r.get(t??"");return i?"simple"===i.type?tp(i,e):tg(i.db,e,o):[]}}}r(9189)},3522:(e,t,r)=>{r.d(t,{B:()=>function e(t,r=!1){for(let n of Object.keys(t))void 0===t[n]&&delete t[n],r&&"object"==typeof t[n]&&null!==t[n]?e(t[n],r):r&&Array.isArray(t[n])&&t[n].forEach(t=>e(t,r));return t}})}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/477.c67b77b0908a8d3c.js b/docs/_next/static/chunks/477.c67b77b0908a8d3c.js deleted file mode 100644 index 1666ba26..00000000 --- a/docs/_next/static/chunks/477.c67b77b0908a8d3c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[477],{477:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ex});var r,a=n(5155),o=n(5936);n(9189);var l=n(2115),s=n(3259),i=n(9697),d=n(3536);let u=(0,d.A)("text",[["path",{d:"M15 18H3",key:"olowqp"}],["path",{d:"M17 6H3",key:"16j9eg"}],["path",{d:"M21 12H3",key:"2avoz0"}]]),c=(0,d.A)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),f=(0,d.A)("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),p=(0,d.A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);var m=n(7543),x=n(9688),g=n(263),h=n(7936),v=n(5185),y=n(6101),b=n(6081),w=n(1285),j=n(5845),N=n(9178),k=n(7900),D=(n(4378),n(8905)),C=n(3655),R=n(2293),I=n(3795),E=n(8168),A=n(9708),O="Dialog",[P,_]=(0,b.A)(O),[M,F]=P(O),S=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:s,modal:i=!0}=e,d=l.useRef(null),u=l.useRef(null),[c,f]=(0,j.i)({prop:r,defaultProp:null!=o&&o,onChange:s,caller:O});return(0,a.jsx)(M,{scope:t,triggerRef:d,contentRef:u,contentId:(0,w.B)(),titleId:(0,w.B)(),descriptionId:(0,w.B)(),open:c,onOpenChange:f,onOpenToggle:l.useCallback(()=>f(e=>!e),[f]),modal:i,children:n})};S.displayName=O;var z="DialogTrigger";l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(z,n),l=(0,y.s)(t,o.triggerRef);return(0,a.jsx)(C.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":$(o.open),...r,ref:l,onClick:(0,v.m)(e.onClick,o.onOpenToggle)})}).displayName=z;var[T,q]=P("DialogPortal",{forceMount:void 0}),H="DialogOverlay",Q=l.forwardRef((e,t)=>{let n=q(H,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,l=F(H,e.__scopeDialog);return l.modal?(0,a.jsx)(D.C,{present:r||l.open,children:(0,a.jsx)(B,{...o,ref:t})}):null});Q.displayName=H;var L=(0,A.TL)("DialogOverlay.RemoveScroll"),B=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(H,n);return(0,a.jsx)(I.A,{as:L,allowPinchZoom:!0,shards:[o.contentRef],children:(0,a.jsx)(C.sG.div,{"data-state":$(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),G="DialogContent",W=l.forwardRef((e,t)=>{let n=q(G,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,l=F(G,e.__scopeDialog);return(0,a.jsx)(D.C,{present:r||l.open,children:l.modal?(0,a.jsx)(V,{...o,ref:t}):(0,a.jsx)(U,{...o,ref:t})})});W.displayName=G;var V=l.forwardRef((e,t)=>{let n=F(G,e.__scopeDialog),r=l.useRef(null),o=(0,y.s)(t,n.contentRef,r);return l.useEffect(()=>{let e=r.current;if(e)return(0,E.Eq)(e)},[]),(0,a.jsx)(Z,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,v.m)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),null==(t=n.triggerRef.current)||t.focus()}),onPointerDownOutside:(0,v.m)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,v.m)(e.onFocusOutside,e=>e.preventDefault())})}),U=l.forwardRef((e,t)=>{let n=F(G,e.__scopeDialog),r=l.useRef(!1),o=l.useRef(!1);return(0,a.jsx)(Z,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var a,l;null==(a=e.onCloseAutoFocus)||a.call(e,t),t.defaultPrevented||(r.current||null==(l=n.triggerRef.current)||l.focus(),t.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:t=>{var a,l;null==(a=e.onInteractOutside)||a.call(e,t),t.defaultPrevented||(r.current=!0,"pointerdown"===t.detail.originalEvent.type&&(o.current=!0));let s=t.target;(null==(l=n.triggerRef.current)?void 0:l.contains(s))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&o.current&&t.preventDefault()}})}),Z=l.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,...i}=e,d=F(G,n),u=l.useRef(null),c=(0,y.s)(t,u);return(0,R.Oh)(),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(k.n,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:(0,a.jsx)(N.qW,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":$(d.open),...i,ref:c,onDismiss:()=>d.onOpenChange(!1)})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(er,{titleId:d.titleId}),(0,a.jsx)(ea,{contentRef:u,descriptionId:d.descriptionId})]})]})}),J="DialogTitle",K=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(J,n);return(0,a.jsx)(C.sG.h2,{id:o.titleId,...r,ref:t})});K.displayName=J;var X="DialogDescription";l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(X,n);return(0,a.jsx)(C.sG.p,{id:o.descriptionId,...r,ref:t})}).displayName=X;var Y="DialogClose";function $(e){return e?"open":"closed"}l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(Y,n);return(0,a.jsx)(C.sG.button,{type:"button",...r,ref:t,onClick:(0,v.m)(e.onClick,()=>o.onOpenChange(!1))})}).displayName=Y;var ee="DialogTitleWarning",[et,en]=(0,b.q)(ee,{contentName:G,titleName:J,docsSlug:"dialog"}),er=e=>{let{titleId:t}=e,n=en(ee),r="`".concat(n.contentName,"` requires a `").concat(n.titleName,"` for the component to be accessible for screen reader users.\n\nIf you want to hide the `").concat(n.titleName,"`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/").concat(n.docsSlug);return l.useEffect(()=>{t&&(document.getElementById(t)||console.error(r))},[r,t]),null},ea=e=>{let{contentRef:t,descriptionId:n}=e,r=en("DialogDescriptionWarning"),a="Warning: Missing `Description` or `aria-describedby={undefined}` for {".concat(r.contentName,"}.");return l.useEffect(()=>{var e;let r=null==(e=t.current)?void 0:e.getAttribute("aria-describedby");n&&r&&(document.getElementById(n)||console.warn(a))},[a,t,n]),null},eo=n(2085),el=n(8265),es=n(344);function ei(e){let{open:t,onOpenChange:n,footer:r,links:o=[],search:s,onSearchChange:d,isLoading:u,...c}=e,{text:f}=(0,i.s9)(),p=(0,l.useMemo)(()=>o.map(e=>{let[t,n]=e;return{type:"page",id:t,content:t,url:n}}),[o]);return(0,a.jsxs)(S,{open:t,onOpenChange:n,children:[(0,a.jsx)(Q,{className:"fixed inset-0 z-50 bg-black/30 backdrop-blur-sm data-[state=closed]:animate-fd-fade-out data-[state=open]:animate-fd-fade-in"}),(0,a.jsxs)(W,{"aria-describedby":void 0,className:"fixed left-1/2 top-[10vh] z-50 w-[98vw] max-w-screen-sm -translate-x-1/2 rounded-lg border bg-fd-popover text-fd-popover-foreground shadow-lg data-[state=closed]:animate-fd-dialog-out data-[state=open]:animate-fd-dialog-in",children:[(0,a.jsx)(K,{className:"hidden",children:f.search}),(0,a.jsxs)("div",{className:"flex flex-row items-center gap-2 px-3",children:[(0,a.jsx)(ec,{isLoading:null!=u&&u}),(0,a.jsx)("input",{value:s,onChange:e=>{d(e.target.value)},placeholder:f.search,className:"w-0 flex-1 bg-transparent py-3 text-base placeholder:text-fd-muted-foreground focus-visible:outline-none"}),(0,a.jsx)("button",{type:"button","aria-label":"Close Search",onClick:()=>n(!1),className:(0,x.QP)((0,h.r)({color:"outline",className:"text-xs p-1.5"})),children:"Esc"})]}),"empty"!==c.results||p.length>0?(0,a.jsx)(eu,{items:"empty"===c.results?p:c.results,onSelect:()=>n(!1)}):null,r?(0,a.jsx)("div",{className:"mt-auto flex flex-col border-t p-3",children:r}):null]})]})}let ed={text:(0,a.jsx)(u,{className:"size-4 text-fd-muted-foreground"}),heading:(0,a.jsx)(c,{className:"size-4 text-fd-muted-foreground"}),page:(0,a.jsx)(f,{className:"size-4 text-fd-muted-foreground"})};function eu(e){let{items:t,onSelect:n,...r}=e,[o,s]=(0,l.useState)(),{text:d}=(0,i.s9)(),u=(0,es.rd)(),c=(0,g.c)();t.length>0&&(!o||t.every(e=>e.id!==o))&&s(t[0].id);let f=e=>{var t;let{external:r,url:a}=e;r?null==(t=window.open(a,"_blank"))||t.focus():u.push(a),null==n||n(a),c.setOpen(!1)},p=(0,el.J)(e=>{if(("ArrowDown"===e.key||"ArrowUp"==e.key)&&(s(n=>{var r,a;let o=t.findIndex(e=>e.id===n);return -1===o?null==(r=t.at(0))?void 0:r.id:null==(a=t.at(("ArrowDown"===e.key?o+1:o-1)%t.length))?void 0:a.id}),e.preventDefault()),"Enter"===e.key){let n=t.find(e=>e.id===o);n&&f(n),e.preventDefault()}});return(0,l.useEffect)(()=>(window.addEventListener("keydown",p),()=>{window.removeEventListener("keydown",p)}),[p]),(0,a.jsxs)("div",{...r,className:(0,x.QP)("flex max-h-[460px] flex-col overflow-y-auto border-t p-2",r.className),children:[0===t.length?(0,a.jsx)("div",{className:"py-12 text-center text-sm",children:d.searchNoResult}):null,t.map(e=>(0,a.jsxs)(ef,{value:e.id,active:o,onActiveChange:s,onClick:()=>{f(e)},children:["page"!==e.type?(0,a.jsx)("div",{role:"none",className:"ms-2 h-full min-h-10 w-px bg-fd-border"}):null,ed[e.type],(0,a.jsx)("p",{className:"w-0 flex-1 truncate",children:e.content})]},e.id))]})}function ec(e){let{isLoading:t}=e;return(0,a.jsxs)("div",{className:"relative size-4",children:[(0,a.jsx)(p,{className:(0,x.QP)("absolute size-full animate-spin text-fd-primary transition-opacity",!t&&"opacity-0")}),(0,a.jsx)(m.A,{className:(0,x.QP)("absolute size-full text-fd-muted-foreground transition-opacity",t&&"opacity-0")})]})}function ef(e){let{active:t,onActiveChange:n,value:r,...o}=e;return(0,a.jsx)("button",{ref:(0,l.useCallback)(e=>{t===r&&e&&e.scrollIntoView({block:"nearest"})},[t,r]),type:"button","aria-selected":t===r,onPointerMove:()=>n(r),...o,className:(0,x.QP)("flex min-h-10 select-none flex-row items-center gap-2.5 rounded-lg px-2 text-start text-sm",t===r&&"bg-fd-accent text-fd-accent-foreground",o.className),children:o.children})}let ep=(0,eo.F)("rounded-md border px-2 py-0.5 text-xs font-medium text-fd-muted-foreground transition-colors",{variants:{active:{true:"bg-fd-accent text-fd-accent-foreground"}}});function em(e){let{tag:t,onTagChange:n,items:r,allowClear:o,...l}=e;return(0,a.jsxs)("div",{...l,className:(0,x.QP)("flex flex-row items-center gap-1 flex-wrap",l.className),children:[r.map(e=>{var r;return(0,a.jsx)("button",{type:"button","data-active":t===e.value,className:(0,x.QP)(ep({active:t===e.value}),null==(r=e.props)?void 0:r.className),onClick:()=>{t===e.value&&o?n(void 0):n(e.value)},tabIndex:-1,...e.props,children:e.name},e.value)}),l.children]})}function ex(e){var t;let{defaultTag:d,tags:u,api:c,delayMs:f,type:p="fetch",allowClear:m=!1,...x}=e,{locale:g}=(0,i.s9)(),[h,v]=(0,l.useState)(d),{search:y,setSearch:b,query:w}=function(e,t,a,s=100,i=!1,d){let[u,c]=(0,l.useState)(""),[f,p]=(0,l.useState)("empty"),[m,x]=(0,l.useState)(),[g,h]=(0,l.useState)(!1),v=function(e,t=1e3){let[n,r]=(0,l.useState)(e),a=(0,l.useRef)(void 0);if(0===t)return e;if(e!==n&&a.current?.value!==e){a.current&&clearTimeout(a.current.handler);let n=window.setTimeout(()=>{r(e)},t);a.current={value:e,handler:n}}return n}(u,s),y=(0,l.useRef)(void 0);return(0,o.T)((void 0)??[e,v,t,a],()=>{y.current&&(y.current(),y.current=void 0),h(!0);let o=!1;y.current=()=>{o=!0},(async function(){if(0===v.length&&!i)return"empty";if("fetch"===e.type){let{fetchDocs:r}=await n.e(996).then(n.bind(n,1615));return r(v,t,a,e)}if("algolia"===e.type){let{index:t,type:r,...o}=e,{searchDocs:l}=await n.e(728).then(n.bind(n,6728));return l(t,v,a,o)}if("orama-cloud"===e.type){let{searchDocs:t}=await n.e(886).then(n.bind(n,8886));return t(v,a,e)}let{createStaticClient:o}=await n.e(323).then(n.bind(n,323));return r||(r=o(e)),r.search(v,t,a)})().then(e=>{o||(x(void 0),p(e))}).catch(e=>{x(e)}).finally(()=>{h(!1)})}),{search:u,setSearch:c,query:{isLoading:g,data:f,error:m}}}("fetch"===p?{type:"fetch",api:c}:{type:"static",from:c},g,h,f);return(0,s.T)(d,e=>{v(e)}),(0,a.jsx)(ei,{search:y,onSearchChange:b,isLoading:w.isLoading,results:null!=(t=w.data)?t:[],...x,footer:u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(em,{tag:h,onTagChange:v,items:u,allowClear:m}),x.footer]}):x.footer})}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js b/docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js deleted file mode 100644 index 1e657c9e..00000000 --- a/docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[441],{9248:(e,n,t)=>{var r,l=t(9509),a=t(6206),o=t(2115),u=t(7650);function i(e){var n="https://react.dev/errors/"+e;if(1I||(e.current=R[I],R[I]=null,I--)}function H(e,n){R[++I]=e.current,e.current=n}var V=U(null),Q=U(null),$=U(null),B=U(null);function W(e,n){switch(H($,n),H(Q,e),H(V,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?si(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)e=ss(n=si(n),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j(V),H(V,e)}function q(){j(V),j(Q),j($)}function K(e){null!==e.memoizedState&&H(B,e);var n=V.current,t=ss(n,e.type);n!==t&&(H(Q,e),H(V,t))}function Y(e){Q.current===e&&(j(V),j(Q)),B.current===e&&(j(B),sZ._currentValue=A)}function X(e){if(void 0===nO)try{throw Error()}catch(e){var n=e.stack.trim().match(/\n( *(at )?)/);nO=n&&n[1]||"",nA=-1)":-1l||i[r]!==s[l]){var c="\n"+i[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{G=!1,Error.prepareStackTrace=t}return(t=e?e.displayName||e.name:"")?X(t):""}function J(e){try{var n="";do n+=function(e){switch(e.tag){case 26:case 27:case 5:return X(e.type);case 16:return X("Lazy");case 13:return X("Suspense");case 19:return X("SuspenseList");case 0:case 15:return Z(e.type,!1);case 11:return Z(e.type.render,!1);case 1:return Z(e.type,!0);case 31:return X("Activity");default:return""}}(e),e=e.return;while(e);return n}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}var ee=Object.prototype.hasOwnProperty,en=a.unstable_scheduleCallback,et=a.unstable_cancelCallback,er=a.unstable_shouldYield,el=a.unstable_requestPaint,ea=a.unstable_now,eo=a.unstable_getCurrentPriorityLevel,eu=a.unstable_ImmediatePriority,ei=a.unstable_UserBlockingPriority,es=a.unstable_NormalPriority,ec=a.unstable_LowPriority,ef=a.unstable_IdlePriority,ed=a.log,ep=a.unstable_setDisableYieldValue,em=null,eh=null;function eg(e){if("function"==typeof ed&&ep(e),eh&&"function"==typeof eh.setStrictMode)try{eh.setStrictMode(em,e)}catch(e){}}var ey=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(ev(e)/eb|0)|0},ev=Math.log,eb=Math.LN2,ek=256,ew=4194304;function eS(e){var n=42&e;if(0!==n)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function ex(e,n,t){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var u=0x7ffffff&r;return 0!==u?0!=(r=u&~a)?l=eS(r):0!=(o&=u)?l=eS(o):t||0!=(t=u&~e)&&(l=eS(t)):0!=(u=r&~a)?l=eS(u):0!==o?l=eS(o):t||0!=(t=r&~e)&&(l=eS(t)),0===l?0:0!==n&&n!==l&&0==(n&a)&&((a=l&-l)>=(t=n&-n)||32===a&&0!=(4194048&t))?n:l}function eE(e,n){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)}function eC(){var e=ek;return 0==(4194048&(ek<<=1))&&(ek=256),e}function ez(){var e=ew;return 0==(0x3c00000&(ew<<=1))&&(ew=4194304),e}function eP(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function eN(e,n){e.pendingLanes|=n,0x10000000!==n&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function eL(e,n,t){e.pendingLanes|=n,e.suspendedLanes&=~n;var r=31-ey(n);e.entangledLanes|=n,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&t}function eT(e,n){var t=e.entangledLanes|=n;for(e=e.entanglements;t;){var r=31-ey(t),l=1<=te),tr=!1;function tl(e,n){switch(e){case"keyup":return -1!==n9.indexOf(n.keyCode);case"keydown":return 229!==n.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ta(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var to=!1,tu={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ti(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===n?!!tu[e.type]:"textarea"===n}function ts(e,n,t,r){nv?nb?nb.push(r):nb=[r]:nv=r,0<(n=i4(n,"onChange")).length&&(t=new nH("onChange","change",null,t,r),e.push({event:t,listeners:n}))}var tc=null,tf=null;function td(e){iX(e,0)}function tp(e){if(e9(eW(e)))return e}function tm(e,n){if("change"===e)return n}var th=!1;if(nE){if(nE){var tg="oninput"in document;if(!tg){var ty=document.createElement("div");ty.setAttribute("oninput","return;"),tg="function"==typeof ty.oninput}r=tg}else r=!1;th=r&&(!document.documentMode||9=n)return{node:r,offset:n-e};e=t}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=tz(r)}}function tN(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var n=e7(e.document);n instanceof e.HTMLIFrameElement;){try{var t="string"==typeof n.contentWindow.location.href}catch(e){t=!1}if(t)e=n.contentWindow;else break;n=e7(e.document)}return n}function tL(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&("input"===n&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===n||"true"===e.contentEditable)}var tT=nE&&"documentMode"in document&&11>=document.documentMode,t_=null,tF=null,tD=null,tM=!1;function tO(e,n,t){var r=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;tM||null==t_||t_!==e7(r)||(r="selectionStart"in(r=t_)&&tL(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},tD&&tC(tD,r)||(tD=r,0<(r=i4(tF,"onSelect")).length&&(n=new nH("onSelect","select",null,n,t),e.push({event:n,listeners:r}),n.target=t_)))}function tA(e,n){var t={};return t[e.toLowerCase()]=n.toLowerCase(),t["Webkit"+e]="webkit"+n,t["Moz"+e]="moz"+n,t}var tR={animationend:tA("Animation","AnimationEnd"),animationiteration:tA("Animation","AnimationIteration"),animationstart:tA("Animation","AnimationStart"),transitionrun:tA("Transition","TransitionRun"),transitionstart:tA("Transition","TransitionStart"),transitioncancel:tA("Transition","TransitionCancel"),transitionend:tA("Transition","TransitionEnd")},tI={},tU={};function tj(e){if(tI[e])return tI[e];if(!tR[e])return e;var n,t=tR[e];for(n in t)if(t.hasOwnProperty(n)&&n in tU)return tI[e]=t[n];return e}nE&&(tU=document.createElement("div").style,"AnimationEvent"in window||(delete tR.animationend.animation,delete tR.animationiteration.animation,delete tR.animationstart.animation),"TransitionEvent"in window||delete tR.transitionend.transition);var tH=tj("animationend"),tV=tj("animationiteration"),tQ=tj("animationstart"),t$=tj("transitionrun"),tB=tj("transitionstart"),tW=tj("transitioncancel"),tq=tj("transitionend"),tK=new Map,tY="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function tX(e,n){tK.set(e,n),eG(n,[e])}tY.push("scrollEnd");var tG=new WeakMap;function tZ(e,n){if("object"==typeof e&&null!==e){var t=tG.get(e);return void 0!==t?t:(n={value:e,source:n,stack:J(n)},tG.set(e,n),n)}return{value:e,source:n,stack:J(n)}}var tJ=[],t0=0,t1=0;function t2(){for(var e=t0,n=t1=t0=0;n>=o,l-=o,rh=1<<32-ey(n)+l|t<h?(g=f,f=null):g=f.sibling;var y=p(l,f,u[h],i);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&n(l,f),o=a(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===u.length)return t(l,f),rx&&ry(l,h),s;if(null===f){for(;hg?(y=h,h=null):y=h.sibling;var b=p(l,h,v.value,s);if(null===b){null===h&&(h=y);break}e&&h&&null===b.alternate&&n(l,h),o=a(b,o,g),null===f?c=b:f.sibling=b,f=b,h=y}if(v.done)return t(l,h),rx&&ry(l,g),c;if(null===h){for(;!v.done;g++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return rx&&ry(l,g),c}for(h=r(h);!v.done;g++,v=u.next())null!==(v=m(h,l,g,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return n(l,e)}),rx&&ry(l,g),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return u(s,c,lf(f),v);if(f.$$typeof===S)return u(s,c,rB(s,f),v);lp(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(t(s,c.sibling),(v=l(c,f)).return=s):(t(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):t(s,c)}(u,s,c,f);return ls=null,v}catch(e){if(e===r7||e===ln)throw e;var b=re(29,e,null,u.mode);return b.lanes=f,b.return=u,b}finally{}}}var lg=lh(!0),ly=lh(!1),lv=!1;function lb(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lk(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function lw(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lS(e,n,t){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&uz)){var l=r.pending;return null===l?n.next=n:(n.next=l.next,l.next=n),r.pending=n,n=t5(e),t6(e,null,t),n}return t3(e,r,n,t),t5(e)}function lx(e,n,t){if(null!==(n=n.updateQueue)&&(n=n.shared,0!=(4194048&t))){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,eT(e,t)}}function lE(e,n){var t=e.updateQueue,r=e.alternate;if(null!==r&&t===(r=r.updateQueue)){var l=null,a=null;if(null!==(t=t.firstBaseUpdate)){do{var o={lane:t.lane,tag:t.tag,payload:t.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,t=t.next}while(null!==t);null===a?l=a=n:a=a.next=n}else l=a=n;t={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=t;return}null===(e=t.lastBaseUpdate)?t.firstBaseUpdate=n:e.next=n,t.lastBaseUpdate=n}var lC=!1;function lz(){if(lC){var e=r2;if(null!==e)throw e}}function lP(e,n,t,r){lC=!1;var l=e.updateQueue;lv=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,u=l.shared.pending;if(null!==u){l.shared.pending=null;var i=u,s=i.next;i.next=null,null===o?a=s:o.next=s,o=i;var c=e.alternate;null!==c&&(u=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===u?c.firstBaseUpdate=s:u.next=s,c.lastBaseUpdate=i)}if(null!==a){var f=l.baseState;for(o=0,c=s=i=null,u=a;;){var d=-0x20000001&u.lane,m=d!==u.lane;if(m?(uL&d)===d:(r&d)===d){0!==d&&d===r1&&(lC=!0),null!==c&&(c=c.next={lane:0,tag:u.tag,payload:u.payload,callback:null,next:null});e:{var h=e,g=u;switch(d=n,g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(t,f,d);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(d="function"==typeof(h=g.payload)?h.call(t,f,d):h))break e;f=p({},f,d);break e;case 2:lv=!0}}null!==(d=u.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:u.tag,payload:u.payload,callback:u.callback,next:null},null===c?(s=c=m,i=f):c=c.next=m,o|=d;if(null===(u=u.next))if(null===(u=l.shared.pending))break;else u=(m=u).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}null===c&&(i=f),l.baseState=i,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),uR|=o,e.lanes=o,e.memoizedState=f}}function lN(e,n){if("function"!=typeof e)throw Error(i(191,e));e.call(n)}function lL(e,n){var t=e.callbacks;if(null!==t)for(e.callbacks=null,e=0;ea?a:8;var o=M.T,u={};M.T=u,a2(e,!1,n,t);try{var i=l(),s=M.S;if(null!==s&&s(u,i),null!==i&&"object"==typeof i&&"function"==typeof i.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},i.then(function(){f.status="fulfilled",f.value=r;for(var e=0;e title"))),sl(a,r,t),a[eO]=e,eK(a),r=a;break e;case"link":var o=sQ("link","href",l).get(r+(t.href||""));if(o){for(var u=0;u<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[eO]=n,a[eA]=r;e:for(o=n.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===n)break;for(;null===o.sibling;){if(null===o.return||o.return===n)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(n.stateNode=a,sl(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&oj(n)}}return oB(n),oH(n,n.type,null===e?null:e.memoizedProps,n.pendingProps,t),null;case 6:if(e&&null!=n.stateNode)e.memoizedProps!==r&&oj(n);else{if("string"!=typeof r&&null===n.stateNode)throw Error(i(166));if(e=$.current,rT(n)){if(e=n.stateNode,t=n.memoizedProps,r=null,null!==(l=rw))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eO]=n,(e=!!(e.nodeValue===t||null!==r&&!0===r.suppressHydrationWarning||se(e.nodeValue,t)))||rP(n,!0)}else(e=su(e).createTextNode(r))[eO]=n,n.stateNode=e}return oB(n),null;case 13:if(r=n.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rT(n),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=n.memoizedState)?l.dehydrated:null))throw Error(i(317));l[eO]=n}else r_(),0==(128&n.flags)&&(n.memoizedState=null),n.flags|=4;oB(n),l=!1}else l=rF(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&n.flags)return lj(n),n;return lj(n),null}}if(lj(n),0!=(128&n.flags))return n.lanes=t,n;return t=null!==r,e=null!==e&&null!==e.memoizedState,t&&(r=n.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),t!==e&&t&&(n.child.flags|=8192),oQ(n,n.updateQueue),oB(n),null;case 4:return q(),null===e&&i0(n.stateNode.containerInfo),oB(n),null;case 10:return rI(n.type),oB(n),null;case 19:if(j(lH),null===(l=n.memoizedState))return oB(n),null;if(r=0!=(128&n.flags),null===(a=l.rendering))if(r)o$(l,!1);else{if(0!==uA||null!==e&&0!=(128&e.flags))for(e=n.child;null!==e;){if(null!==(a=lV(e))){for(n.flags|=128,o$(l,!1),e=a.updateQueue,n.updateQueue=e,oQ(n,e),n.subtreeFlags=0,e=t,t=n.child;null!==t;)rr(t,e),t=t.sibling;return H(lH,1&lH.current|2),n.child}e=e.sibling}null!==l.tail&&ea()>uW&&(n.flags|=128,r=!0,o$(l,!1),n.lanes=4194304)}else{if(!r)if(null!==(e=lV(a))){if(n.flags|=128,r=!0,e=e.updateQueue,n.updateQueue=e,oQ(n,e),o$(l,!0),null===l.tail&&"hidden"===l.tailMode&&!a.alternate&&!rx)return oB(n),null}else 2*ea()-l.renderingStartTime>uW&&0x20000000!==t&&(n.flags|=128,r=!0,o$(l,!1),n.lanes=4194304);l.isBackwards?(a.sibling=n.child,n.child=a):(null!==(e=l.last)?e.sibling=a:n.child=a,l.last=a)}if(null!==l.tail)return n=l.tail,l.rendering=n,l.tail=n.sibling,l.renderingStartTime=ea(),n.sibling=null,e=lH.current,H(lH,r?1&e|2:1&e),n;return oB(n),null;case 22:case 23:return lj(n),lM(),r=null!==n.memoizedState,null!==e?null!==e.memoizedState!==r&&(n.flags|=8192):r&&(n.flags|=8192),r?0!=(0x20000000&t)&&0==(128&n.flags)&&(oB(n),6&n.subtreeFlags&&(n.flags|=8192)):oB(n),null!==(t=n.updateQueue)&&oQ(n,t.retryQueue),t=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(t=e.memoizedState.cachePool.pool),r=null,null!==n.memoizedState&&null!==n.memoizedState.cachePool&&(r=n.memoizedState.cachePool.pool),r!==t&&(n.flags|=2048),null!==e&&j(r8),null;case 24:return t=null,null!==e&&(t=e.memoizedState.cache),n.memoizedState.cache!==t&&(n.flags|=2048),rI(rX),oB(n),null;case 25:case 30:return null}throw Error(i(156,n.tag))}(n.alternate,n,uO);if(null!==t){uN=t;return}if(null!==(n=n.sibling)){uN=n;return}uN=n=e}while(null!==n);0===uA&&(uA=5)}function ih(e,n){do{var t=function(e,n){switch(rk(n),n.tag){case 1:return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return rI(rX),q(),0!=(65536&(e=n.flags))&&0==(128&e)?(n.flags=-65537&e|128,n):null;case 26:case 27:case 5:return Y(n),null;case 13:if(lj(n),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(i(340));r_()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return j(lH),null;case 4:return q(),null;case 10:return rI(n.type),null;case 22:case 23:return lj(n),lM(),null!==e&&j(r8),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 24:return rI(rX),null;default:return null}}(e.alternate,e);if(null!==t){t.flags&=32767,uN=t;return}if(null!==(t=e.return)&&(t.flags|=32768,t.subtreeFlags=0,t.deletions=null),!n&&null!==(e=e.sibling)){uN=e;return}uN=e=t}while(null!==e);uA=6,uN=null}function ig(e,n,t,r,l,a,o,u,s){e.cancelPendingCommit=null;do iw();while(0!==uY);if(0!=(6&uz))throw Error(i(327));if(null!==n){if(n===e.current)throw Error(i(177));if(!function(e,n,t,r,l,a){var o=e.pendingLanes;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=t,e.entangledLanes&=t,e.errorRecoveryDisabledLanes&=t,e.shellSuspendCounter=0;var u=e.entanglements,i=e.expirationTimes,s=e.hiddenUpdates;for(t=o&~t;0g&&(o=g,g=h,h=o);var y=tP(u,h),v=tP(u,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=u;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof u.focus&&u.focus(),u=0;ut?32:t,M.T=null,t=u0,u0=null;var a=uX,o=uZ;if(uY=0,uG=uX=null,uZ=0,0!=(6&uz))throw Error(i(331));var u=uz;if(uz|=4,uS(a.current),uh(a,a.current,o,t),uz=u,iR(0,!1),eh&&"function"==typeof eh.onPostCommitFiberRoot)try{eh.onPostCommitFiberRoot(em,a)}catch(e){}return!0}finally{O.p=l,M.T=r,ik(e,n)}}function ix(e,n,t){n=tZ(t,n),n=of(e.stateNode,n,2),null!==(e=lS(e,n,2))&&(eN(e,2),iA(e))}function iE(e,n,t){if(3===e.tag)ix(e,e,t);else for(;null!==n;){if(3===n.tag){ix(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===uK||!uK.has(r))){e=tZ(t,e),null!==(r=lS(n,t=od(2),2))&&(op(t,r,n,e),eN(r,2),iA(r));break}}n=n.return}}function iC(e,n,t){var r=e.pingCache;if(null===r){r=e.pingCache=new uC;var l=new Set;r.set(n,l)}else void 0===(l=r.get(n))&&(l=new Set,r.set(n,l));l.has(t)||(uM=!0,l.add(t),e=iz.bind(null,e,n,t),n.then(e,e))}function iz(e,n,t){var r=e.pingCache;null!==r&&r.delete(n),e.pingedLanes|=e.suspendedLanes&t,e.warmLanes&=~t,uP===e&&(uL&t)===t&&(4===uA||3===uA&&(0x3c00000&uL)===uL&&300>ea()-uB?0==(2&uz)&&ir(e,0):uU|=t,uH===uL&&(uH=0)),iA(e)}function iP(e,n){0===n&&(n=ez()),null!==(e=t8(e,n))&&(eN(e,n),iA(e))}function iN(e){var n=e.memoizedState,t=0;null!==n&&(t=n.retryLane),iP(e,t)}function iL(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(t=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(n),iP(e,t)}var iT=null,i_=null,iF=!1,iD=!1,iM=!1,iO=0;function iA(e){e!==i_&&null===e.next&&(null===i_?iT=i_=e:i_=i_.next=e),iD=!0,iF||(iF=!0,sh(function(){0!=(6&uz)?en(eu,iI):iU()}))}function iR(e,n){if(!iM&&iD){iM=!0;do for(var t=!1,r=iT;null!==r;){if(!n)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,u=r.pingedLanes;a=0xc000095&(a=(1<<31-ey(42|e)+1)-1&(l&~(o&~u)))?0xc000095&a|1:a?2|a:0}0!==a&&(t=!0,iV(r,a))}else a=uL,0==(3&(a=ex(r,r===uP?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||eE(r,a)||(t=!0,iV(r,a));r=r.next}while(t);iM=!1}}function iI(){iU()}function iU(){iD=iF=!1;var e,n=0;0!==iO&&(((e=window.event)&&"popstate"===e.type?e===sf||(sf=e,0):(sf=null,1))||(n=iO),iO=0);for(var t=ea(),r=null,l=iT;null!==l;){var a=l.next,o=ij(l,t);0===o?(l.next=null,null===r?iT=a:r.next=a,null===a&&(i_=r)):(r=l,(0!==n||0!=(3&o))&&(iD=!0)),l=a}0!==uY&&5!==uY||iR(n,!1)}function ij(e,n){for(var t=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0r){t=r;var o=e.ownerDocument;if(1&t&&sC(o.documentElement),2&t&&sC(o.body),4&t)for(sC(t=o.head),o=t.firstChild;o;){var u=o.nextSibling,i=o.nodeName;o[eV]||"SCRIPT"===i||"STYLE"===i||"LINK"===i&&"stylesheet"===o.rel.toLowerCase()||t.removeChild(o),o=u}}if(0===l){e.removeChild(a),cw(n);return}l--}else"$"===t||"$?"===t||"$!"===t?l++:r=t.charCodeAt(0)-48;else r=0;t=a}while(t);cw(n)}function sb(e){var n=e.firstChild;for(n&&10===n.nodeType&&(n=n.nextSibling);n;){var t=n;switch(n=n.nextSibling,t.nodeName){case"HTML":case"HEAD":case"BODY":sb(t),eQ(t);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===t.rel.toLowerCase())continue}e.removeChild(t)}}function sk(e){return"$!"===e.data||"$?"===e.data&&"complete"===e.ownerDocument.readyState}function sw(e){for(;null!=e;e=e.nextSibling){var n=e.nodeType;if(1===n||3===n)break;if(8===n){if("$"===(n=e.data)||"$!"===n||"$?"===n||"F!"===n||"F"===n)break;if("/$"===n)return null}}return e}var sS=null;function sx(e){e=e.previousSibling;for(var n=0;e;){if(8===e.nodeType){var t=e.data;if("$"===t||"$!"===t||"$?"===t){if(0===n)return e;n--}else"/$"===t&&n++}e=e.previousSibling}return null}function sE(e,n,t){switch(n=su(t),e){case"html":if(!(e=n.documentElement))throw Error(i(452));return e;case"head":if(!(e=n.head))throw Error(i(453));return e;case"body":if(!(e=n.body))throw Error(i(454));return e;default:throw Error(i(451))}}function sC(e){for(var n=e.attributes;n.length;)e.removeAttributeNode(n[0]);eQ(e)}var sz=new Map,sP=new Set;function sN(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var sL=O.d;O.d={f:function(){var e=sL.f(),n=ie();return e||n},r:function(e){var n=eB(e);null!==n&&5===n.tag&&"form"===n.type?aK(n):sL.r(e)},D:function(e){sL.D(e),s_("dns-prefetch",e,null)},C:function(e,n){sL.C(e,n),s_("preconnect",e,n)},L:function(e,n,t){if(sL.L(e,n,t),sT&&e&&n){var r='link[rel="preload"][as="'+nn(n)+'"]';"image"===n&&t&&t.imageSrcSet?(r+='[imagesrcset="'+nn(t.imageSrcSet)+'"]',"string"==typeof t.imageSizes&&(r+='[imagesizes="'+nn(t.imageSizes)+'"]')):r+='[href="'+nn(e)+'"]';var l=r;switch(n){case"style":l=sD(e);break;case"script":l=sA(e)}sz.has(l)||(e=p({rel:"preload",href:"image"===n&&t&&t.imageSrcSet?void 0:e,as:n},t),sz.set(l,e),null!==sT.querySelector(r)||"style"===n&&sT.querySelector(sM(l))||"script"===n&&sT.querySelector(sR(l))||(sl(n=sT.createElement("link"),"link",e),eK(n),sT.head.appendChild(n)))}},m:function(e,n){if(sL.m(e,n),sT&&e){var t=n&&"string"==typeof n.as?n.as:"script",r='link[rel="modulepreload"][as="'+nn(t)+'"][href="'+nn(e)+'"]',l=r;switch(t){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=sA(e)}if(!sz.has(l)&&(e=p({rel:"modulepreload",href:e},n),sz.set(l,e),null===sT.querySelector(r))){switch(t){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(sT.querySelector(sR(l)))return}sl(t=sT.createElement("link"),"link",e),eK(t),sT.head.appendChild(t)}}},X:function(e,n){if(sL.X(e,n),sT&&e){var t=eq(sT).hoistableScripts,r=sA(e),l=t.get(r);l||((l=sT.querySelector(sR(r)))||(e=p({src:e,async:!0},n),(n=sz.get(r))&&sH(e,n),eK(l=sT.createElement("script")),sl(l,"link",e),sT.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},t.set(r,l))}},S:function(e,n,t){if(sL.S(e,n,t),sT&&e){var r=eq(sT).hoistableStyles,l=sD(e);n=n||"default";var a=r.get(l);if(!a){var o={loading:0,preload:null};if(a=sT.querySelector(sM(l)))o.loading=5;else{e=p({rel:"stylesheet",href:e,"data-precedence":n},t),(t=sz.get(l))&&sj(e,t);var u=a=sT.createElement("link");eK(u),sl(u,"link",e),u._p=new Promise(function(e,n){u.onload=e,u.onerror=n}),u.addEventListener("load",function(){o.loading|=1}),u.addEventListener("error",function(){o.loading|=2}),o.loading|=4,sU(a,n,sT)}a={type:"stylesheet",instance:a,count:1,state:o},r.set(l,a)}}},M:function(e,n){if(sL.M(e,n),sT&&e){var t=eq(sT).hoistableScripts,r=sA(e),l=t.get(r);l||((l=sT.querySelector(sR(r)))||(e=p({src:e,async:!0,type:"module"},n),(n=sz.get(r))&&sH(e,n),eK(l=sT.createElement("script")),sl(l,"link",e),sT.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},t.set(r,l))}}};var sT="undefined"==typeof document?null:document;function s_(e,n,t){if(sT&&"string"==typeof n&&n){var r=nn(n);r='link[rel="'+e+'"][href="'+r+'"]',"string"==typeof t&&(r+='[crossorigin="'+t+'"]'),sP.has(r)||(sP.add(r),e={rel:e,crossOrigin:t,href:n},null===sT.querySelector(r)&&(sl(n=sT.createElement("link"),"link",e),eK(n),sT.head.appendChild(n)))}}function sF(e,n,t,r){var l=(l=$.current)?sN(l):null;if(!l)throw Error(i(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof t.precedence&&"string"==typeof t.href?(n=sD(t.href),(r=(t=eq(l).hoistableStyles).get(n))||(r={type:"style",instance:null,count:0,state:null},t.set(n,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===t.rel&&"string"==typeof t.href&&"string"==typeof t.precedence){e=sD(t.href);var a,o,u,s,c=eq(l).hoistableStyles,f=c.get(e);if(f||(l=l.ownerDocument||l,f={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,f),(c=l.querySelector(sM(e)))&&!c._p&&(f.instance=c,f.state.loading=5),sz.has(e)||(t={rel:"preload",as:"style",href:t.href,crossOrigin:t.crossOrigin,integrity:t.integrity,media:t.media,hrefLang:t.hrefLang,referrerPolicy:t.referrerPolicy},sz.set(e,t),c||(a=l,o=e,u=t,s=f.state,a.querySelector('link[rel="preload"][as="style"]['+o+"]")?s.loading=1:(s.preload=o=a.createElement("link"),o.addEventListener("load",function(){return s.loading|=1}),o.addEventListener("error",function(){return s.loading|=2}),sl(o,"link",u),eK(o),a.head.appendChild(o))))),n&&null===r)throw Error(i(528,""));return f}if(n&&null!==r)throw Error(i(529,""));return null;case"script":return n=t.async,"string"==typeof(t=t.src)&&n&&"function"!=typeof n&&"symbol"!=typeof n?(n=sA(t),(r=(t=eq(l).hoistableScripts).get(n))||(r={type:"script",instance:null,count:0,state:null},t.set(n,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,e))}}function sD(e){return'href="'+nn(e)+'"'}function sM(e){return'link[rel="stylesheet"]['+e+"]"}function sO(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function sA(e){return'[src="'+nn(e)+'"]'}function sR(e){return"script[async]"+e}function sI(e,n,t){if(n.count++,null===n.instance)switch(n.type){case"style":var r=e.querySelector('style[data-href~="'+nn(t.href)+'"]');if(r)return n.instance=r,eK(r),r;var l=p({},t,{"data-href":t.href,"data-precedence":t.precedence,href:null,precedence:null});return eK(r=(e.ownerDocument||e).createElement("style")),sl(r,"style",l),sU(r,t.precedence,e),n.instance=r;case"stylesheet":l=sD(t.href);var a=e.querySelector(sM(l));if(a)return n.state.loading|=4,n.instance=a,eK(a),a;r=sO(t),(l=sz.get(l))&&sj(r,l),eK(a=(e.ownerDocument||e).createElement("link"));var o=a;return o._p=new Promise(function(e,n){o.onload=e,o.onerror=n}),sl(a,"link",r),n.state.loading|=4,sU(a,t.precedence,e),n.instance=a;case"script":if(a=sA(t.src),l=e.querySelector(sR(a)))return n.instance=l,eK(l),l;return r=t,(l=sz.get(a))&&sH(r=p({},t),l),eK(l=(e=e.ownerDocument||e).createElement("script")),sl(l,"link",r),e.head.appendChild(l),n.instance=l;case"void":return null;default:throw Error(i(443,n.type))}return"stylesheet"===n.type&&0==(4&n.state.loading)&&(r=n.instance,n.state.loading|=4,sU(r,t.precedence,e)),n.instance}function sU(e,n,t){for(var r=t.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=r.length?r[r.length-1]:null,a=l,o=0;o title"):null)}function sB(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var sW=null;function sq(){}function sK(){if(this.count--,0===this.count){if(this.stylesheets)sX(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var sY=null;function sX(e,n){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sY=new Map,n.forEach(sG,e),sY=null,sK.call(e))}function sG(e,n){if(!(4&n.state.loading)){var t=sY.get(e);if(t)var r=t.get(null);else{t=new Map,sY.set(e,t);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{t.d(r,{B:()=>i});var o,n=t(2115),a=t(2712),l=(o||(o=t.t(n,2)))[" useId ".trim().toString()]||(()=>void 0),s=0;function i(e){let[r,t]=n.useState(l());return(0,a.N)(()=>{e||t(e=>e??String(s++))},[e]),e||(r?`radix-${r}`:"")}},2085:(e,r,t)=>{t.d(r,{F:()=>l});var o=t(2596);let n=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,a=o.$,l=(e,r)=>t=>{var o;if((null==r?void 0:r.variants)==null)return a(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:l,defaultVariants:s}=r,i=Object.keys(l).map(e=>{let r=null==t?void 0:t[e],o=null==s?void 0:s[e];if(null===r)return null;let a=n(r)||n(o);return l[e][a]}),d=t&&Object.entries(t).reduce((e,r)=>{let[t,o]=r;return void 0===o||(e[t]=o),e},{});return a(e,i,null==r||null==(o=r.compoundVariants)?void 0:o.reduce((e,r)=>{let{class:t,className:o,...n}=r;return Object.entries(n).every(e=>{let[r,t]=e;return Array.isArray(t)?t.includes({...s,...d}[r]):({...s,...d})[r]===t})?[...e,t,o]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}},2596:(e,r,t)=>{t.d(r,{$:()=>o});function o(){for(var e,r,t=0,o="",n=arguments.length;t{t.d(r,{N:()=>n});var o=t(2115),n=globalThis?.document?o.useLayoutEffect:()=>{}},3536:(e,r,t)=>{t.d(r,{A:()=>c});var o=t(2115);let n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,t)=>t?t.toUpperCase():r.toLowerCase()),l=e=>{let r=a(e);return r.charAt(0).toUpperCase()+r.slice(1)},s=function(){for(var e=arguments.length,r=Array(e),t=0;t!!e&&""!==e.trim()&&t.indexOf(e)===r).join(" ").trim()};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let d=(0,o.forwardRef)((e,r)=>{let{color:t="currentColor",size:n=24,strokeWidth:a=2,absoluteStrokeWidth:l,className:d="",children:c,iconNode:u,...m}=e;return(0,o.createElement)("svg",{ref:r,...i,width:n,height:n,stroke:t,strokeWidth:l?24*Number(a)/Number(n):a,className:s("lucide",d),...m},[...u.map(e=>{let[r,t]=e;return(0,o.createElement)(r,t)}),...Array.isArray(c)?c:[c]])}),c=(e,r)=>{let t=(0,o.forwardRef)((t,a)=>{let{className:i,...c}=t;return(0,o.createElement)(d,{ref:a,iconNode:r,className:s("lucide-".concat(n(l(e))),"lucide-".concat(e),i),...c})});return t.displayName=l(e),t}},3655:(e,r,t)=>{t.d(r,{hO:()=>i,sG:()=>s});var o=t(2115),n=t(7650),a=t(9708),l=t(5155),s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{let t=(0,a.TL)(`Primitive.${r}`),n=o.forwardRef((e,o)=>{let{asChild:n,...a}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(n?t:r,{...a,ref:o})});return n.displayName=`Primitive.${r}`,{...e,[r]:n}},{});function i(e,r){e&&n.flushSync(()=>e.dispatchEvent(r))}},5185:(e,r,t)=>{t.d(r,{m:()=>o});function o(e,r,{checkForDefaultPrevented:t=!0}={}){return function(o){if(e?.(o),!1===t||!o.defaultPrevented)return r?.(o)}}},5845:(e,r,t)=>{t.d(r,{i:()=>s});var o,n=t(2115),a=t(2712),l=(o||(o=t.t(n,2)))[" useInsertionEffect ".trim().toString()]||a.N;function s({prop:e,defaultProp:r,onChange:t=()=>{},caller:o}){let[a,s,i]=function({defaultProp:e,onChange:r}){let[t,o]=n.useState(e),a=n.useRef(t),s=n.useRef(r);return l(()=>{s.current=r},[r]),n.useEffect(()=>{a.current!==t&&(s.current?.(t),a.current=t)},[t,a]),[t,o,s]}({defaultProp:r,onChange:t}),d=void 0!==e,c=d?e:a;{let r=n.useRef(void 0!==e);n.useEffect(()=>{let e=r.current;if(e!==d){let r=d?"controlled":"uncontrolled";console.warn(`${o} is changing from ${e?"controlled":"uncontrolled"} to ${r}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=d},[d,o])}return[c,n.useCallback(r=>{if(d){let t="function"==typeof r?r(e):r;t!==e&&i.current?.(t)}else s(r)},[d,e,s,i])]}Symbol("RADIX:SYNC_STATE")},6081:(e,r,t)=>{t.d(r,{A:()=>l,q:()=>a});var o=t(2115),n=t(5155);function a(e,r){let t=o.createContext(r),a=e=>{let{children:r,...a}=e,l=o.useMemo(()=>a,Object.values(a));return(0,n.jsx)(t.Provider,{value:l,children:r})};return a.displayName=e+"Provider",[a,function(n){let a=o.useContext(t);if(a)return a;if(void 0!==r)return r;throw Error(`\`${n}\` must be used within \`${e}\``)}]}function l(e,r=[]){let t=[],a=()=>{let r=t.map(e=>o.createContext(e));return function(t){let n=t?.[e]||r;return o.useMemo(()=>({[`__scope${e}`]:{...t,[e]:n}}),[t,n])}};return a.scopeName=e,[function(r,a){let l=o.createContext(a),s=t.length;t=[...t,a];let i=r=>{let{scope:t,children:a,...i}=r,d=t?.[e]?.[s]||l,c=o.useMemo(()=>i,Object.values(i));return(0,n.jsx)(d.Provider,{value:c,children:a})};return i.displayName=r+"Provider",[i,function(t,n){let i=n?.[e]?.[s]||l,d=o.useContext(i);if(d)return d;if(void 0!==a)return a;throw Error(`\`${t}\` must be used within \`${r}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let t=()=>{let t=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=t.reduce((r,{useScope:t,scopeName:o})=>{let n=t(e)[`__scope${o}`];return{...r,...n}},{});return o.useMemo(()=>({[`__scope${r.scopeName}`]:n}),[n])}};return t.scopeName=r.scopeName,t}(a,...r)]}},6101:(e,r,t)=>{t.d(r,{s:()=>l,t:()=>a});var o=t(2115);function n(e,r){if("function"==typeof e)return e(r);null!=e&&(e.current=r)}function a(...e){return r=>{let t=!1,o=e.map(e=>{let o=n(e,r);return t||"function"!=typeof o||(t=!0),o});if(t)return()=>{for(let r=0;r{t.d(r,{r:()=>o});let o=(0,t(2085).F)("inline-flex items-center justify-center rounded-md p-2 text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50",{variants:{color:{primary:"bg-fd-primary text-fd-primary-foreground hover:bg-fd-primary/80",outline:"border hover:bg-fd-accent hover:text-fd-accent-foreground",ghost:"hover:bg-fd-accent hover:text-fd-accent-foreground",secondary:"border bg-fd-secondary text-fd-secondary-foreground hover:bg-fd-accent hover:text-fd-accent-foreground"},size:{sm:"gap-1 p-1 text-xs",icon:"p-1.5 [&_svg]:size-5","icon-sm":"p-1.5 [&_svg]:size-4.5"}}})},8905:(e,r,t)=>{t.d(r,{C:()=>l});var o=t(2115),n=t(6101),a=t(2712),l=e=>{let{present:r,children:t}=e,l=function(e){var r,t;let[n,l]=o.useState(),i=o.useRef(null),d=o.useRef(e),c=o.useRef("none"),[u,m]=(r=e?"mounted":"unmounted",t={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},o.useReducer((e,r)=>{let o=t[e][r];return null!=o?o:e},r));return o.useEffect(()=>{let e=s(i.current);c.current="mounted"===u?e:"none"},[u]),(0,a.N)(()=>{let r=i.current,t=d.current;if(t!==e){let o=c.current,n=s(r);e?m("MOUNT"):"none"===n||(null==r?void 0:r.display)==="none"?m("UNMOUNT"):t&&o!==n?m("ANIMATION_OUT"):m("UNMOUNT"),d.current=e}},[e,m]),(0,a.N)(()=>{if(n){var e;let r,t=null!=(e=n.ownerDocument.defaultView)?e:window,o=e=>{let o=s(i.current).includes(e.animationName);if(e.target===n&&o&&(m("ANIMATION_END"),!d.current)){let e=n.style.animationFillMode;n.style.animationFillMode="forwards",r=t.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=e)})}},a=e=>{e.target===n&&(c.current=s(i.current))};return n.addEventListener("animationstart",a),n.addEventListener("animationcancel",o),n.addEventListener("animationend",o),()=>{t.clearTimeout(r),n.removeEventListener("animationstart",a),n.removeEventListener("animationcancel",o),n.removeEventListener("animationend",o)}}m("ANIMATION_END")},[n,m]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:o.useCallback(e=>{i.current=e?getComputedStyle(e):null,l(e)},[])}}(r),i="function"==typeof t?t({present:l.isPresent}):o.Children.only(t),d=(0,n.s)(l.ref,function(e){var r,t;let o=null==(r=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:r.get,n=o&&"isReactWarning"in o&&o.isReactWarning;return n?e.ref:(n=(o=null==(t=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:t.get)&&"isReactWarning"in o&&o.isReactWarning)?e.props.ref:e.props.ref||e.ref}(i));return"function"==typeof t||l.isPresent?o.cloneElement(i,{ref:d}):null};function s(e){return(null==e?void 0:e.animationName)||"none"}l.displayName="Presence"},9033:(e,r,t)=>{t.d(r,{c:()=>n});var o=t(2115);function n(e){let r=o.useRef(e);return o.useEffect(()=>{r.current=e}),o.useMemo(()=>(...e)=>r.current?.(...e),[])}},9688:(e,r,t)=>{t.d(r,{QP:()=>ed});let o=e=>{let r=s(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:e=>{let t=e.split("-");return""===t[0]&&1!==t.length&&t.shift(),n(t,r)||l(e)},getConflictingClassGroupIds:(e,r)=>{let n=t[e]||[];return r&&o[e]?[...n,...o[e]]:n}}},n=(e,r)=>{if(0===e.length)return r.classGroupId;let t=e[0],o=r.nextPart.get(t),a=o?n(e.slice(1),o):void 0;if(a)return a;if(0===r.validators.length)return;let l=e.join("-");return r.validators.find(({validator:e})=>e(l))?.classGroupId},a=/^\[(.+)\]$/,l=e=>{if(a.test(e)){let r=a.exec(e)[1],t=r?.substring(0,r.indexOf(":"));if(t)return"arbitrary.."+t}},s=e=>{let{theme:r,classGroups:t}=e,o={nextPart:new Map,validators:[]};for(let e in t)i(t[e],o,e,r);return o},i=(e,r,t,o)=>{e.forEach(e=>{if("string"==typeof e){(""===e?r:d(r,e)).classGroupId=t;return}if("function"==typeof e)return c(e)?void i(e(o),r,t,o):void r.validators.push({validator:e,classGroupId:t});Object.entries(e).forEach(([e,n])=>{i(n,d(r,e),t,o)})})},d=(e,r)=>{let t=e;return r.split("-").forEach(e=>{t.nextPart.has(e)||t.nextPart.set(e,{nextPart:new Map,validators:[]}),t=t.nextPart.get(e)}),t},c=e=>e.isThemeGetter,u=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,t=new Map,o=new Map,n=(n,a)=>{t.set(n,a),++r>e&&(r=0,o=t,t=new Map)};return{get(e){let r=t.get(e);return void 0!==r?r:void 0!==(r=o.get(e))?(n(e,r),r):void 0},set(e,r){t.has(e)?t.set(e,r):n(e,r)}}},m=e=>{let{prefix:r,experimentalParseClassName:t}=e,o=e=>{let r,t=[],o=0,n=0,a=0;for(let l=0;la?r-a:void 0}};if(r){let e=r+":",t=o;o=r=>r.startsWith(e)?t(r.substring(e.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:r,maybePostfixModifierPosition:void 0}}if(t){let e=o;o=r=>t({className:r,parseClassName:e})}return o},p=e=>e.endsWith("!")?e.substring(0,e.length-1):e.startsWith("!")?e.substring(1):e,f=e=>{let r=Object.fromEntries(e.orderSensitiveModifiers.map(e=>[e,!0]));return e=>{if(e.length<=1)return e;let t=[],o=[];return e.forEach(e=>{"["===e[0]||r[e]?(t.push(...o.sort(),e),o=[]):o.push(e)}),t.push(...o.sort()),t}},b=e=>({cache:u(e.cacheSize),parseClassName:m(e),sortModifiers:f(e),...o(e)}),g=/\s+/,h=(e,r)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:n,sortModifiers:a}=r,l=[],s=e.trim().split(g),i="";for(let e=s.length-1;e>=0;e-=1){let r=s[e],{isExternal:d,modifiers:c,hasImportantModifier:u,baseClassName:m,maybePostfixModifierPosition:p}=t(r);if(d){i=r+(i.length>0?" "+i:i);continue}let f=!!p,b=o(f?m.substring(0,p):m);if(!b){if(!f||!(b=o(m))){i=r+(i.length>0?" "+i:i);continue}f=!1}let g=a(c).join(":"),h=u?g+"!":g,v=h+b;if(l.includes(v))continue;l.push(v);let y=n(b,f);for(let e=0;e0?" "+i:i)}return i};function v(){let e,r,t=0,o="";for(;t{let r;if("string"==typeof e)return e;let t="";for(let o=0;o{let r=r=>r[e]||[];return r.isThemeGetter=!0,r},x=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,k=/^\((?:(\w[\w-]*):)?(.+)\)$/i,N=/^\d+\/\d+$/,z=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,E=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,j=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,C=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,M=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,O=e=>N.test(e),$=e=>!!e&&!Number.isNaN(Number(e)),A=e=>!!e&&Number.isInteger(Number(e)),P=e=>e.endsWith("%")&&$(e.slice(0,-1)),S=e=>z.test(e),_=()=>!0,I=e=>E.test(e)&&!j.test(e),T=()=>!1,R=e=>C.test(e),W=e=>M.test(e),L=e=>!G(e)&&!Z(e),U=e=>ee(e,en,T),G=e=>x.test(e),D=e=>ee(e,ea,I),F=e=>ee(e,el,$),V=e=>ee(e,et,T),q=e=>ee(e,eo,W),B=e=>ee(e,ei,R),Z=e=>k.test(e),Q=e=>er(e,ea),X=e=>er(e,es),Y=e=>er(e,et),H=e=>er(e,en),J=e=>er(e,eo),K=e=>er(e,ei,!0),ee=(e,r,t)=>{let o=x.exec(e);return!!o&&(o[1]?r(o[1]):t(o[2]))},er=(e,r,t=!1)=>{let o=k.exec(e);return!!o&&(o[1]?r(o[1]):t)},et=e=>"position"===e||"percentage"===e,eo=e=>"image"===e||"url"===e,en=e=>"length"===e||"size"===e||"bg-size"===e,ea=e=>"length"===e,el=e=>"number"===e,es=e=>"family-name"===e,ei=e=>"shadow"===e;Symbol.toStringTag;let ed=function(e,...r){let t,o,n,a=function(s){return o=(t=b(r.reduce((e,r)=>r(e),e()))).cache.get,n=t.cache.set,a=l,l(s)};function l(e){let r=o(e);if(r)return r;let a=h(e,t);return n(e,a),a}return function(){return a(v.apply(null,arguments))}}(()=>{let e=w("color"),r=w("font"),t=w("text"),o=w("font-weight"),n=w("tracking"),a=w("leading"),l=w("breakpoint"),s=w("container"),i=w("spacing"),d=w("radius"),c=w("shadow"),u=w("inset-shadow"),m=w("text-shadow"),p=w("drop-shadow"),f=w("blur"),b=w("perspective"),g=w("aspect"),h=w("ease"),v=w("animate"),y=()=>["auto","avoid","all","avoid-page","page","left","right","column"],x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],k=()=>[...x(),Z,G],N=()=>["auto","hidden","clip","visible","scroll"],z=()=>["auto","contain","none"],E=()=>[Z,G,i],j=()=>[O,"full","auto",...E()],C=()=>[A,"none","subgrid",Z,G],M=()=>["auto",{span:["full",A,Z,G]},A,Z,G],I=()=>[A,"auto",Z,G],T=()=>["auto","min","max","fr",Z,G],R=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],W=()=>["start","end","center","stretch","center-safe","end-safe"],ee=()=>["auto",...E()],er=()=>[O,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...E()],et=()=>[e,Z,G],eo=()=>[...x(),Y,V,{position:[Z,G]}],en=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ea=()=>["auto","cover","contain",H,U,{size:[Z,G]}],el=()=>[P,Q,D],es=()=>["","none","full",d,Z,G],ei=()=>["",$,Q,D],ed=()=>["solid","dashed","dotted","double"],ec=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],eu=()=>[$,P,Y,V],em=()=>["","none",f,Z,G],ep=()=>["none",$,Z,G],ef=()=>["none",$,Z,G],eb=()=>[$,Z,G],eg=()=>[O,"full",...E()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[S],breakpoint:[S],color:[_],container:[S],"drop-shadow":[S],ease:["in","out","in-out"],font:[L],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[S],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[S],shadow:[S],spacing:["px",$],text:[S],"text-shadow":[S],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",O,G,Z,g]}],container:["container"],columns:[{columns:[$,G,Z,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:k()}],overflow:[{overflow:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:z()}],"overscroll-x":[{"overscroll-x":z()}],"overscroll-y":[{"overscroll-y":z()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:j()}],"inset-x":[{"inset-x":j()}],"inset-y":[{"inset-y":j()}],start:[{start:j()}],end:[{end:j()}],top:[{top:j()}],right:[{right:j()}],bottom:[{bottom:j()}],left:[{left:j()}],visibility:["visible","invisible","collapse"],z:[{z:[A,"auto",Z,G]}],basis:[{basis:[O,"full","auto",s,...E()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[$,O,"auto","initial","none",G]}],grow:[{grow:["",$,Z,G]}],shrink:[{shrink:["",$,Z,G]}],order:[{order:[A,"first","last","none",Z,G]}],"grid-cols":[{"grid-cols":C()}],"col-start-end":[{col:M()}],"col-start":[{"col-start":I()}],"col-end":[{"col-end":I()}],"grid-rows":[{"grid-rows":C()}],"row-start-end":[{row:M()}],"row-start":[{"row-start":I()}],"row-end":[{"row-end":I()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":T()}],"auto-rows":[{"auto-rows":T()}],gap:[{gap:E()}],"gap-x":[{"gap-x":E()}],"gap-y":[{"gap-y":E()}],"justify-content":[{justify:[...R(),"normal"]}],"justify-items":[{"justify-items":[...W(),"normal"]}],"justify-self":[{"justify-self":["auto",...W()]}],"align-content":[{content:["normal",...R()]}],"align-items":[{items:[...W(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...W(),{baseline:["","last"]}]}],"place-content":[{"place-content":R()}],"place-items":[{"place-items":[...W(),"baseline"]}],"place-self":[{"place-self":["auto",...W()]}],p:[{p:E()}],px:[{px:E()}],py:[{py:E()}],ps:[{ps:E()}],pe:[{pe:E()}],pt:[{pt:E()}],pr:[{pr:E()}],pb:[{pb:E()}],pl:[{pl:E()}],m:[{m:ee()}],mx:[{mx:ee()}],my:[{my:ee()}],ms:[{ms:ee()}],me:[{me:ee()}],mt:[{mt:ee()}],mr:[{mr:ee()}],mb:[{mb:ee()}],ml:[{ml:ee()}],"space-x":[{"space-x":E()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":E()}],"space-y-reverse":["space-y-reverse"],size:[{size:er()}],w:[{w:[s,"screen",...er()]}],"min-w":[{"min-w":[s,"screen","none",...er()]}],"max-w":[{"max-w":[s,"screen","none","prose",{screen:[l]},...er()]}],h:[{h:["screen",...er()]}],"min-h":[{"min-h":["screen","none",...er()]}],"max-h":[{"max-h":["screen",...er()]}],"font-size":[{text:["base",t,Q,D]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,Z,F]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",P,G]}],"font-family":[{font:[X,G,r]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,Z,G]}],"line-clamp":[{"line-clamp":[$,"none",Z,F]}],leading:[{leading:[a,...E()]}],"list-image":[{"list-image":["none",Z,G]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Z,G]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:et()}],"text-color":[{text:et()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ed(),"wavy"]}],"text-decoration-thickness":[{decoration:[$,"from-font","auto",Z,D]}],"text-decoration-color":[{decoration:et()}],"underline-offset":[{"underline-offset":[$,"auto",Z,G]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:E()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Z,G]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Z,G]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:eo()}],"bg-repeat":[{bg:en()}],"bg-size":[{bg:ea()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},A,Z,G],radial:["",Z,G],conic:[A,Z,G]},J,q]}],"bg-color":[{bg:et()}],"gradient-from-pos":[{from:el()}],"gradient-via-pos":[{via:el()}],"gradient-to-pos":[{to:el()}],"gradient-from":[{from:et()}],"gradient-via":[{via:et()}],"gradient-to":[{to:et()}],rounded:[{rounded:es()}],"rounded-s":[{"rounded-s":es()}],"rounded-e":[{"rounded-e":es()}],"rounded-t":[{"rounded-t":es()}],"rounded-r":[{"rounded-r":es()}],"rounded-b":[{"rounded-b":es()}],"rounded-l":[{"rounded-l":es()}],"rounded-ss":[{"rounded-ss":es()}],"rounded-se":[{"rounded-se":es()}],"rounded-ee":[{"rounded-ee":es()}],"rounded-es":[{"rounded-es":es()}],"rounded-tl":[{"rounded-tl":es()}],"rounded-tr":[{"rounded-tr":es()}],"rounded-br":[{"rounded-br":es()}],"rounded-bl":[{"rounded-bl":es()}],"border-w":[{border:ei()}],"border-w-x":[{"border-x":ei()}],"border-w-y":[{"border-y":ei()}],"border-w-s":[{"border-s":ei()}],"border-w-e":[{"border-e":ei()}],"border-w-t":[{"border-t":ei()}],"border-w-r":[{"border-r":ei()}],"border-w-b":[{"border-b":ei()}],"border-w-l":[{"border-l":ei()}],"divide-x":[{"divide-x":ei()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ei()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ed(),"hidden","none"]}],"divide-style":[{divide:[...ed(),"hidden","none"]}],"border-color":[{border:et()}],"border-color-x":[{"border-x":et()}],"border-color-y":[{"border-y":et()}],"border-color-s":[{"border-s":et()}],"border-color-e":[{"border-e":et()}],"border-color-t":[{"border-t":et()}],"border-color-r":[{"border-r":et()}],"border-color-b":[{"border-b":et()}],"border-color-l":[{"border-l":et()}],"divide-color":[{divide:et()}],"outline-style":[{outline:[...ed(),"none","hidden"]}],"outline-offset":[{"outline-offset":[$,Z,G]}],"outline-w":[{outline:["",$,Q,D]}],"outline-color":[{outline:et()}],shadow:[{shadow:["","none",c,K,B]}],"shadow-color":[{shadow:et()}],"inset-shadow":[{"inset-shadow":["none",u,K,B]}],"inset-shadow-color":[{"inset-shadow":et()}],"ring-w":[{ring:ei()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:et()}],"ring-offset-w":[{"ring-offset":[$,D]}],"ring-offset-color":[{"ring-offset":et()}],"inset-ring-w":[{"inset-ring":ei()}],"inset-ring-color":[{"inset-ring":et()}],"text-shadow":[{"text-shadow":["none",m,K,B]}],"text-shadow-color":[{"text-shadow":et()}],opacity:[{opacity:[$,Z,G]}],"mix-blend":[{"mix-blend":[...ec(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ec()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[$]}],"mask-image-linear-from-pos":[{"mask-linear-from":eu()}],"mask-image-linear-to-pos":[{"mask-linear-to":eu()}],"mask-image-linear-from-color":[{"mask-linear-from":et()}],"mask-image-linear-to-color":[{"mask-linear-to":et()}],"mask-image-t-from-pos":[{"mask-t-from":eu()}],"mask-image-t-to-pos":[{"mask-t-to":eu()}],"mask-image-t-from-color":[{"mask-t-from":et()}],"mask-image-t-to-color":[{"mask-t-to":et()}],"mask-image-r-from-pos":[{"mask-r-from":eu()}],"mask-image-r-to-pos":[{"mask-r-to":eu()}],"mask-image-r-from-color":[{"mask-r-from":et()}],"mask-image-r-to-color":[{"mask-r-to":et()}],"mask-image-b-from-pos":[{"mask-b-from":eu()}],"mask-image-b-to-pos":[{"mask-b-to":eu()}],"mask-image-b-from-color":[{"mask-b-from":et()}],"mask-image-b-to-color":[{"mask-b-to":et()}],"mask-image-l-from-pos":[{"mask-l-from":eu()}],"mask-image-l-to-pos":[{"mask-l-to":eu()}],"mask-image-l-from-color":[{"mask-l-from":et()}],"mask-image-l-to-color":[{"mask-l-to":et()}],"mask-image-x-from-pos":[{"mask-x-from":eu()}],"mask-image-x-to-pos":[{"mask-x-to":eu()}],"mask-image-x-from-color":[{"mask-x-from":et()}],"mask-image-x-to-color":[{"mask-x-to":et()}],"mask-image-y-from-pos":[{"mask-y-from":eu()}],"mask-image-y-to-pos":[{"mask-y-to":eu()}],"mask-image-y-from-color":[{"mask-y-from":et()}],"mask-image-y-to-color":[{"mask-y-to":et()}],"mask-image-radial":[{"mask-radial":[Z,G]}],"mask-image-radial-from-pos":[{"mask-radial-from":eu()}],"mask-image-radial-to-pos":[{"mask-radial-to":eu()}],"mask-image-radial-from-color":[{"mask-radial-from":et()}],"mask-image-radial-to-color":[{"mask-radial-to":et()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":x()}],"mask-image-conic-pos":[{"mask-conic":[$]}],"mask-image-conic-from-pos":[{"mask-conic-from":eu()}],"mask-image-conic-to-pos":[{"mask-conic-to":eu()}],"mask-image-conic-from-color":[{"mask-conic-from":et()}],"mask-image-conic-to-color":[{"mask-conic-to":et()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:eo()}],"mask-repeat":[{mask:en()}],"mask-size":[{mask:ea()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Z,G]}],filter:[{filter:["","none",Z,G]}],blur:[{blur:em()}],brightness:[{brightness:[$,Z,G]}],contrast:[{contrast:[$,Z,G]}],"drop-shadow":[{"drop-shadow":["","none",p,K,B]}],"drop-shadow-color":[{"drop-shadow":et()}],grayscale:[{grayscale:["",$,Z,G]}],"hue-rotate":[{"hue-rotate":[$,Z,G]}],invert:[{invert:["",$,Z,G]}],saturate:[{saturate:[$,Z,G]}],sepia:[{sepia:["",$,Z,G]}],"backdrop-filter":[{"backdrop-filter":["","none",Z,G]}],"backdrop-blur":[{"backdrop-blur":em()}],"backdrop-brightness":[{"backdrop-brightness":[$,Z,G]}],"backdrop-contrast":[{"backdrop-contrast":[$,Z,G]}],"backdrop-grayscale":[{"backdrop-grayscale":["",$,Z,G]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[$,Z,G]}],"backdrop-invert":[{"backdrop-invert":["",$,Z,G]}],"backdrop-opacity":[{"backdrop-opacity":[$,Z,G]}],"backdrop-saturate":[{"backdrop-saturate":[$,Z,G]}],"backdrop-sepia":[{"backdrop-sepia":["",$,Z,G]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":E()}],"border-spacing-x":[{"border-spacing-x":E()}],"border-spacing-y":[{"border-spacing-y":E()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Z,G]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[$,"initial",Z,G]}],ease:[{ease:["linear","initial",h,Z,G]}],delay:[{delay:[$,Z,G]}],animate:[{animate:["none",v,Z,G]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[b,Z,G]}],"perspective-origin":[{"perspective-origin":k()}],rotate:[{rotate:ep()}],"rotate-x":[{"rotate-x":ep()}],"rotate-y":[{"rotate-y":ep()}],"rotate-z":[{"rotate-z":ep()}],scale:[{scale:ef()}],"scale-x":[{"scale-x":ef()}],"scale-y":[{"scale-y":ef()}],"scale-z":[{"scale-z":ef()}],"scale-3d":["scale-3d"],skew:[{skew:eb()}],"skew-x":[{"skew-x":eb()}],"skew-y":[{"skew-y":eb()}],transform:[{transform:[Z,G,"","none","gpu","cpu"]}],"transform-origin":[{origin:k()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:eg()}],"translate-x":[{"translate-x":eg()}],"translate-y":[{"translate-y":eg()}],"translate-z":[{"translate-z":eg()}],"translate-none":["translate-none"],accent:[{accent:et()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:et()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Z,G]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":E()}],"scroll-mx":[{"scroll-mx":E()}],"scroll-my":[{"scroll-my":E()}],"scroll-ms":[{"scroll-ms":E()}],"scroll-me":[{"scroll-me":E()}],"scroll-mt":[{"scroll-mt":E()}],"scroll-mr":[{"scroll-mr":E()}],"scroll-mb":[{"scroll-mb":E()}],"scroll-ml":[{"scroll-ml":E()}],"scroll-p":[{"scroll-p":E()}],"scroll-px":[{"scroll-px":E()}],"scroll-py":[{"scroll-py":E()}],"scroll-ps":[{"scroll-ps":E()}],"scroll-pe":[{"scroll-pe":E()}],"scroll-pt":[{"scroll-pt":E()}],"scroll-pr":[{"scroll-pr":E()}],"scroll-pb":[{"scroll-pb":E()}],"scroll-pl":[{"scroll-pl":E()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Z,G]}],fill:[{fill:["none",...et()]}],"stroke-w":[{stroke:[$,Q,D,F]}],stroke:[{stroke:["none",...et()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}})},9708:(e,r,t)=>{t.d(r,{TL:()=>l});var o=t(2115),n=t(6101),a=t(5155);function l(e){let r=function(e){let r=o.forwardRef((e,r)=>{let{children:t,...a}=e;if(o.isValidElement(t)){var l;let e,s,i=(l=t,(s=(e=Object.getOwnPropertyDescriptor(l.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.ref:(s=(e=Object.getOwnPropertyDescriptor(l,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.props.ref:l.props.ref||l.ref),d=function(e,r){let t={...r};for(let o in r){let n=e[o],a=r[o];/^on[A-Z]/.test(o)?n&&a?t[o]=(...e)=>{a(...e),n(...e)}:n&&(t[o]=n):"style"===o?t[o]={...n,...a}:"className"===o&&(t[o]=[n,a].filter(Boolean).join(" "))}return{...e,...t}}(a,t.props);return t.type!==o.Fragment&&(d.ref=r?(0,n.t)(r,i):i),o.cloneElement(t,d)}return o.Children.count(t)>1?o.Children.only(null):null});return r.displayName=`${e}.SlotClone`,r}(e),t=o.forwardRef((e,t)=>{let{children:n,...l}=e,s=o.Children.toArray(n),d=s.find(i);if(d){let e=d.props.children,n=s.map(r=>r!==d?r:o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null);return(0,a.jsx)(r,{...l,ref:t,children:o.isValidElement(e)?o.cloneElement(e,void 0,n):null})}return(0,a.jsx)(r,{...l,ref:t,children:n})});return t.displayName=`${e}.Slot`,t}var s=Symbol("radix.slottable");function i(e){return o.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===s}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/595-993b621b2225d9dc.js b/docs/_next/static/chunks/595-993b621b2225d9dc.js deleted file mode 100644 index 6496adb4..00000000 --- a/docs/_next/static/chunks/595-993b621b2225d9dc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[595],{344:(e,t,n)=>{n.d(t,{Image:()=>r._V,a8:()=>r.a8,q6:()=>r.q6,rd:()=>r.rd});var r=n(9600);n(9189)},1339:(e,t,n)=>{n.d(t,{NavProvider:()=>s,StylesProvider:()=>u,h:()=>d,v:()=>i});var r=n(5155),o=n(2115),a=n(344);let c=(0,a.q6)("StylesContext",{tocNav:"xl:hidden",toc:"max-xl:hidden"});function i(){return c.use()}function u(e){let{children:t,...n}=e;return(0,r.jsx)(c.Provider,{value:n,children:t})}let l=(0,a.q6)("NavContext",{isTransparent:!1});function s(e){let{transparentMode:t="none",children:n}=e,[a,c]=(0,o.useState)("none"!==t);return(0,o.useEffect)(()=>{if("top"!==t)return;let e=()=>{c(window.scrollY<10)};return e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[t]),(0,r.jsx)(l.Provider,{value:(0,o.useMemo)(()=>({isTransparent:a}),[a]),children:n})}function d(){return l.use()}},3795:(e,t,n)=>{n.d(t,{A:()=>z});var r,o,a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}Object.create;Object.create;var i=("function"==typeof SuppressedError&&SuppressedError,n(2115)),u="right-scroll-bar-position",l="width-before-scroll-bar";function s(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var d="undefined"!=typeof window?i.useLayoutEffect:i.useEffect,f=new WeakMap;function h(e){return e}var v=function(e){void 0===e&&(e={});var t,n,r,o,c=(t=null,void 0===n&&(n=h),r=[],o=!1,{read:function(){if(o)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:null},useMedium:function(e){var t=n(e,o);return r.push(t),function(){r=r.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(o=!0;r.length;){var t=r;r=[],t.forEach(e)}r={push:function(t){return e(t)},filter:function(){return r}}},assignMedium:function(e){o=!0;var t=[];if(r.length){var n=r;r=[],n.forEach(e),t=r}var a=function(){var n=t;t=[],n.forEach(e)},c=function(){return Promise.resolve().then(a)};c(),r={push:function(e){t.push(e),c()},filter:function(e){return t=t.filter(e),r}}}});return c.options=a({async:!0,ssr:!1},e),c}(),p=function(){},m=i.forwardRef(function(e,t){var n,r,o,u,l=i.useRef(null),h=i.useState({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:p}),m=h[0],g=h[1],w=e.forwardProps,y=e.children,b=e.className,E=e.removeScrollBar,C=e.enabled,x=e.shards,P=e.sideCar,S=e.noIsolation,k=e.inert,R=e.allowPinchZoom,L=e.as,N=e.gapMode,M=c(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),j=(n=[l,t],r=function(e){return n.forEach(function(t){return s(t,e)})},(o=(0,i.useState)(function(){return{value:null,callback:r,facade:{get current(){return o.value},set current(value){var e=o.value;e!==value&&(o.value=value,o.callback(value,e))}}}})[0]).callback=r,u=o.facade,d(function(){var e=f.get(u);if(e){var t=new Set(e),r=new Set(n),o=u.current;t.forEach(function(e){r.has(e)||s(e,null)}),r.forEach(function(e){t.has(e)||s(e,o)})}f.set(u,n)},[n]),u),T=a(a({},M),m);return i.createElement(i.Fragment,null,C&&i.createElement(P,{sideCar:v,removeScrollBar:E,shards:x,noIsolation:S,inert:k,setCallbacks:g,allowPinchZoom:!!R,lockRef:l,gapMode:N}),w?i.cloneElement(i.Children.only(y),a(a({},T),{ref:j})):i.createElement(void 0===L?"div":L,a({},T,{className:b,ref:j}),y))});m.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},m.classNames={fullWidth:l,zeroRight:u};var g=function(e){var t=e.sideCar,n=c(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error("Sidecar medium not found");return i.createElement(r,a({},n))};g.isSideCarExport=!0;var w=function(){var e=0,t=null;return{add:function(r){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=o||n.nc;return t&&e.setAttribute("nonce",t),e}())){var a,c;(a=t).styleSheet?a.styleSheet.cssText=r:a.appendChild(document.createTextNode(r)),c=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(c)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},y=function(){var e=w();return function(t,n){i.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},b=function(){var e=y();return function(t){return e(t.styles,t.dynamic),null}},E={left:0,top:0,right:0,gap:0},C=function(e){return parseInt(e||"",10)||0},x=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[C(n),C(r),C(o)]},P=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return E;var t=x(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},S=b(),k="data-scroll-locked",R=function(e,t,n,r){var o=e.left,a=e.top,c=e.right,i=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(i,"px ").concat(r,";\n }\n body[").concat(k,"] {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(c,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(i,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(i,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(u," {\n right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(l," {\n margin-right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(u," .").concat(u," {\n right: 0 ").concat(r,";\n }\n \n .").concat(l," .").concat(l," {\n margin-right: 0 ").concat(r,";\n }\n \n body[").concat(k,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(i,"px;\n }\n")},L=function(){var e=parseInt(document.body.getAttribute(k)||"0",10);return isFinite(e)?e:0},N=function(){i.useEffect(function(){return document.body.setAttribute(k,(L()+1).toString()),function(){var e=L()-1;e<=0?document.body.removeAttribute(k):document.body.setAttribute(k,e.toString())}},[])},M=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=void 0===r?"margin":r;N();var a=i.useMemo(function(){return P(o)},[o]);return i.createElement(S,{styles:R(a,!t,o,n?"":"!important")})},j=!1;if("undefined"!=typeof window)try{var T=Object.defineProperty({},"passive",{get:function(){return j=!0,!0}});window.addEventListener("test",T,T),window.removeEventListener("test",T,T)}catch(e){j=!1}var O=!!j&&{passive:!1},I=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return"hidden"!==n[t]&&(n.overflowY!==n.overflowX||"TEXTAREA"===e.tagName||"visible"!==n[t])},A=function(e,t){var n=t.ownerDocument,r=t;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),B(e,r)){var o=Y(e,r);if(o[1]>o[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},B=function(e,t){return"v"===e?I(t,"overflowY"):I(t,"overflowX")},Y=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},W=function(e,t,n,r,o){var a,c=(a=window.getComputedStyle(t).direction,"h"===e&&"rtl"===a?-1:1),i=c*r,u=n.target,l=t.contains(u),s=!1,d=i>0,f=0,h=0;do{var v=Y(e,u),p=v[0],m=v[1]-v[2]-c*p;(p||m)&&B(e,u)&&(f+=m,h+=p),u=u instanceof ShadowRoot?u.host:u.parentNode}while(!l&&u!==document.body||l&&(t.contains(u)||t===u));return d&&(o&&1>Math.abs(f)||!o&&i>f)?s=!0:!d&&(o&&1>Math.abs(h)||!o&&-i>h)&&(s=!0),s},X=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},_=function(e){return[e.deltaX,e.deltaY]},q=function(e){return e&&"current"in e?e.current:e},F=0,H=[];let Z=(r=function(e){var t=i.useRef([]),n=i.useRef([0,0]),r=i.useRef(),o=i.useState(F++)[0],a=i.useState(b)[0],c=i.useRef(e);i.useEffect(function(){c.current=e},[e]),i.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var t=(function(e,t,n){if(n||2==arguments.length)for(var r,o=0,a=t.length;oMath.abs(l)?"h":"v";if("touches"in e&&"h"===d&&"range"===s.type)return!1;var f=A(d,s);if(!f)return!0;if(f?o=d:(o="v"===d?"h":"v",f=A(d,s)),!f)return!1;if(!r.current&&"changedTouches"in e&&(u||l)&&(r.current=o),!o)return!0;var h=r.current||o;return W(h,t,e,"h"===h?u:l,!0)},[]),l=i.useCallback(function(e){if(H.length&&H[H.length-1]===a){var n="deltaY"in e?_(e):X(e),r=t.current.filter(function(t){var r;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(r=t.delta,r[0]===n[0]&&r[1]===n[1])})[0];if(r&&r.should){e.cancelable&&e.preventDefault();return}if(!r){var o=(c.current.shards||[]).map(q).filter(Boolean).filter(function(t){return t.contains(e.target)});(o.length>0?u(e,o[0]):!c.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),s=i.useCallback(function(e,n,r,o){var a={name:e,delta:n,target:r,should:o,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=i.useCallback(function(e){n.current=X(e),r.current=void 0},[]),f=i.useCallback(function(t){s(t.type,_(t),t.target,u(t,e.lockRef.current))},[]),h=i.useCallback(function(t){s(t.type,X(t),t.target,u(t,e.lockRef.current))},[]);i.useEffect(function(){return H.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:h}),document.addEventListener("wheel",l,O),document.addEventListener("touchmove",l,O),document.addEventListener("touchstart",d,O),function(){H=H.filter(function(e){return e!==a}),document.removeEventListener("wheel",l,O),document.removeEventListener("touchmove",l,O),document.removeEventListener("touchstart",d,O)}},[]);var v=e.removeScrollBar,p=e.inert;return i.createElement(i.Fragment,null,p?i.createElement(a,{styles:"\n .block-interactivity-".concat(o," {pointer-events: none;}\n .allow-interactivity-").concat(o," {pointer-events: all;}\n")}):null,v?i.createElement(M,{gapMode:e.gapMode}):null)},v.useMedium(r),g);var D=i.forwardRef(function(e,t){return i.createElement(m,a({},e,{ref:t,sideCar:Z}))});D.classNames=m.classNames;let z=D},4315:(e,t,n)=>{n.d(t,{FX:()=>c,jH:()=>i});var r=n(2115),o=n(5155),a=r.createContext(void 0),c=e=>{let{dir:t,children:n}=e;return(0,o.jsx)(a.Provider,{value:t,children:n})};function i(e){let t=r.useContext(a);return e||t||"ltr"}},9189:(e,t,n)=>{},9600:(e,t,n)=>{n.d(t,{N_:()=>d,Uy:()=>i,_V:()=>s,a8:()=>u,q6:()=>f,rd:()=>l});var r=n(2115),o=n(5155),a=()=>{throw Error("You need to wrap your application inside `FrameworkProvider`.")},c=f("FrameworkContext",{useParams:a,useRouter:a,usePathname:a});function i({children:e,...t}){let n=r.useMemo(()=>({usePathname:t.usePathname,useRouter:t.useRouter,Link:t.Link,Image:t.Image,useParams:t.useParams}),[t.Link,t.usePathname,t.useRouter,t.useParams,t.Image]);return(0,o.jsx)(c.Provider,{value:n,children:e})}function u(){return c.use().usePathname()}function l(){return c.use().useRouter()}function s(e){let{Image:t}=c.use();if(!t){let{src:t,alt:n,priority:r,...a}=e;return(0,o.jsx)("img",{alt:n,src:t,fetchPriority:r?"high":"auto",...a})}return(0,o.jsx)(t,{...e})}function d(e){let{Link:t}=c.use();if(!t){let{href:t,prefetch:n,...r}=e;return(0,o.jsx)("a",{href:t,...r})}return(0,o.jsx)(t,{...e})}function f(e,t){let n=r.createContext(t);return{Provider:e=>(0,o.jsx)(n.Provider,{value:e.value,children:e.children}),use:t=>{let o=r.useContext(n);if(!o)throw Error(t??`Provider of ${e} is required but missing.`);return o}}}},9697:(e,t,n)=>{n.d(t,{Cr:()=>o,I18nLabel:()=>c,gJ:()=>a,s9:()=>i});var r=n(2115);let o={search:"Search",searchNoResult:"No results found",toc:"On this page",tocNoHeadings:"No Headings",lastUpdate:"Last updated on",chooseLanguage:"Choose a language",nextPage:"Next Page",previousPage:"Previous Page",chooseTheme:"Theme",editOnGithub:"Edit on GitHub"},a=(0,r.createContext)({text:o});function c(e){let{text:t}=i();return t[e.label]}function i(){return(0,r.useContext)(a)}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/684-db277683248699e5.js b/docs/_next/static/chunks/684-db277683248699e5.js deleted file mode 100644 index af87388b..00000000 --- a/docs/_next/static/chunks/684-db277683248699e5.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[684],{214:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return u}});let n=r(6361),o=r(427),u=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:u}=(0,o.parsePath)(e);return""+(0,n.removeTrailingSlash)(t)+r+u};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},427:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},589:(e,t)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return r}})},666:e=>{!function(){var t={229:function(e){var t,r,n,o=e.exports={};function u(){throw Error("setTimeout has not been defined")}function l(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:u}catch(e){t=u}try{r="function"==typeof clearTimeout?clearTimeout:l}catch(e){r=l}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===u||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var i=[],c=!1,s=-1;function f(){c&&n&&(c=!1,n.length?i=n.concat(i):s=-1,i.length&&d())}function d(){if(!c){var e=a(f);c=!0;for(var t=i.length;t;){for(n=i,i=[];++s1)for(var r=1;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectBoundary:function(){return f},RedirectErrorBoundary:function(){return s}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(8999),a=r(6825),i=r(2210);function c(e){let{redirect:t,reset:r,redirectType:n}=e,o=(0,l.useRouter)();return(0,u.useEffect)(()=>{u.default.startTransition(()=>{n===i.RedirectType.push?o.push(t,{}):o.replace(t,{}),r()})},[t,n,r,o]),null}class s extends u.default.Component{static getDerivedStateFromError(e){if((0,i.isRedirectError)(e))return{redirect:(0,a.getURLFromRedirectError)(e),redirectType:(0,a.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(c,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function f(e){let{children:t}=e,r=(0,l.useRouter)();return(0,o.jsx)(s,{router:r,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},708:(e,t)=>{"use strict";function r(e){return Array.isArray(e)?e[1]:e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentValue",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},774:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTML_LIMITED_BOT_UA_RE:function(){return n.HTML_LIMITED_BOT_UA_RE},HTML_LIMITED_BOT_UA_RE_STRING:function(){return u},getBotType:function(){return i},isBot:function(){return a}});let n=r(5072),o=/Googlebot|Google-PageRenderer|AdsBot-Google|googleweblight|Storebot-Google/i,u=n.HTML_LIMITED_BOT_UA_RE.source;function l(e){return n.HTML_LIMITED_BOT_UA_RE.test(e)}function a(e){return o.test(e)||l(e)}function i(e){return o.test(e)?"dom":l(e)?"html":void 0}},878:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return u}});let n=r(4758),o=r(3118);function u(e,t,r,u,l){let{tree:a,seedData:i,head:c,isRootRender:s}=u;if(null===i)return!1;if(s){let o=i[1];r.loading=i[3],r.rsc=o,r.prefetchRsc=null,(0,n.fillLazyItemsTillLeafWithHead)(e,r,t,a,i,c,l)}else r.rsc=t.rsc,r.prefetchRsc=t.prefetchRsc,r.parallelRoutes=new Map(t.parallelRoutes),r.loading=t.loading,(0,o.fillCacheWithNewSubTreeData)(e,r,t,u,l);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},886:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PathParamsContext:function(){return l},PathnameContext:function(){return u},SearchParamsContext:function(){return o}});let n=r(2115),o=(0,n.createContext)(null),u=(0,n.createContext)(null),l=(0,n.createContext)(null)},894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return o}});let n=r(5155);function o(e){let{Component:t,searchParams:o,params:u,promises:l}=e;{let{createRenderSearchParamsFromClient:e}=r(7205),l=e(o),{createRenderParamsFromClient:a}=r(3558),i=a(u);return(0,n.jsx)(t,{params:i,searchParams:l})}}r(9837),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1027:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{dispatchAppRouterAction:function(){return l},useActionQueue:function(){return a}});let n=r(6966)._(r(2115)),o=r(5122),u=null;function l(e){if(null===u)throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0});u(e)}function a(e){let[t,r]=n.default.useState(e.state);return u=t=>e.dispatch(t,r),(0,o.isThenable)(t)?(0,n.use)(t):t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1127:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"matchSegment",{enumerable:!0,get:function(){return r}});let r=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1];("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1139:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1295:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(5227);function a(){let e=(0,u.useContext)(l.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1315:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"assignLocation",{enumerable:!0,get:function(){return o}});let n=r(5929);function o(e,t){if(e.startsWith(".")){let r=t.origin+t.pathname;return new URL((r.endsWith("/")?r:r+"/")+e)}return new URL((0,n.addBasePath)(e),t.href)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1408:(e,t,r)=>{"use strict";e.exports=r(9393)},1426:(e,t,r)=>{"use strict";var n=r(9509),o=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),c=Symbol.for("react.consumer"),s=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),y=Symbol.iterator,_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,g={};function v(e,t,r){this.props=e,this.context=t,this.refs=g,this.updater=r||_}function m(){}function E(e,t,r){this.props=e,this.context=t,this.refs=g,this.updater=r||_}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},m.prototype=v.prototype;var O=E.prototype=new m;O.constructor=E,b(O,v.prototype),O.isPureReactComponent=!0;var R=Array.isArray,P={H:null,A:null,T:null,S:null},j=Object.prototype.hasOwnProperty;function T(e,t,r,n,u,l){return{$$typeof:o,type:e,key:t,ref:void 0!==(r=l.ref)?r:null,props:l}}function S(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var M=/\/+/g;function w(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function C(){}function x(e,t,r){if(null==e)return e;var n=[],l=0;return!function e(t,r,n,l,a){var i,c,s,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case u:d=!0;break;case h:return e((d=t._init)(t._payload),r,n,l,a)}}if(d)return a=a(t),d=""===l?"."+w(t,0):l,R(a)?(n="",null!=d&&(n=d.replace(M,"$&/")+"/"),e(a,r,n,"",function(e){return e})):null!=a&&(S(a)&&(i=a,c=n+(null==a.key||t&&t.key===a.key?"":(""+a.key).replace(M,"$&/")+"/")+d,a=T(i.type,c,void 0,void 0,void 0,i.props)),r.push(a)),1;d=0;var p=""===l?".":l+":";if(R(t))for(var _=0;_{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DYNAMIC_STALETIME_MS:function(){return d},STATIC_STALETIME_MS:function(){return p},createSeededPrefetchCacheEntry:function(){return c},getOrCreatePrefetchCacheEntry:function(){return i},prunePrefetchCache:function(){return f}});let n=r(8586),o=r(9818),u=r(9154);function l(e,t,r){let n=e.pathname;return(t&&(n+=e.search),r)?""+r+"%"+n:n}function a(e,t,r){return l(e,t===o.PrefetchKind.FULL,r)}function i(e){let{url:t,nextUrl:r,tree:n,prefetchCache:u,kind:a,allowAliasing:i=!0}=e,c=function(e,t,r,n,u){for(let a of(void 0===t&&(t=o.PrefetchKind.TEMPORARY),[r,null])){let r=l(e,!0,a),i=l(e,!1,a),c=e.search?r:i,s=n.get(c);if(s&&u){if(s.url.pathname===e.pathname&&s.url.search!==e.search)return{...s,aliased:!0};return s}let f=n.get(i);if(u&&e.search&&t!==o.PrefetchKind.FULL&&f&&!f.key.includes("%"))return{...f,aliased:!0}}if(t!==o.PrefetchKind.FULL&&u){for(let t of n.values())if(t.url.pathname===e.pathname&&!t.key.includes("%"))return{...t,aliased:!0}}}(t,a,r,u,i);return c?(c.status=h(c),c.kind!==o.PrefetchKind.FULL&&a===o.PrefetchKind.FULL&&c.data.then(e=>{if(!(Array.isArray(e.flightData)&&e.flightData.some(e=>e.isRootRender&&null!==e.seedData)))return s({tree:n,url:t,nextUrl:r,prefetchCache:u,kind:null!=a?a:o.PrefetchKind.TEMPORARY})}),a&&c.kind===o.PrefetchKind.TEMPORARY&&(c.kind=a),c):s({tree:n,url:t,nextUrl:r,prefetchCache:u,kind:a||o.PrefetchKind.TEMPORARY})}function c(e){let{nextUrl:t,tree:r,prefetchCache:n,url:u,data:l,kind:i}=e,c=l.couldBeIntercepted?a(u,i,t):a(u,i),s={treeAtTimeOfPrefetch:r,data:Promise.resolve(l),kind:i,prefetchTime:Date.now(),lastUsedTime:Date.now(),staleTime:-1,key:c,status:o.PrefetchCacheEntryStatus.fresh,url:u};return n.set(c,s),s}function s(e){let{url:t,kind:r,tree:l,nextUrl:i,prefetchCache:c}=e,s=a(t,r),f=u.prefetchQueue.enqueue(()=>(0,n.fetchServerResponse)(t,{flightRouterState:l,nextUrl:i,prefetchKind:r}).then(e=>{let r;if(e.couldBeIntercepted&&(r=function(e){let{url:t,nextUrl:r,prefetchCache:n,existingCacheKey:o}=e,u=n.get(o);if(!u)return;let l=a(t,u.kind,r);return n.set(l,{...u,key:l}),n.delete(o),l}({url:t,existingCacheKey:s,nextUrl:i,prefetchCache:c})),e.prerendered){let t=c.get(null!=r?r:s);t&&(t.kind=o.PrefetchKind.FULL,-1!==e.staleTime&&(t.staleTime=e.staleTime))}return e})),d={treeAtTimeOfPrefetch:l,data:f,kind:r,prefetchTime:Date.now(),lastUsedTime:null,staleTime:-1,key:s,status:o.PrefetchCacheEntryStatus.fresh,url:t};return c.set(s,d),d}function f(e){for(let[t,r]of e)h(r)===o.PrefetchCacheEntryStatus.expired&&e.delete(t)}let d=1e3*Number("0"),p=1e3*Number("300");function h(e){let{kind:t,prefetchTime:r,lastUsedTime:n,staleTime:u}=e;return -1!==u?Date.now(){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BrowserResolvedMetadata",{enumerable:!0,get:function(){return o}});let n=r(2115);function o(e){let{promise:t}=e,{metadata:r,error:o}=(0,n.use)(t);return o?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1646:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{globalThis.console.error(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1747:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(427);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},1818:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findSourceMapURL",{enumerable:!0,get:function(){return r}});let r=void 0;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1822:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return r}});let r={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2004:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let n=r(5637);function o(e,t,r){for(let o in r[1]){let u=r[1][o][0],l=(0,n.createRouterCacheKey)(u),a=t.parallelRoutes.get(o);if(a){let t=new Map(a);t.delete(l),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2115:(e,t,r)=>{"use strict";e.exports=r(1426)},2210:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{REDIRECT_ERROR_CODE:function(){return o},RedirectType:function(){return u},isRedirectError:function(){return l}});let n=r(4420),o="NEXT_REDIRECT";var u=function(e){return e.push="push",e.replace="replace",e}({});function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,u]=t,l=t.slice(2,-2).join(";"),a=Number(t.at(-2));return r===o&&("replace"===u||"push"===u)&&"string"==typeof l&&!isNaN(a)&&a in n.RedirectStatusCode}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2223:(e,t)=>{"use strict";function r(e,t){var r=e.length;for(e.push(t);0>>1,o=e[n];if(0>>1;nu(i,r))cu(s,i)?(e[n]=s,e[c]=r,n=c):(e[n]=i,e[a]=r,n=a);else if(cu(s,r))e[n]=s,e[c]=r,n=c;else break}}return t}function u(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var l,a=performance;t.unstable_now=function(){return a.now()}}else{var i=Date,c=i.now();t.unstable_now=function(){return i.now()-c}}var s=[],f=[],d=1,p=null,h=3,y=!1,_=!1,b=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,m="function"==typeof clearTimeout?clearTimeout:null,E="undefined"!=typeof setImmediate?setImmediate:null;function O(e){for(var t=n(f);null!==t;){if(null===t.callback)o(f);else if(t.startTime<=e)o(f),t.sortIndex=t.expirationTime,r(s,t);else break;t=n(f)}}function R(e){if(b=!1,O(e),!_)if(null!==n(s))_=!0,P||(P=!0,l());else{var t=n(f);null!==t&&A(R,t.startTime-e)}}var P=!1,j=-1,T=5,S=-1;function M(){return!!g||!(t.unstable_now()-Se&&M());){var a=p.callback;if("function"==typeof a){p.callback=null,h=p.priorityLevel;var i=a(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof i){p.callback=i,O(e),r=!0;break t}p===n(s)&&o(s),O(e)}else o(s);p=n(s)}if(null!==p)r=!0;else{var c=n(f);null!==c&&A(R,c.startTime-e),r=!1}}break e}finally{p=null,h=u,y=!1}}}finally{r?l():P=!1}}}if("function"==typeof E)l=function(){E(w)};else if("undefined"!=typeof MessageChannel){var C=new MessageChannel,x=C.port2;C.port1.onmessage=w,l=function(){x.postMessage(null)}}else l=function(){v(w,0)};function A(e,r){j=v(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125a?(e.sortIndex=u,r(f,e),null===n(s)&&e===n(f)&&(b?(m(j),j=-1):b=!0,A(R,u-a))):(e.sortIndex=i,r(s,e),_||y||(_=!0,P||(P=!0,l()))),e},t.unstable_shouldYield=M,t.unstable_wrapCallback=function(e){var t=h;return function(){var r=h;h=t;try{return e.apply(this,arguments)}finally{h=r}}}},2312:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return c}});let n=r(5952),o=r(6420);var u=o._("_maxConcurrency"),l=o._("_runningCount"),a=o._("_queue"),i=o._("_processNext");class c{enqueue(e){let t,r,o=new Promise((e,n)=>{t=e,r=n}),u=async()=>{try{n._(this,l)[l]++;let r=await e();t(r)}catch(e){r(e)}finally{n._(this,l)[l]--,n._(this,i)[i]()}};return n._(this,a)[a].push({promiseFn:o,task:u}),n._(this,i)[i](),o}bump(e){let t=n._(this,a)[a].findIndex(t=>t.promiseFn===e);if(t>-1){let e=n._(this,a)[a].splice(t,1)[0];n._(this,a)[a].unshift(e),n._(this,i)[i](!0)}}constructor(e=5){Object.defineProperty(this,i,{value:s}),Object.defineProperty(this,u,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),Object.defineProperty(this,a,{writable:!0,value:void 0}),n._(this,u)[u]=e,n._(this,l)[l]=0,n._(this,a)[a]=[]}}function s(e){if(void 0===e&&(e=!1),(n._(this,l)[l]0){var t;null==(t=n._(this,a)[a].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2561:(e,t)=>{"use strict";function r(e){var t;let[r,n,o,u]=e.slice(-4),l=e.slice(0,-4);return{pathToSegment:l.slice(0,-1),segmentPath:l,segment:null!=(t=l[l.length-1])?t:"",tree:r,seedData:n,head:o,isHeadPartial:u,isRootRender:4===e.length}}function n(e){return e.slice(2)}function o(e){return"string"==typeof e?e:e.map(r)}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getFlightDataPartsFromPath:function(){return r},getNextFlightSegmentPath:function(){return n},normalizeFlightData:function(){return o}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2669:(e,t,r)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=r(9248)},2691:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findHeadInCache",{enumerable:!0,get:function(){return o}});let n=r(5637);function o(e,t){return function e(t,r,o){if(0===Object.keys(r).length)return[t,o];if(r.children){let[u,l]=r.children,a=t.parallelRoutes.get("children");if(a){let t=(0,n.createRouterCacheKey)(u),r=a.get(t);if(r){let n=e(r,l,o+"/"+t);if(n)return n}}}for(let u in r){if("children"===u)continue;let[l,a]=r[u],i=t.parallelRoutes.get(u);if(!i)continue;let c=(0,n.createRouterCacheKey)(l),s=i.get(c);if(!s)continue;let f=e(s,a,o+"/"+c);if(f)return f}return null}(e,t,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2816:(e,t)=>{"use strict";function r(e){let t=parseInt(e.slice(0,2),16),r=t>>1&63,n=Array(6);for(let e=0;e<6;e++){let t=r>>5-e&1;n[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:n,hasRestArgs:1==(1&t)}}function n(e,t){let r=Array(e.length);for(let n=0;n=6&&t.hasRestArgs)&&(r[n]=e[n]);return r}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{extractInfoFromServerReferenceId:function(){return r},omitUnusedArgs:function(){return n}})},2830:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=r(8229)._(r(2115)).default.createContext({})},2858:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return u}});let n=r(6494),o=r(2210);function u(e){return(0,o.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3118:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{fillCacheWithNewSubTreeData:function(){return i},fillCacheWithNewSubTreeDataButOnlyLoading:function(){return c}});let n=r(2004),o=r(4758),u=r(5637),l=r(8291);function a(e,t,r,a,i,c){let{segmentPath:s,seedData:f,tree:d,head:p}=a,h=t,y=r;for(let t=0;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},3269:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_HEADER:function(){return n},FLIGHT_HEADERS:function(){return f},NEXT_DID_POSTPONE_HEADER:function(){return h},NEXT_HMR_REFRESH_HASH_COOKIE:function(){return i},NEXT_HMR_REFRESH_HEADER:function(){return a},NEXT_IS_PRERENDER_HEADER:function(){return b},NEXT_REWRITTEN_PATH_HEADER:function(){return y},NEXT_REWRITTEN_QUERY_HEADER:function(){return _},NEXT_ROUTER_PREFETCH_HEADER:function(){return u},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return l},NEXT_ROUTER_STALE_TIME_HEADER:function(){return p},NEXT_ROUTER_STATE_TREE_HEADER:function(){return o},NEXT_RSC_UNION_QUERY:function(){return d},NEXT_URL:function(){return c},RSC_CONTENT_TYPE_HEADER:function(){return s},RSC_HEADER:function(){return r}});let r="RSC",n="Next-Action",o="Next-Router-State-Tree",u="Next-Router-Prefetch",l="Next-Router-Segment-Prefetch",a="Next-HMR-Refresh",i="__next_hmr_refresh_hash__",c="Next-Url",s="text/x-component",f=[r,o,u,a,l],d="_rsc",p="x-nextjs-stale-time",h="x-nextjs-postponed",y="x-nextjs-rewritten-path",_="x-nextjs-rewritten-query",b="x-nextjs-prerender";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3506:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"attachHydrationErrorState",{enumerable:!0,get:function(){return u}});let n=r(6465),o=r(9771);function u(e){let t={},r=(0,n.testReactHydrationWarning)(e.message),u=(0,n.isHydrationError)(e);if(!(u||r))return;let l=(0,o.getReactHydrationDiffSegments)(e.message);if(l){let a=l[1];t={...e.details,...o.hydrationErrorState,warning:(a&&!r?null:o.hydrationErrorState.warning)||[(0,n.getDefaultHydrationErrorMessage)(),"",""],notes:r?"":l[0],reactOutputComponentDiff:a},!o.hydrationErrorState.reactOutputComponentDiff&&a&&(o.hydrationErrorState.reactOutputComponentDiff=a),!a&&u&&o.hydrationErrorState.reactOutputComponentDiff&&(t.reactOutputComponentDiff=o.hydrationErrorState.reactOutputComponentDiff)}else o.hydrationErrorState.warning&&(t={...e.details,...o.hydrationErrorState}),o.hydrationErrorState.reactOutputComponentDiff&&(t.reactOutputComponentDiff=o.hydrationErrorState.reactOutputComponentDiff);e.details=t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3507:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return u}});let n=r(8946);function o(e){return void 0!==e}function u(e,t){var r,u;let l=null==(r=t.shouldScroll)||r,a=e.nextUrl;if(o(t.patchedTree)){let r=(0,n.computeChangedPath)(e.tree,t.patchedTree);r?a=r:a||(a=e.canonicalUrl)}return{canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!l&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:t.onlyHashChange||!1,hashFragment:l?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:l?null!=(u=null==t?void 0:t.scrollableSegments)?u:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:a}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3558:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=r(7829).makeUntrackedExoticParams;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3567:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return s}});let n=r(1139),o=r(4758),u=r(8946),l=r(1518),a=r(9818),i=r(4908),c=r(2561);function s(e){var t,r;let{navigatedAt:s,initialFlightData:f,initialCanonicalUrlParts:d,initialParallelRoutes:p,location:h,couldBeIntercepted:y,postponed:_,prerendered:b}=e,g=d.join("/"),v=(0,c.getFlightDataPartsFromPath)(f[0]),{tree:m,seedData:E,head:O}=v,R={lazyData:null,rsc:null==E?void 0:E[1],prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:p,loading:null!=(t=null==E?void 0:E[3])?t:null,navigatedAt:s},P=h?(0,n.createHrefFromUrl)(h):g;(0,i.addRefreshMarkerToActiveParallelSegments)(m,P);let j=new Map;(null===p||0===p.size)&&(0,o.fillLazyItemsTillLeafWithHead)(s,R,void 0,m,E,O,void 0);let T={tree:m,cache:R,prefetchCache:j,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:P,nextUrl:null!=(r=(0,u.extractPathFromFlightRouterState)(m)||(null==h?void 0:h.pathname))?r:null};if(h){let e=new URL(""+h.pathname+h.search,h.origin);(0,l.createSeededPrefetchCacheEntry)({url:e,data:{flightData:[v],canonicalUrl:void 0,couldBeIntercepted:!!y,prerendered:b,postponed:_,staleTime:-1},tree:T.tree,prefetchCache:T.prefetchCache,nextUrl:T.nextUrl,kind:b?a.PrefetchKind.FULL:a.PrefetchKind.AUTO})}return T}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3612:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hmrRefreshReducer",{enumerable:!0,get:function(){return n}}),r(8586),r(1139),r(7442),r(9234),r(3894),r(3507),r(878),r(6158),r(6375),r(4108);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3668:(e,t)=>{"use strict";function r(){return""}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return r}})},3678:(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"forbidden",{enumerable:!0,get:function(){return n}}),r(6494).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3806:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callServer",{enumerable:!0,get:function(){return l}});let n=r(2115),o=r(9818),u=r(1027);async function l(e,t){return new Promise((r,l)=>{(0,n.startTransition)(()=>{(0,u.dispatchAppRouterAction)({type:o.ACTION_SERVER_ACTION,actionId:e,actionArgs:t,resolve:r,reject:l})})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleExternalUrl:function(){return v},navigateReducer:function(){return function e(t,r){let{url:E,isExternalUrl:O,navigateType:R,shouldScroll:P,allowAliasing:j}=r,T={},{hash:S}=E,M=(0,o.createHrefFromUrl)(E),w="push"===R;if((0,_.prunePrefetchCache)(t.prefetchCache),T.preserveCustomHistoryState=!1,T.pendingPush=w,O)return v(t,T,E.toString(),w);if(document.getElementById("__next-page-redirect"))return v(t,T,M,w);let C=(0,_.getOrCreatePrefetchCacheEntry)({url:E,nextUrl:t.nextUrl,tree:t.tree,prefetchCache:t.prefetchCache,allowAliasing:j}),{treeAtTimeOfPrefetch:x,data:A}=C;return d.prefetchQueue.bump(A),A.then(d=>{let{flightData:_,canonicalUrl:O,postponed:R}=d,j=Date.now(),A=!1;if(C.lastUsedTime||(C.lastUsedTime=j,A=!0),C.aliased){let n=(0,g.handleAliasedPrefetchEntry)(j,t,_,E,T);return!1===n?e(t,{...r,allowAliasing:!1}):n}if("string"==typeof _)return v(t,T,_,w);let N=O?(0,o.createHrefFromUrl)(O):M;if(S&&t.canonicalUrl.split("#",1)[0]===N.split("#",1)[0])return T.onlyHashChange=!0,T.canonicalUrl=N,T.shouldScroll=P,T.hashFragment=S,T.scrollableSegments=[],(0,s.handleMutable)(t,T);let D=t.tree,U=t.cache,L=[];for(let e of _){let{pathToSegment:r,seedData:o,head:s,isHeadPartial:d,isRootRender:_}=e,g=e.tree,O=["",...r],P=(0,l.applyRouterStatePatchToTree)(O,D,g,M);if(null===P&&(P=(0,l.applyRouterStatePatchToTree)(O,x,g,M)),null!==P){if(o&&_&&R){let e=(0,y.startPPRNavigation)(j,U,D,g,o,s,d,!1,L);if(null!==e){if(null===e.route)return v(t,T,M,w);P=e.route;let r=e.node;null!==r&&(T.cache=r);let o=e.dynamicRequestTree;if(null!==o){let r=(0,n.fetchServerResponse)(E,{flightRouterState:o,nextUrl:t.nextUrl});(0,y.listenForDynamicRequest)(e,r)}}else P=g}else{if((0,i.isNavigatingToNewRootLayout)(D,P))return v(t,T,M,w);let n=(0,p.createEmptyCacheNode)(),o=!1;for(let t of(C.status!==c.PrefetchCacheEntryStatus.stale||A?o=(0,f.applyFlightData)(j,U,n,e,C):(o=function(e,t,r,n){let o=!1;for(let u of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),m(n).map(e=>[...r,...e])))(0,b.clearCacheNodeDataForSegmentPath)(e,t,u),o=!0;return o}(n,U,r,g),C.lastUsedTime=j),(0,a.shouldHardNavigate)(O,D)?(n.rsc=U.rsc,n.prefetchRsc=U.prefetchRsc,(0,u.invalidateCacheBelowFlightSegmentPath)(n,U,r),T.cache=n):o&&(T.cache=n,U=n),m(g))){let e=[...r,...t];e[e.length-1]!==h.DEFAULT_SEGMENT_KEY&&L.push(e)}}D=P}}return T.patchedTree=D,T.canonicalUrl=N,T.scrollableSegments=L,T.hashFragment=S,T.shouldScroll=P,(0,s.handleMutable)(t,T)},()=>t)}}});let n=r(8586),o=r(1139),u=r(4466),l=r(7442),a=r(5567),i=r(9234),c=r(9818),s=r(3507),f=r(878),d=r(9154),p=r(6158),h=r(8291),y=r(4150),_=r(1518),b=r(9880),g=r(5563);function v(e,t,r,n){return t.mpaNavigation=!0,t.canonicalUrl=r,t.pendingPush=n,t.scrollableSegments=void 0,(0,s.handleMutable)(e,t)}function m(e){let t=[],[r,n]=e;if(0===Object.keys(n).length)return[[r]];for(let[e,o]of Object.entries(n))for(let n of m(o))""===r?t.push([e,...n]):t.push([r,e,...n]);return t}r(6005),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3942:(e,t)=>{"use strict";function r(e){let t=5381;for(let r=0;r>>0}function n(e){return r(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{djb2Hash:function(){return r},hexHash:function(){return n}})},3950:(e,t)=>{"use strict";function r(e,t){let r=e[e.length-1];r&&r.stack===t.stack||e.push(t)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"enqueueConsecutiveDedupedError",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3954:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,r(5444).handleGlobalErrors)(),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4074:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(427);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:u}=(0,n.parsePath)(e);return""+t+r+o+u}},4108:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasInterceptionRouteInCurrentTree",{enumerable:!0,get:function(){return function e(t){let[r,o]=t;if(Array.isArray(r)&&("di"===r[2]||"ci"===r[2])||"string"==typeof r&&(0,n.isInterceptionRouteAppPath)(r))return!0;if(o){for(let t in o)if(e(o[t]))return!0}return!1}}});let n=r(7755);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4150:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{abortTask:function(){return h},listenForDynamicRequest:function(){return p},startPPRNavigation:function(){return c},updateCacheNodeOnPopstateRestoration:function(){return function e(t,r){let n=r[1],o=t.parallelRoutes,l=new Map(o);for(let t in n){let r=n[t],a=r[0],i=(0,u.createRouterCacheKey)(a),c=o.get(t);if(void 0!==c){let n=c.get(i);if(void 0!==n){let o=e(n,r),u=new Map(c);u.set(i,o),l.set(t,u)}}}let a=t.rsc,i=b(a)&&"pending"===a.status;return{lazyData:null,rsc:a,head:t.head,prefetchHead:i?t.prefetchHead:[null,null],prefetchRsc:i?t.prefetchRsc:null,loading:t.loading,parallelRoutes:l,navigatedAt:t.navigatedAt}}}});let n=r(8291),o=r(1127),u=r(5637),l=r(9234),a=r(1518),i={route:null,node:null,dynamicRequestTree:null,children:null};function c(e,t,r,l,a,c,d,p,h){return function e(t,r,l,a,c,d,p,h,y,_,b){let g=l[1],v=a[1],m=null!==d?d[2]:null;c||!0===a[4]&&(c=!0);let E=r.parallelRoutes,O=new Map(E),R={},P=null,j=!1,T={};for(let r in v){let l,a=v[r],f=g[r],d=E.get(r),S=null!==m?m[r]:null,M=a[0],w=_.concat([r,M]),C=(0,u.createRouterCacheKey)(M),x=void 0!==f?f[0]:void 0,A=void 0!==d?d.get(C):void 0;if(null!==(l=M===n.DEFAULT_SEGMENT_KEY?void 0!==f?{route:f,node:null,dynamicRequestTree:null,children:null}:s(t,f,a,A,c,void 0!==S?S:null,p,h,w,b):y&&0===Object.keys(a[1]).length?s(t,f,a,A,c,void 0!==S?S:null,p,h,w,b):void 0!==f&&void 0!==x&&(0,o.matchSegment)(M,x)&&void 0!==A&&void 0!==f?e(t,A,f,a,c,S,p,h,y,w,b):s(t,f,a,A,c,void 0!==S?S:null,p,h,w,b))){if(null===l.route)return i;null===P&&(P=new Map),P.set(r,l);let e=l.node;if(null!==e){let t=new Map(d);t.set(C,e),O.set(r,t)}let t=l.route;R[r]=t;let n=l.dynamicRequestTree;null!==n?(j=!0,T[r]=n):T[r]=t}else R[r]=a,T[r]=a}if(null===P)return null;let S={lazyData:null,rsc:r.rsc,prefetchRsc:r.prefetchRsc,head:r.head,prefetchHead:r.prefetchHead,loading:r.loading,parallelRoutes:O,navigatedAt:t};return{route:f(a,R),node:S,dynamicRequestTree:j?f(a,T):null,children:P}}(e,t,r,l,!1,a,c,d,p,[],h)}function s(e,t,r,n,o,c,s,p,h,y){return!o&&(void 0===t||(0,l.isNavigatingToNewRootLayout)(t,r))?i:function e(t,r,n,o,l,i,c,s){let p,h,y,_,b=r[1],g=0===Object.keys(b).length;if(void 0!==n&&n.navigatedAt+a.DYNAMIC_STALETIME_MS>t)p=n.rsc,h=n.loading,y=n.head,_=n.navigatedAt;else if(null===o)return d(t,r,null,l,i,c,s);else if(p=o[1],h=o[3],y=g?l:null,_=t,o[4]||i&&g)return d(t,r,o,l,i,c,s);let v=null!==o?o[2]:null,m=new Map,E=void 0!==n?n.parallelRoutes:null,O=new Map(E),R={},P=!1;if(g)s.push(c);else for(let r in b){let n=b[r],o=null!==v?v[r]:null,a=null!==E?E.get(r):void 0,f=n[0],d=c.concat([r,f]),p=(0,u.createRouterCacheKey)(f),h=e(t,n,void 0!==a?a.get(p):void 0,o,l,i,d,s);m.set(r,h);let y=h.dynamicRequestTree;null!==y?(P=!0,R[r]=y):R[r]=n;let _=h.node;if(null!==_){let e=new Map;e.set(p,_),O.set(r,e)}}return{route:r,node:{lazyData:null,rsc:p,prefetchRsc:null,head:y,prefetchHead:null,loading:h,parallelRoutes:O,navigatedAt:_},dynamicRequestTree:P?f(r,R):null,children:m}}(e,r,n,c,s,p,h,y)}function f(e,t){let r=[e[0],t];return 2 in e&&(r[2]=e[2]),3 in e&&(r[3]=e[3]),4 in e&&(r[4]=e[4]),r}function d(e,t,r,n,o,l,a){let i=f(t,t[1]);return i[3]="refetch",{route:t,node:function e(t,r,n,o,l,a,i){let c=r[1],s=null!==n?n[2]:null,f=new Map;for(let r in c){let n=c[r],d=null!==s?s[r]:null,p=n[0],h=a.concat([r,p]),y=(0,u.createRouterCacheKey)(p),_=e(t,n,void 0===d?null:d,o,l,h,i),b=new Map;b.set(y,_),f.set(r,b)}let d=0===f.size;d&&i.push(a);let p=null!==n?n[1]:null,h=null!==n?n[3]:null;return{lazyData:null,parallelRoutes:f,prefetchRsc:void 0!==p?p:null,prefetchHead:d?o:[null,null],loading:void 0!==h?h:null,rsc:g(),head:d?g():null,navigatedAt:t}}(e,t,r,n,o,l,a),dynamicRequestTree:i,children:null}}function p(e,t){t.then(t=>{let{flightData:r}=t;if("string"!=typeof r){for(let t of r){let{segmentPath:r,tree:n,seedData:l,head:a}=t;l&&function(e,t,r,n,l){let a=e;for(let e=0;e{h(e,t)})}function h(e,t){let r=e.node;if(null===r)return;let n=e.children;if(null===n)y(e.route,r,t);else for(let e of n.values())h(e,t);e.dynamicRequestTree=null}function y(e,t,r){let n=e[1],o=t.parallelRoutes;for(let e in n){let t=n[e],l=o.get(e);if(void 0===l)continue;let a=t[0],i=(0,u.createRouterCacheKey)(a),c=l.get(i);void 0!==c&&y(t,c,r)}let l=t.rsc;b(l)&&(null===r?l.resolve(null):l.reject(r));let a=t.head;b(a)&&a.resolve(null)}let _=Symbol();function b(e){return e&&e.tag===_}function g(){let e,t,r=new Promise((r,n)=>{e=r,t=n});return r.status="pending",r.resolve=t=>{"pending"===r.status&&(r.status="fulfilled",r.value=t,e(t))},r.reject=e=>{"pending"===r.status&&(r.status="rejected",r.reason=e,t(e))},r.tag=_,r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4189:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange)return void e();let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},4420:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}});var r=function(e){return e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4466:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,r,u){let l=u.length<=2,[a,i]=u,c=(0,n.createRouterCacheKey)(i),s=r.parallelRoutes.get(a);if(!s)return;let f=t.parallelRoutes.get(a);if(f&&f!==s||(f=new Map(s),t.parallelRoutes.set(a,f)),l)return void f.delete(c);let d=s.get(c),p=f.get(c);p&&d&&(p===d&&(p={lazyData:p.lazyData,rsc:p.rsc,prefetchRsc:p.prefetchRsc,head:p.head,prefetchHead:p.prefetchHead,parallelRoutes:new Map(p.parallelRoutes)},f.set(c,p)),e(p,d,(0,o.getNextFlightSegmentPath)(u)))}}});let n=r(5637),o=r(2561);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4486:(e,t,r)=>{"use strict";let n,o;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hydrate",{enumerable:!0,get:function(){return D}});let u=r(8229),l=r(6966),a=r(5155);r(6446),r(6002),r(3954);let i=u._(r(2669)),c=l._(r(2115)),s=r(4979),f=r(2830),d=r(6698),p=r(9155),h=r(3806),y=r(1818),_=r(6634),b=u._(r(6158)),g=r(3567);r(5227);let v=r(5624),m=document,E=new TextEncoder,O=!1,R=!1,P=null;function j(e){if(0===e[0])n=[];else if(1===e[0]){if(!n)throw Object.defineProperty(Error("Unexpected server data: missing bootstrap script."),"__NEXT_ERROR_CODE",{value:"E18",enumerable:!1,configurable:!0});o?o.enqueue(E.encode(e[1])):n.push(e[1])}else if(2===e[0])P=e[1];else if(3===e[0]){if(!n)throw Object.defineProperty(Error("Unexpected server data: missing bootstrap script."),"__NEXT_ERROR_CODE",{value:"E18",enumerable:!1,configurable:!0});let r=atob(e[1]),u=new Uint8Array(r.length);for(var t=0;t{e.enqueue("string"==typeof t?E.encode(t):t)}),O&&!R)&&(null===e.desiredSize||e.desiredSize<0?e.error(Object.defineProperty(Error("The connection to the page was unexpectedly closed, possibly due to the stop button being clicked, loss of Wi-Fi, or an unstable internet connection."),"__NEXT_ERROR_CODE",{value:"E117",enumerable:!1,configurable:!0})):e.close(),R=!0,n=void 0),o=e}}),w=(0,s.createFromReadableStream)(M,{callServer:h.callServer,findSourceMapURL:y.findSourceMapURL});function C(e){let{pendingActionQueue:t}=e,r=(0,c.use)(w),n=(0,c.use)(t);return(0,a.jsx)(b.default,{actionQueue:n,globalErrorComponentAndStyles:r.G,assetPrefix:r.p})}let x=c.default.StrictMode;function A(e){let{children:t}=e;return t}let N={onRecoverableError:d.onRecoverableError,onCaughtError:p.onCaughtError,onUncaughtError:p.onUncaughtError};function D(e){let t=new Promise((t,r)=>{w.then(r=>{(0,v.setAppBuildId)(r.b);let n=Date.now();t((0,_.createMutableActionQueue)((0,g.createInitialRouterState)({navigatedAt:n,initialFlightData:r.f,initialCanonicalUrlParts:r.c,initialParallelRoutes:new Map,location:window.location,couldBeIntercepted:r.i,postponed:r.s,prerendered:r.S}),e))},e=>r(e))}),r=(0,a.jsx)(x,{children:(0,a.jsx)(f.HeadManagerContext.Provider,{value:{appDir:!0},children:(0,a.jsx)(A,{children:(0,a.jsx)(C,{pendingActionQueue:t})})})});"__next_error__"===document.documentElement.id?i.default.createRoot(m,N).render(r):c.default.startTransition(()=>{i.default.hydrateRoot(m,r,{...N,formState:P})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4758:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,r,u,l,a,i,c){if(0===Object.keys(l[1]).length){r.head=i;return}for(let s in l[1]){let f,d=l[1][s],p=d[0],h=(0,n.createRouterCacheKey)(p),y=null!==a&&void 0!==a[2][s]?a[2][s]:null;if(u){let n=u.parallelRoutes.get(s);if(n){let u,l=(null==c?void 0:c.kind)==="auto"&&c.status===o.PrefetchCacheEntryStatus.reusable,a=new Map(n),f=a.get(h);u=null!==y?{lazyData:null,rsc:y[1],prefetchRsc:null,head:null,prefetchHead:null,loading:y[3],parallelRoutes:new Map(null==f?void 0:f.parallelRoutes),navigatedAt:t}:l&&f?{lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),loading:f.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==f?void 0:f.parallelRoutes),loading:null,navigatedAt:t},a.set(h,u),e(t,u,f,d,y||null,i,c),r.parallelRoutes.set(s,a);continue}}if(null!==y){let e=y[1],r=y[3];f={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:r,navigatedAt:t}}else f={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:t};let _=r.parallelRoutes.get(s);_?_.set(h,f):r.parallelRoutes.set(s,new Map([[h,f]])),e(t,f,void 0,d,y,i,c)}}}});let n=r(5637),o=r(9818);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4819:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return u}});let n=r(1139),o=r(8946);function u(e,t){var r;let{url:u,tree:l}=t,a=(0,n.createHrefFromUrl)(u),i=l||e.tree,c=e.cache;return{canonicalUrl:a,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:c,prefetchCache:e.prefetchCache,tree:i,nextUrl:null!=(r=(0,o.extractPathFromFlightRouterState)(i))?r:u.pathname}}r(4150),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4882:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return o}}),r(7102);let n="/docs-site";function o(e){return 0===n.length||(e=e.slice(n.length)).startsWith("/")||(e="/"+e),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4908:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,r){let[n,o,,l]=t;for(let a in n.includes(u.PAGE_SEGMENT_KEY)&&"refresh"!==l&&(t[2]=r,t[3]="refresh"),o)e(o[a],r)}},refreshInactiveParallelSegments:function(){return l}});let n=r(878),o=r(8586),u=r(8291);async function l(e){let t=new Set;await a({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function a(e){let{navigatedAt:t,state:r,updatedTree:u,updatedCache:l,includeNextUrl:i,fetchedSegments:c,rootTree:s=u,canonicalUrl:f}=e,[,d,p,h]=u,y=[];if(p&&p!==f&&"refresh"===h&&!c.has(p)){c.add(p);let e=(0,o.fetchServerResponse)(new URL(p,location.origin),{flightRouterState:[s[0],s[1],s[2],"refetch"],nextUrl:i?r.nextUrl:null}).then(e=>{let{flightData:r}=e;if("string"!=typeof r)for(let e of r)(0,n.applyFlightData)(t,l,l,e)});y.push(e)}for(let e in d){let n=a({navigatedAt:t,state:r,updatedTree:d[e],updatedCache:l,includeNextUrl:i,fetchedSegments:c,rootTree:s,canonicalUrl:f});y.push(n)}await Promise.all(y)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4911:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AsyncMetadata:function(){return u},AsyncMetadataOutlet:function(){return a}});let n=r(5155),o=r(2115),u=r(1536).BrowserResolvedMetadata;function l(e){let{promise:t}=e,{error:r,digest:n}=(0,o.use)(t);if(r)throw n&&(r.digest=n),r;return null}function a(e){let{promise:t}=e;return(0,n.jsx)(o.Suspense,{fallback:null,children:(0,n.jsx)(l,{promise:t})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4930:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{IDLE_LINK_STATUS:function(){return c},PENDING_LINK_STATUS:function(){return i},mountFormInstance:function(){return g},mountLinkInstance:function(){return b},onLinkVisibilityChanged:function(){return m},onNavigationIntent:function(){return E},pingVisibleLinks:function(){return R},setLinkForCurrentNavigation:function(){return s},unmountLinkForCurrentNavigation:function(){return f},unmountPrefetchableInstance:function(){return v}}),r(6634);let n=r(6158),o=r(9818),u=r(6005),l=r(2115),a=null,i={pending:!0},c={pending:!1};function s(e){(0,l.startTransition)(()=>{null==a||a.setOptimisticLinkStatus(c),null==e||e.setOptimisticLinkStatus(i),a=e})}function f(e){a===e&&(a=null)}let d="function"==typeof WeakMap?new WeakMap:new Map,p=new Set,h="function"==typeof IntersectionObserver?new IntersectionObserver(function(e){for(let t of e){let e=t.intersectionRatio>0;m(t.target,e)}},{rootMargin:"200px"}):null;function y(e,t){void 0!==d.get(e)&&v(e),d.set(e,t),null!==h&&h.observe(e)}function _(e){try{return(0,n.createPrefetchURL)(e)}catch(t){return("function"==typeof reportError?reportError:console.error)("Cannot prefetch '"+e+"' because it cannot be converted to a URL."),null}}function b(e,t,r,n,o,u){if(o){let o=_(t);if(null!==o){let t={router:r,kind:n,isVisible:!1,wasHoveredOrTouched:!1,prefetchTask:null,cacheVersion:-1,prefetchHref:o.href,setOptimisticLinkStatus:u};return y(e,t),t}}return{router:r,kind:n,isVisible:!1,wasHoveredOrTouched:!1,prefetchTask:null,cacheVersion:-1,prefetchHref:null,setOptimisticLinkStatus:u}}function g(e,t,r,n){let o=_(t);null!==o&&y(e,{router:r,kind:n,isVisible:!1,wasHoveredOrTouched:!1,prefetchTask:null,cacheVersion:-1,prefetchHref:o.href,setOptimisticLinkStatus:null})}function v(e){let t=d.get(e);if(void 0!==t){d.delete(e),p.delete(t);let r=t.prefetchTask;null!==r&&(0,u.cancelPrefetchTask)(r)}null!==h&&h.unobserve(e)}function m(e,t){let r=d.get(e);void 0!==r&&(r.isVisible=t,t?p.add(r):p.delete(r),O(r))}function E(e,t){let r=d.get(e);void 0!==r&&void 0!==r&&(r.wasHoveredOrTouched=!0,O(r))}function O(e){var t;let r=e.prefetchTask;if(!e.isVisible){null!==r&&(0,u.cancelPrefetchTask)(r);return}t=e,(async()=>t.router.prefetch(t.prefetchHref,{kind:t.kind}))().catch(e=>{})}function R(e,t){let r=(0,u.getCurrentCacheVersion)();for(let n of p){let l=n.prefetchTask;if(null!==l&&n.cacheVersion===r&&l.key.nextUrl===e&&l.treeAtTimeOfPrefetch===t)continue;null!==l&&(0,u.cancelPrefetchTask)(l);let a=(0,u.createCacheKey)(n.prefetchHref,e),i=n.wasHoveredOrTouched?u.PrefetchPriority.Intent:u.PrefetchPriority.Default;n.prefetchTask=(0,u.schedulePrefetchTask)(a,t,n.kind===o.PrefetchKind.FULL,i),n.cacheVersion=(0,u.getCurrentCacheVersion)()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4970:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientSegmentRoot",{enumerable:!0,get:function(){return o}});let n=r(5155);function o(e){let{Component:t,slots:o,params:u,promise:l}=e;{let{createRenderParamsFromClient:e}=r(3558),l=e(u);return(0,n.jsx)(t,{...o,params:l})}}r(9837),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4979:(e,t,r)=>{"use strict";e.exports=r(7197)},5072:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTML_LIMITED_BOT_UA_RE",{enumerable:!0,get:function(){return r}});let r=/Mediapartners-Google|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti/i},5122:(e,t)=>{"use strict";function r(e){return null!==e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isThenable",{enumerable:!0,get:function(){return r}})},5128:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getReactStitchedError",{enumerable:!0,get:function(){return c}});let n=r(8229),o=n._(r(2115)),u=n._(r(5807)),l=r(9148),a="react-stack-bottom-frame",i=RegExp("(at "+a+" )|("+a+"\\@)");function c(e){let t=(0,u.default)(e),r=t&&e.stack||"",n=t?e.message:"",a=r.split("\n"),c=a.findIndex(e=>i.test(e)),s=c>=0?a.slice(0,c).join("\n"):r,f=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return Object.assign(f,e),(0,l.copyNextErrorCode)(e,f),f.stack=s,function(e){if(!o.default.captureOwnerStack)return;let t=e.stack||"",r=o.default.captureOwnerStack();r&&!1===t.endsWith(r)&&(e.stack=t+=r)}(f),f}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5155:(e,t,r)=>{"use strict";e.exports=r(6897)},5169:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatConsoleArgs:function(){return u},parseConsoleArgs:function(){return l}});let n=r(8229)._(r(5807));function o(e,t){switch(typeof e){case"object":if(null===e)return"null";if(Array.isArray(e)){let r="[";if(t<1)for(let n=0;n0?"...":"";return r+"]"}{if(e instanceof Error)return e+"";let r=Object.keys(e),n="{";if(t<1)for(let u=0;u0?"...":"";return n+"}"}case"string":return JSON.stringify(e);default:return String(e)}}function u(e){let t,r;"string"==typeof e[0]?(t=e[0],r=1):(t="",r=0);let n="",u=!1;for(let l=0;l=e.length){n+=a;continue}let i=t[++l];switch(i){case"c":n=u?""+n+"]":"["+n,u=!u,r++;break;case"O":case"o":n+=o(e[r++],0);break;case"d":case"i":n+=parseInt(e[r++],10);break;case"f":n+=parseFloat(e[r++]);break;case"s":n+=String(e[r++]);break;default:n+="%"+i}}for(;r0?" ":"")+o(e[r],0);return n}function l(e){if(e.length>3&&"string"==typeof e[0]&&e[0].startsWith("%c%s%c ")&&"string"==typeof e[1]&&"string"==typeof e[2]&&"string"==typeof e[3]){let t=e[2],r=e[4];return{environmentName:t.trim(),error:(0,n.default)(r)?r:null}}return{environmentName:null,error:null}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5209:(e,t)=>{"use strict";function r(e){return Object.prototype.toString.call(e)}function n(e){if("[object Object]"!==r(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getObjectClassLabel:function(){return r},isPlainObject:function(){return n}})},5227:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return l},LayoutRouterContext:function(){return u},MissingSlotContext:function(){return i},TemplateContext:function(){return a}});let n=r(8229)._(r(2115)),o=n.default.createContext(null),u=n.default.createContext(null),l=n.default.createContext(null),a=n.default.createContext(null),i=n.default.createContext(new Set)},5262:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},5415:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(5449);let n=r(6188),o=r(1408);(0,n.appBootstrap)(()=>{let{hydrate:e}=r(4486);r(6158),r(7555),e(o)}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5444:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleClientError:function(){return v},handleConsoleError:function(){return g},handleGlobalErrors:function(){return R},useErrorHandler:function(){return m}});let n=r(8229),o=r(2115),u=r(3506),l=r(2858),a=r(9771),i=r(5169),c=n._(r(5807)),s=r(6043),f=r(3950),d=r(5128),p=globalThis.queueMicrotask||(e=>Promise.resolve().then(e)),h=[],y=[],_=[],b=[];function g(e,t){let r,{environmentName:n}=(0,i.parseConsoleArgs)(t);for(let o of(r=(0,c.default)(e)?(0,s.createConsoleError)(e,n):(0,s.createConsoleError)((0,i.formatConsoleArgs)(t),n),r=(0,d.getReactStitchedError)(r),(0,a.storeHydrationErrorStateFromConsoleArgs)(...t),(0,u.attachHydrationErrorState)(r),(0,f.enqueueConsecutiveDedupedError)(h,r),y))p(()=>{o(r)})}function v(e){let t;for(let r of(t=(0,c.default)(e)?e:Object.defineProperty(Error(e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0}),t=(0,d.getReactStitchedError)(t),(0,u.attachHydrationErrorState)(t),(0,f.enqueueConsecutiveDedupedError)(h,t),y))p(()=>{r(t)})}function m(e,t){(0,o.useEffect)(()=>(h.forEach(e),_.forEach(t),y.push(e),b.push(t),()=>{y.splice(y.indexOf(e),1),b.splice(b.indexOf(t),1),h.splice(0,h.length),_.splice(0,_.length)}),[e,t])}function E(e){if((0,l.isNextRouterError)(e.error))return e.preventDefault(),!1;e.error&&v(e.error)}function O(e){let t=null==e?void 0:e.reason;if((0,l.isNextRouterError)(t))return void e.preventDefault();let r=t;for(let e of(r&&!(0,c.default)(r)&&(r=Object.defineProperty(Error(r+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})),_.push(r),b))e(r)}function R(){try{Error.stackTraceLimit=50}catch(e){}window.addEventListener("error",E),window.addEventListener("unhandledrejection",O)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5449:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(3668);let n=r(589);{let e=r.u;r.u=function(){for(var t=arguments.length,r=Array(t),o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return h}});let n=r(8586),o=r(1139),u=r(7442),l=r(9234),a=r(3894),i=r(3507),c=r(4758),s=r(6158),f=r(6375),d=r(4108),p=r(4908);function h(e,t){let{origin:r}=t,h={},y=e.canonicalUrl,_=e.tree;h.preserveCustomHistoryState=!1;let b=(0,s.createEmptyCacheNode)(),g=(0,d.hasInterceptionRouteInCurrentTree)(e.tree);b.lazyData=(0,n.fetchServerResponse)(new URL(y,r),{flightRouterState:[_[0],_[1],_[2],"refetch"],nextUrl:g?e.nextUrl:null});let v=Date.now();return b.lazyData.then(async r=>{let{flightData:n,canonicalUrl:s}=r;if("string"==typeof n)return(0,a.handleExternalUrl)(e,h,n,e.pushRef.pendingPush);for(let r of(b.lazyData=null,n)){let{tree:n,seedData:i,head:d,isRootRender:m}=r;if(!m)return console.log("REFRESH FAILED"),e;let E=(0,u.applyRouterStatePatchToTree)([""],_,n,e.canonicalUrl);if(null===E)return(0,f.handleSegmentMismatch)(e,t,n);if((0,l.isNavigatingToNewRootLayout)(_,E))return(0,a.handleExternalUrl)(e,h,y,e.pushRef.pendingPush);let O=s?(0,o.createHrefFromUrl)(s):void 0;if(s&&(h.canonicalUrl=O),null!==i){let e=i[1],t=i[3];b.rsc=e,b.prefetchRsc=null,b.loading=t,(0,c.fillLazyItemsTillLeafWithHead)(v,b,void 0,n,i,d,void 0),h.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({navigatedAt:v,state:e,updatedTree:E,updatedCache:b,includeNextUrl:g,canonicalUrl:h.canonicalUrl||e.canonicalUrl}),h.cache=b,h.patchedTree=E,_=E}return(0,i.handleMutable)(e,h)},()=>e)}r(6005),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5563:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addSearchParamsToPageSegments:function(){return f},handleAliasedPrefetchEntry:function(){return s}});let n=r(8291),o=r(6158),u=r(7442),l=r(1139),a=r(5637),i=r(3118),c=r(3507);function s(e,t,r,s,d){let p,h=t.tree,y=t.cache,_=(0,l.createHrefFromUrl)(s);if("string"==typeof r)return!1;for(let t of r){if(!function e(t){if(!t)return!1;let r=t[2];if(t[3])return!0;for(let t in r)if(e(r[t]))return!0;return!1}(t.seedData))continue;let r=t.tree;r=f(r,Object.fromEntries(s.searchParams));let{seedData:l,isRootRender:c,pathToSegment:d}=t,b=["",...d];r=f(r,Object.fromEntries(s.searchParams));let g=(0,u.applyRouterStatePatchToTree)(b,h,r,_),v=(0,o.createEmptyCacheNode)();if(c&&l){let t=l[1];v.loading=l[3],v.rsc=t,function e(t,r,o,u,l){if(0!==Object.keys(u[1]).length)for(let i in u[1]){let c,s=u[1][i],f=s[0],d=(0,a.createRouterCacheKey)(f),p=null!==l&&void 0!==l[2][i]?l[2][i]:null;if(null!==p){let e=p[1],r=p[3];c={lazyData:null,rsc:f.includes(n.PAGE_SEGMENT_KEY)?null:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:r,navigatedAt:t}}else c={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1};let h=r.parallelRoutes.get(i);h?h.set(d,c):r.parallelRoutes.set(i,new Map([[d,c]])),e(t,c,o,s,p)}}(e,v,y,r,l)}else v.rsc=y.rsc,v.prefetchRsc=y.prefetchRsc,v.loading=y.loading,v.parallelRoutes=new Map(y.parallelRoutes),(0,i.fillCacheWithNewSubTreeDataButOnlyLoading)(e,v,y,t);g&&(h=g,y=v,p=!0)}return!!p&&(d.patchedTree=h,d.cache=y,d.canonicalUrl=_,d.hashFragment=s.hash,(0,c.handleMutable)(t,d))}function f(e,t){let[r,o,...u]=e;if(r.includes(n.PAGE_SEGMENT_KEY))return[(0,n.addSearchParamsIfPageSegment)(r,t),o,...u];let l={};for(let[e,r]of Object.entries(o))l[e]=f(r,t);return[r,l,...u]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5567:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,r){let[u,l]=r,[a,i]=t;return(0,o.matchSegment)(a,u)?!(t.length<=2)&&e((0,n.getNextFlightSegmentPath)(t),l[i]):!!Array.isArray(a)}}});let n=r(2561),o=r(1127);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5618:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return s},RedirectType:function(){return o.RedirectType},forbidden:function(){return l.forbidden},notFound:function(){return u.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect},unauthorized:function(){return a.unauthorized},unstable_rethrow:function(){return i.unstable_rethrow}});let n=r(6825),o=r(2210),u=r(8527),l=r(3678),a=r(9187),i=r(7599);class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class s extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5624:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getAppBuildId:function(){return o},setAppBuildId:function(){return n}});let r="";function n(e){r=e}function o(){return r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5637:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=r(8291);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5807:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return o},getProperError:function(){return u}});let n=r(5209);function o(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function u(e){return o(e)?e:Object.defineProperty(Error((0,n.isPlainObject)(e)?function(e){let t=new WeakSet;return JSON.stringify(e,(e,r)=>{if("object"==typeof r&&null!==r){if(t.has(r))return"[Circular]";t.add(r)}return r})}(e):e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},5929:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return u}});let n=r(4074),o=r(214);function u(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,"/docs-site"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5952:(e,t,r)=>{"use strict";function n(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}r.r(t),r.d(t,{_:()=>n})},6002:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,r(6905).patchConsoleError)(),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6005:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{NavigationResultTag:function(){return f},PrefetchPriority:function(){return d},cancelPrefetchTask:function(){return i},createCacheKey:function(){return s},getCurrentCacheVersion:function(){return l},navigate:function(){return o},prefetch:function(){return n},reschedulePrefetchTask:function(){return c},revalidateEntireCache:function(){return u},schedulePrefetchTask:function(){return a}});let r=()=>{throw Object.defineProperty(Error("Segment Cache experiment is not enabled. This is a bug in Next.js."),"__NEXT_ERROR_CODE",{value:"E654",enumerable:!1,configurable:!0})},n=r,o=r,u=r,l=r,a=r,i=r,c=r,s=r;var f=function(e){return e[e.MPA=0]="MPA",e[e.Success=1]="Success",e[e.NoOp=2]="NoOp",e[e.Async=3]="Async",e}({}),d=function(e){return e[e.Intent=2]="Intent",e[e.Default=1]="Default",e[e.Background=0]="Background",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6043:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createConsoleError:function(){return o},getConsoleErrorType:function(){return l},isConsoleError:function(){return u}});let r=Symbol.for("next.console.error.digest"),n=Symbol.for("next.console.error.type");function o(e,t){let o="string"==typeof e?Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0}):e;return o[r]="NEXT_CONSOLE_ERROR",o[n]="string"==typeof e?"string":"error",t&&!o.environmentName&&(o.environmentName=t),o}let u=e=>e&&"NEXT_CONSOLE_ERROR"===e[r],l=e=>e[n];("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6158:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createEmptyCacheNode:function(){return w},createPrefetchURL:function(){return S},default:function(){return N},isExternalURL:function(){return T}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(5227),a=r(9818),i=r(1139),c=r(886),s=r(1027),f=n._(r(6614)),d=r(774),p=r(5929),h=r(7760),y=r(686),_=r(2691),b=r(1822),g=r(4882),v=r(7102),m=r(8946),E=r(8836),O=r(6634),R=r(6825),P=r(2210);r(4930);let j={};function T(e){return e.origin!==window.location.origin}function S(e){let t;if((0,d.isBot)(window.navigator.userAgent))return null;try{t=new URL((0,p.addBasePath)(e),window.location.href)}catch(t){throw Object.defineProperty(Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL."),"__NEXT_ERROR_CODE",{value:"E234",enumerable:!1,configurable:!0})}return T(t)?null:t}function M(e){let{appRouterState:t}=e;return(0,u.useInsertionEffect)(()=>{let{tree:e,pushRef:r,canonicalUrl:n}=t,o={...r.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};r.pendingPush&&(0,i.createHrefFromUrl)(new URL(window.location.href))!==n?(r.pendingPush=!1,window.history.pushState(o,"",n)):window.history.replaceState(o,"",n)},[t]),(0,u.useEffect)(()=>{},[t.nextUrl,t.tree]),null}function w(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1}}function C(e){null==e&&(e={});let t=window.history.state,r=null==t?void 0:t.__NA;r&&(e.__NA=r);let n=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return n&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=n),e}function x(e){let{headCacheNode:t}=e,r=null!==t?t.head:null,n=null!==t?t.prefetchHead:null,o=null!==n?n:r;return(0,u.useDeferredValue)(r,o)}function A(e){let t,{actionQueue:r,assetPrefix:n,globalError:i}=e,d=(0,s.useActionQueue)(r),{canonicalUrl:p}=d,{searchParams:E,pathname:T}=(0,u.useMemo)(()=>{let e=new URL(p,window.location.href);return{searchParams:e.searchParams,pathname:(0,v.hasBasePath)(e.pathname)?(0,g.removeBasePath)(e.pathname):e.pathname}},[p]);(0,u.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(j.pendingMpaPath=void 0,(0,s.dispatchAppRouterAction)({type:a.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[]),(0,u.useEffect)(()=>{function e(e){let t="reason"in e?e.reason:e.error;if((0,P.isRedirectError)(t)){e.preventDefault();let r=(0,R.getURLFromRedirectError)(t);(0,R.getRedirectTypeFromError)(t)===P.RedirectType.push?O.publicAppRouterInstance.push(r,{}):O.publicAppRouterInstance.replace(r,{})}}return window.addEventListener("error",e),window.addEventListener("unhandledrejection",e),()=>{window.removeEventListener("error",e),window.removeEventListener("unhandledrejection",e)}},[]);let{pushRef:S}=d;if(S.mpaNavigation){if(j.pendingMpaPath!==p){let e=window.location;S.pendingPush?e.assign(p):e.replace(p),j.pendingMpaPath=p}(0,u.use)(b.unresolvedThenable)}(0,u.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),r=e=>{var t;let r=window.location.href,n=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,u.startTransition)(()=>{(0,s.dispatchAppRouterAction)({type:a.ACTION_RESTORE,url:new URL(null!=e?e:r,r),tree:n})})};window.history.pushState=function(t,n,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=C(t),o&&r(o)),e(t,n,o)},window.history.replaceState=function(e,n,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=C(e),o&&r(o)),t(e,n,o)};let n=e=>{if(e.state){if(!e.state.__NA)return void window.location.reload();(0,u.startTransition)(()=>{(0,O.dispatchTraverseAction)(window.location.href,e.state.__PRIVATE_NEXTJS_INTERNALS_TREE)})}};return window.addEventListener("popstate",n),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",n)}},[]);let{cache:w,tree:A,nextUrl:N,focusAndScrollRef:D}=d,U=(0,u.useMemo)(()=>(0,_.findHeadInCache)(w,A[1]),[w,A]),k=(0,u.useMemo)(()=>(0,m.getSelectedParams)(A),[A]),I=(0,u.useMemo)(()=>({parentTree:A,parentCacheNode:w,parentSegmentPath:null,url:p}),[A,w,p]),H=(0,u.useMemo)(()=>({tree:A,focusAndScrollRef:D,nextUrl:N}),[A,D,N]);if(null!==U){let[e,r]=U;t=(0,o.jsx)(x,{headCacheNode:e},r)}else t=null;let F=(0,o.jsxs)(y.RedirectBoundary,{children:[t,w.rsc,(0,o.jsx)(h.AppRouterAnnouncer,{tree:A})]});return F=(0,o.jsx)(f.ErrorBoundary,{errorComponent:i[0],errorStyles:i[1],children:F}),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(M,{appRouterState:d}),(0,o.jsx)(L,{}),(0,o.jsx)(c.PathParamsContext.Provider,{value:k,children:(0,o.jsx)(c.PathnameContext.Provider,{value:T,children:(0,o.jsx)(c.SearchParamsContext.Provider,{value:E,children:(0,o.jsx)(l.GlobalLayoutRouterContext.Provider,{value:H,children:(0,o.jsx)(l.AppRouterContext.Provider,{value:O.publicAppRouterInstance,children:(0,o.jsx)(l.LayoutRouterContext.Provider,{value:I,children:F})})})})})})]})}function N(e){let{actionQueue:t,globalErrorComponentAndStyles:[r,n],assetPrefix:u}=e;return(0,E.useNavFailureHandler)(),(0,o.jsx)(f.ErrorBoundary,{errorComponent:f.default,children:(0,o.jsx)(A,{actionQueue:t,assetPrefix:u,globalError:[r,n]})})}let D=new Set,U=new Set;function L(){let[,e]=u.default.useState(0),t=D.size;return(0,u.useEffect)(()=>{let r=()=>e(e=>e+1);return U.add(r),t!==D.size&&r(),()=>{U.delete(r)}},[t,e]),[...D].map((e,t)=>(0,o.jsx)("link",{rel:"stylesheet",href:""+e,precedence:"next"},t))}globalThis._N_E_STYLE_LOAD=function(e){let t=D.size;return D.add(e),D.size!==t&&U.forEach(e=>e()),Promise.resolve()},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6188:(e,t)=>{"use strict";function r(e){var t,r;t=self.__next_s,r=()=>{e()},t&&t.length?t.reduce((e,t)=>{let[r,n]=t;return e.then(()=>new Promise((e,t)=>{let o=document.createElement("script");if(n)for(let e in n)"children"!==e&&o.setAttribute(e,n[e]);r?(o.src=r,o.onload=()=>e(),o.onerror=t):n&&(o.innerHTML=n.children,setTimeout(e)),document.head.appendChild(o)}))},Promise.resolve()).catch(e=>{console.error(e)}).then(()=>{r()}):r()}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"appBootstrap",{enumerable:!0,get:function(){return r}}),window.next={version:"15.3.1",appDir:!0},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6206:(e,t,r)=>{"use strict";e.exports=r(2223)},6361:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},6375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let n=r(3894);function o(e,t,r){return(0,n.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6420:(e,t,r)=>{"use strict";r.r(t),r.d(t,{_:()=>o});var n=0;function o(e){return"__private_"+n+++"_"+e}},6446:()=>{"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},6465:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{NEXTJS_HYDRATION_ERROR_LINK:function(){return i},REACT_HYDRATION_ERROR_LINK:function(){return a},getDefaultHydrationErrorMessage:function(){return c},getHydrationErrorStackInfo:function(){return h},isHydrationError:function(){return s},isReactHydrationErrorMessage:function(){return f},testReactHydrationWarning:function(){return p}});let n=r(8229)._(r(5807)),o=/hydration failed|while hydrating|content does not match|did not match|HTML didn't match|text didn't match/i,u="Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:",l=[u,"Hydration failed because the server rendered text didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:","A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:"],a="https://react.dev/link/hydration-mismatch",i="https://nextjs.org/docs/messages/react-hydration-error",c=()=>u;function s(e){return(0,n.default)(e)&&o.test(e.message)}function f(e){return l.some(t=>e.startsWith(t))}let d=[/^In HTML, (.+?) cannot be a child of <(.+?)>\.(.*)\nThis will cause a hydration error\.(.*)/,/^In HTML, (.+?) cannot be a descendant of <(.+?)>\.\nThis will cause a hydration error\.(.*)/,/^In HTML, text nodes cannot be a child of <(.+?)>\.\nThis will cause a hydration error\./,/^In HTML, whitespace text nodes cannot be a child of <(.+?)>\. Make sure you don't have any extra whitespace between tags on each line of your source code\.\nThis will cause a hydration error\./,/^Expected server HTML to contain a matching <(.+?)> in <(.+?)>\.(.*)/,/^Did not expect server HTML to contain a <(.+?)> in <(.+?)>\.(.*)/,/^Expected server HTML to contain a matching text node for "(.+?)" in <(.+?)>\.(.*)/,/^Did not expect server HTML to contain the text node "(.+?)" in <(.+?)>\.(.*)/,/^Text content did not match\. Server: "(.+?)" Client: "(.+?)"(.*)/];function p(e){return"string"==typeof e&&!!e&&(e.startsWith("Warning: ")&&(e=e.slice(9)),d.some(t=>t.test(e)))}function h(e){let t=p(e=(e=e.replace(/^Error: /,"")).replace("Warning: ",""));if(!f(e)&&!t)return{message:null,stack:e,diff:""};if(t){let[t,r]=e.split("\n\n");return{message:t.trim(),stack:"",diff:(r||"").trim()}}let r=e.indexOf("\n"),[n,o]=(e=e.slice(r+1).trim()).split(""+a),u=n.trim();if(!o||!(o.length>1))return{message:u,stack:o};{let e=[],t=[];return o.split("\n").forEach(r=>{""!==r.trim()&&(r.trim().startsWith("at ")?e.push(r):t.push(r))}),{message:u,diff:t.join("\n"),stack:e.join("\n")}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6494:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTTPAccessErrorStatus:function(){return r},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return o},getAccessFallbackErrorTypeByStatus:function(){return a},getAccessFallbackHTTPStatus:function(){return l},isHTTPAccessFallbackError:function(){return u}});let r={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},n=new Set(Object.values(r)),o="NEXT_HTTP_ERROR_FALLBACK";function u(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===o&&n.has(Number(r))}function l(e){return Number(e.digest.split(";")[1])}function a(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return f},GlobalError:function(){return d},default:function(){return p}});let n=r(8229),o=r(5155),u=n._(r(2115)),l=r(9921),a=r(2858);r(8836);let i=void 0,c={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function s(e){let{error:t}=e;if(i){let e=i.getStore();if((null==e?void 0:e.isRevalidate)||(null==e?void 0:e.isStaticGeneration))throw console.error(t),t}return null}class f extends u.default.Component{static getDerivedStateFromError(e){if((0,a.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function d(e){let{error:t}=e,r=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(s,{error:t}),(0,o.jsx)("div",{style:c.error,children:(0,o.jsxs)("div",{children:[(0,o.jsxs)("h2",{style:c.text,children:["Application error: a ",r?"server":"client","-side exception has occurred while loading ",window.location.hostname," (see the"," ",r?"server logs":"browser console"," for more information)."]}),r?(0,o.jsx)("p",{style:c.text,children:"Digest: "+r}):null]})})]})]})}let p=d;function h(e){let{errorComponent:t,errorStyles:r,errorScripts:n,children:u}=e,a=(0,l.useUntrackedPathname)();return t?(0,o.jsx)(f,{pathname:a,errorComponent:t,errorStyles:r,errorScripts:n,children:u}):(0,o.jsx)(o.Fragment,{children:u})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6634:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createMutableActionQueue:function(){return y},dispatchNavigateAction:function(){return g},dispatchTraverseAction:function(){return v},getCurrentAppRouterState:function(){return _},publicAppRouterInstance:function(){return m}});let n=r(9818),o=r(9726),u=r(2115),l=r(5122);r(6005);let a=r(1027),i=r(5929),c=r(6158),s=r(9154),f=r(4930);function d(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?p({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:n.ACTION_REFRESH,origin:window.location.origin},t)))}async function p(e){let{actionQueue:t,action:r,setState:n}=e,o=t.state;t.pending=r;let u=r.payload,a=t.action(o,u);function i(e){r.discarded||(t.state=e,d(t,n),r.resolve(e))}(0,l.isThenable)(a)?a.then(i,e=>{d(t,n),r.reject(e)}):i(a)}let h=null;function y(e,t){let r={state:e,dispatch:(e,t)=>(function(e,t,r){let o={resolve:r,reject:()=>{}};if(t.type!==n.ACTION_RESTORE){let e=new Promise((e,t)=>{o={resolve:e,reject:t}});(0,u.startTransition)(()=>{r(e)})}let l={payload:t,next:null,resolve:o.resolve,reject:o.reject};null===e.pending?(e.last=l,p({actionQueue:e,action:l,setState:r})):t.type===n.ACTION_NAVIGATE||t.type===n.ACTION_RESTORE?(e.pending.discarded=!0,l.next=e.pending.next,e.pending.payload.type===n.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),p({actionQueue:e,action:l,setState:r})):(null!==e.last&&(e.last.next=l),e.last=l)})(r,e,t),action:async(e,t)=>(0,o.reducer)(e,t),pending:null,last:null,onRouterTransitionStart:null!==t&&"function"==typeof t.onRouterTransitionStart?t.onRouterTransitionStart:null};if(null!==h)throw Object.defineProperty(Error("Internal Next.js Error: createMutableActionQueue was called more than once"),"__NEXT_ERROR_CODE",{value:"E624",enumerable:!1,configurable:!0});return h=r,r}function _(){return null!==h?h.state:null}function b(){return null!==h?h.onRouterTransitionStart:null}function g(e,t,r,o){let u=new URL((0,i.addBasePath)(e),location.href);(0,f.setLinkForCurrentNavigation)(o);let l=b();null!==l&&l(e,t),(0,a.dispatchAppRouterAction)({type:n.ACTION_NAVIGATE,url:u,isExternalUrl:(0,c.isExternalURL)(u),locationSearch:location.search,shouldScroll:r,navigateType:t,allowAliasing:!0})}function v(e,t){let r=b();null!==r&&r(e,"traverse"),(0,a.dispatchAppRouterAction)({type:n.ACTION_RESTORE,url:new URL(e),tree:t})}let m={back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let r=function(){if(null===h)throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0});return h}(),o=(0,c.createPrefetchURL)(e);if(null!==o){var u;(0,s.prefetchReducer)(r.state,{type:n.ACTION_PREFETCH,url:o,kind:null!=(u=null==t?void 0:t.kind)?u:n.PrefetchKind.FULL})}},replace:(e,t)=>{(0,u.startTransition)(()=>{var r;g(e,"replace",null==(r=null==t?void 0:t.scroll)||r,null)})},push:(e,t)=>{(0,u.startTransition)(()=>{var r;g(e,"push",null==(r=null==t?void 0:t.scroll)||r,null)})},refresh:()=>{(0,u.startTransition)(()=>{(0,a.dispatchAppRouterAction)({type:n.ACTION_REFRESH,origin:window.location.origin})})},hmrRefresh:()=>{throw Object.defineProperty(Error("hmrRefresh can only be used in development mode. Please use refresh instead."),"__NEXT_ERROR_CODE",{value:"E485",enumerable:!1,configurable:!0})}};window.next&&(window.next.router=m),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6698:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"onRecoverableError",{enumerable:!0,get:function(){return i}});let n=r(8229),o=r(5262),u=r(1646),l=r(5128),a=n._(r(5807)),i=(e,t)=>{let r=(0,a.default)(e)&&"cause"in e?e.cause:e,n=(0,l.getReactStitchedError)(r);(0,o.isBailoutToCSRError)(r)||(0,u.reportGlobalError)(n)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6825:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getRedirectError:function(){return l},getRedirectStatusCodeFromError:function(){return f},getRedirectTypeFromError:function(){return s},getURLFromRedirectError:function(){return c},permanentRedirect:function(){return i},redirect:function(){return a}});let n=r(4420),o=r(2210),u=void 0;function l(e,t,r){void 0===r&&(r=n.RedirectStatusCode.TemporaryRedirect);let u=Object.defineProperty(Error(o.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return u.digest=o.REDIRECT_ERROR_CODE+";"+t+";"+e+";"+r+";",u}function a(e,t){var r;throw null!=t||(t=(null==u||null==(r=u.getStore())?void 0:r.isAction)?o.RedirectType.push:o.RedirectType.replace),l(e,t,n.RedirectStatusCode.TemporaryRedirect)}function i(e,t){throw void 0===t&&(t=o.RedirectType.replace),l(e,t,n.RedirectStatusCode.PermanentRedirect)}function c(e){return(0,o.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function s(e){if(!(0,o.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function f(e){if(!(0,o.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6897:(e,t)=>{"use strict";var r=Symbol.for("react.transitional.element");function n(e,t,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in n={},t)"key"!==u&&(n[u]=t[u]);else n=t;return{$$typeof:r,type:e,key:o,ref:void 0!==(t=n.ref)?t:null,props:n}}t.Fragment=Symbol.for("react.fragment"),t.jsx=n,t.jsxs=n},6905:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{originConsoleError:function(){return o},patchConsoleError:function(){return u}}),r(8229),r(5807);let n=r(2858);r(5444),r(5169);let o=globalThis.console.error;function u(){window.console.error=function(){let e;for(var t=arguments.length,r=Array(t),u=0;u{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var a=u?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(o,l,a):o[l]=e[l]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o})},6975:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return s}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(9921),a=r(6494);r(3230);let i=r(5227);class c extends u.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,a.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,a.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:u}=this.state,l={[a.HTTPAccessErrorStatus.NOT_FOUND]:e,[a.HTTPAccessErrorStatus.FORBIDDEN]:t,[a.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(u){let i=u===a.HTTPAccessErrorStatus.NOT_FOUND&&e,c=u===a.HTTPAccessErrorStatus.FORBIDDEN&&t,s=u===a.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return i||c||s?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,l[u]]}):n}return n}constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}}function s(e){let{notFound:t,forbidden:r,unauthorized:n,children:a}=e,s=(0,l.useUntrackedPathname)(),f=(0,u.useContext)(i.MissingSlotContext);return t||r||n?(0,o.jsx)(c,{pathname:s,notFound:t,forbidden:r,unauthorized:n,missingSlots:f,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7102:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(1747);function o(e){return(0,n.pathHasPrefix)(e,"/docs-site")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7197:(e,t,r)=>{"use strict";e.exports=r(9062)},7205:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=r(8324).makeUntrackedExoticSearchParams;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7276:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return u},normalizeRscURL:function(){return l}});let n=r(9133),o=r(8291);function u(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function l(e){return e.replace(/\.rsc($|\?)/,"$1")}},7442:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,r,n,i){let c,[s,f,d,p,h]=r;if(1===t.length){let e=a(r,n);return(0,l.addRefreshMarkerToActiveParallelSegments)(e,i),e}let[y,_]=t;if(!(0,u.matchSegment)(y,s))return null;if(2===t.length)c=a(f[_],n);else if(null===(c=e((0,o.getNextFlightSegmentPath)(t),f[_],n,i)))return null;let b=[t[0],{...f,[_]:c},d,p];return h&&(b[4]=!0),(0,l.addRefreshMarkerToActiveParallelSegments)(b,i),b}}});let n=r(8291),o=r(2561),u=r(1127),l=r(4908);function a(e,t){let[r,o]=e,[l,i]=t;if(l===n.DEFAULT_SEGMENT_KEY&&r!==n.DEFAULT_SEGMENT_KEY)return e;if((0,u.matchSegment)(r,l)){let t={};for(let e in o)void 0!==i[e]?t[e]=a(o[e],i[e]):t[e]=o[e];for(let e in i)t[e]||(t[e]=i[e]);let n=[r,t];return e[2]&&(n[2]=e[2]),e[3]&&(n[3]=e[3]),e[4]&&(n[4]=e[4]),n}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7541:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{describeHasCheckingStringProperty:function(){return o},describeStringPropertyAccess:function(){return n},wellKnownProperties:function(){return u}});let r=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function n(e,t){return r.test(t)?"`"+e+"."+t+"`":"`"+e+"["+JSON.stringify(t)+"]`"}function o(e,t){let r=JSON.stringify(t);return"`Reflect.has("+e+", "+r+")`, `"+r+" in "+e+"`, or similar"}let u=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","toJSON","$$typeof","__esModule"])},7555:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return S}});let n=r(8229),o=r(6966),u=r(5155),l=r(9818),a=o._(r(2115)),i=n._(r(7650)),c=r(5227),s=r(8586),f=r(1822),d=r(6614),p=r(1127),h=r(4189),y=r(686),_=r(6975),b=r(5637),g=r(4108),v=r(1027),m=i.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,E=["bottom","height","left","right","top","width","x","y"];function O(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class R extends a.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,p.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r=function(e){var t;return"top"===e?document.body:null!=(t=document.getElementById(e))?t:document.getElementsByName(e)[0]}(n)),r||(r=(0,m.findDOMNode)(this)),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return E.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,h.handleSmoothScroll)(()=>{if(n)return void r.scrollIntoView();let e=document.documentElement,t=e.clientHeight;!O(r,t)&&(e.scrollTop=0,O(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function P(e){let{segmentPath:t,children:r}=e,n=(0,a.useContext)(c.GlobalLayoutRouterContext);if(!n)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,u.jsx)(R,{segmentPath:t,focusAndScrollRef:n.focusAndScrollRef,children:r})}function j(e){let{tree:t,segmentPath:r,cacheNode:n,url:o}=e,i=(0,a.useContext)(c.GlobalLayoutRouterContext);if(!i)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let{tree:d}=i,h=null!==n.prefetchRsc?n.prefetchRsc:n.rsc,y=(0,a.useDeferredValue)(n.rsc,h),_="object"==typeof y&&null!==y&&"function"==typeof y.then?(0,a.use)(y):y;if(!_){let e=n.lazyData;if(null===e){let t=function e(t,r){if(t){let[n,o]=t,u=2===t.length;if((0,p.matchSegment)(r[0],n)&&r[1].hasOwnProperty(o)){if(u){let t=e(void 0,r[1][o]);return[r[0],{...r[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[r[0],{...r[1],[o]:e(t.slice(2),r[1][o])}]}}return r}(["",...r],d),u=(0,g.hasInterceptionRouteInCurrentTree)(d),c=Date.now();n.lazyData=e=(0,s.fetchServerResponse)(new URL(o,location.origin),{flightRouterState:t,nextUrl:u?i.nextUrl:null}).then(e=>((0,a.startTransition)(()=>{(0,v.dispatchAppRouterAction)({type:l.ACTION_SERVER_PATCH,previousTree:d,serverResponse:e,navigatedAt:c})}),e)),(0,a.use)(e)}(0,a.use)(f.unresolvedThenable)}return(0,u.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:t,parentCacheNode:n,parentSegmentPath:r,url:o},children:_})}function T(e){let t,{loading:r,children:n}=e;if(t="object"==typeof r&&null!==r&&"function"==typeof r.then?(0,a.use)(r):r){let e=t[0],r=t[1],o=t[2];return(0,u.jsx)(a.Suspense,{fallback:(0,u.jsxs)(u.Fragment,{children:[r,o,e]}),children:n})}return(0,u.jsx)(u.Fragment,{children:n})}function S(e){let{parallelRouterKey:t,error:r,errorStyles:n,errorScripts:o,templateStyles:l,templateScripts:i,template:s,notFound:f,forbidden:p,unauthorized:h}=e,g=(0,a.useContext)(c.LayoutRouterContext);if(!g)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:v,parentCacheNode:m,parentSegmentPath:E,url:O}=g,R=m.parallelRoutes,S=R.get(t);S||(S=new Map,R.set(t,S));let M=v[0],w=v[1][t],C=w[0],x=null===E?[t]:E.concat([M,t]),A=(0,b.createRouterCacheKey)(C),N=(0,b.createRouterCacheKey)(C,!0),D=S.get(A);if(void 0===D){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1};D=e,S.set(A,e)}let U=m.loading;return(0,u.jsxs)(c.TemplateContext.Provider,{value:(0,u.jsx)(P,{segmentPath:x,children:(0,u.jsx)(d.ErrorBoundary,{errorComponent:r,errorStyles:n,errorScripts:o,children:(0,u.jsx)(T,{loading:U,children:(0,u.jsx)(_.HTTPAccessFallbackBoundary,{notFound:f,forbidden:p,unauthorized:h,children:(0,u.jsx)(y.RedirectBoundary,{children:(0,u.jsx)(j,{url:O,tree:w,cacheNode:D,segmentPath:x})})})})})}),children:[l,i,s]},N)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7568:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ServerInsertedHTMLContext:function(){return o},useServerInsertedHTML:function(){return u}});let n=r(6966)._(r(2115)),o=n.default.createContext(null);function u(e){let t=(0,n.useContext)(o);t&&t(e)}},7599:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unstable_rethrow",{enumerable:!0,get:function(){return n}});let n=r(7865).unstable_rethrow;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7650:(e,t,r)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=r(8730)},7755:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return l},isInterceptionRouteAppPath:function(){return u}});let n=r(7276),o=["(..)(..)","(.)","(..)","(...)"];function u(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function l(e){let t,r,u;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,u]=e.split(r,2);break}if(!t||!r||!u)throw Object.defineProperty(Error("Invalid interception route: "+e+". Must be in the format //(..|...|..)(..)/"),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":u="/"===t?"/"+u:t+"/"+u;break;case"(..)":if("/"===t)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..) marker at the root level, use (.) instead."),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});u=t.split("/").slice(0,-1).concat(u).join("/");break;case"(...)":u="/"+u;break;case"(..)(..)":let l=t.split("/");if(l.length<=2)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..)(..) marker at the root level or one level up."),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});u=l.slice(0,-2).concat(u).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:t,interceptedRoute:u}}},7760:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AppRouterAnnouncer",{enumerable:!0,get:function(){return l}});let n=r(2115),o=r(7650),u="next-route-announcer";function l(e){let{tree:t}=e,[r,l]=(0,n.useState)(null);(0,n.useEffect)(()=>(l(function(){var e;let t=document.getElementsByName(u)[0];if(null==t||null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(u);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(u)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[a,i]=(0,n.useState)(""),c=(0,n.useRef)(void 0);return(0,n.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==c.current&&c.current!==e&&i(e),c.current=e},[t]),r?(0,o.createPortal)(a,r):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7801:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return s}});let n=r(1139),o=r(7442),u=r(9234),l=r(3894),a=r(878),i=r(3507),c=r(6158);function s(e,t){let{serverResponse:{flightData:r,canonicalUrl:s},navigatedAt:f}=t,d={};if(d.preserveCustomHistoryState=!1,"string"==typeof r)return(0,l.handleExternalUrl)(e,d,r,e.pushRef.pendingPush);let p=e.tree,h=e.cache;for(let t of r){let{segmentPath:r,tree:i}=t,y=(0,o.applyRouterStatePatchToTree)(["",...r],p,i,e.canonicalUrl);if(null===y)return e;if((0,u.isNavigatingToNewRootLayout)(p,y))return(0,l.handleExternalUrl)(e,d,e.canonicalUrl,e.pushRef.pendingPush);let _=s?(0,n.createHrefFromUrl)(s):void 0;_&&(d.canonicalUrl=_);let b=(0,c.createEmptyCacheNode)();(0,a.applyFlightData)(f,h,b,t),d.patchedTree=y,d.cache=b,h=b,p=y}return(0,i.handleMutable)(e,d)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7829:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"makeUntrackedExoticParams",{enumerable:!0,get:function(){return u}});let n=r(7541),o=new WeakMap;function u(e){let t=o.get(e);if(t)return t;let r=Promise.resolve(e);return o.set(e,r),Object.keys(e).forEach(t=>{n.wellKnownProperties.has(t)||(r[t]=e[t])}),r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7865:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,o.isNextRouterError)(t)||(0,n.isBailoutToCSRError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=r(5262),o=r(2858);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8229:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n})},8287:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{METADATA_BOUNDARY_NAME:function(){return r},OUTLET_BOUNDARY_NAME:function(){return o},VIEWPORT_BOUNDARY_NAME:function(){return n}});let r="__next_metadata_boundary__",n="__next_viewport_boundary__",o="__next_outlet_boundary__"},8291:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}function n(e){return e.startsWith("@")&&"@children"!==e}function o(e,t){if(e.includes(u)){let e=JSON.stringify(t);return"{}"!==e?u+"?"+e:u}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return l},PAGE_SEGMENT_KEY:function(){return u},addSearchParamsIfPageSegment:function(){return o},isGroupSegment:function(){return r},isParallelRouteSegment:function(){return n}});let u="__PAGE__",l="__DEFAULT__"},8324:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"makeUntrackedExoticSearchParams",{enumerable:!0,get:function(){return u}});let n=r(7541),o=new WeakMap;function u(e){let t=o.get(e);if(t)return t;let r=Promise.resolve(e);return o.set(e,r),Object.keys(e).forEach(t=>{n.wellKnownProperties.has(t)||(r[t]=e[t])}),r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8527:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"notFound",{enumerable:!0,get:function(){return o}});let n=""+r(6494).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function o(){let e=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw e.digest=n,e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createFetch:function(){return y},createFromNextReadableStream:function(){return _},fetchServerResponse:function(){return h},urlToUrlWithoutFlightMarker:function(){return f}});let n=r(3269),o=r(3806),u=r(1818),l=r(9818),a=r(2561),i=r(5624),c=r(8969),{createFromReadableStream:s}=r(4979);function f(e){let t=new URL(e,location.origin);if(t.searchParams.delete(n.NEXT_RSC_UNION_QUERY),t.pathname.endsWith(".txt")){let{pathname:e}=t,r=e.endsWith("/index.txt")?10:4;t.pathname=e.slice(0,-r)}return t}function d(e){return{flightData:f(e).toString(),canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1}}let p=new AbortController;async function h(e,t){let{flightRouterState:r,nextUrl:o,prefetchKind:u}=t,c={[n.RSC_HEADER]:"1",[n.NEXT_ROUTER_STATE_TREE_HEADER]:encodeURIComponent(JSON.stringify(r))};u===l.PrefetchKind.AUTO&&(c[n.NEXT_ROUTER_PREFETCH_HEADER]="1"),o&&(c[n.NEXT_URL]=o);try{var s;let t=u?u===l.PrefetchKind.TEMPORARY?"high":"low":"auto";(e=new URL(e)).pathname.endsWith("/")?e.pathname+="index.txt":e.pathname+=".txt";let r=await y(e,c,t,p.signal),o=f(r.url),h=r.redirected?o:void 0,b=r.headers.get("content-type")||"",g=!!(null==(s=r.headers.get("vary"))?void 0:s.includes(n.NEXT_URL)),v=!!r.headers.get(n.NEXT_DID_POSTPONE_HEADER),m=r.headers.get(n.NEXT_ROUTER_STALE_TIME_HEADER),E=null!==m?parseInt(m,10):-1,O=b.startsWith(n.RSC_CONTENT_TYPE_HEADER);if(O||(O=b.startsWith("text/plain")),!O||!r.ok||!r.body)return e.hash&&(o.hash=e.hash),d(o.toString());let R=v?function(e){let t=e.getReader();return new ReadableStream({async pull(e){for(;;){let{done:r,value:n}=await t.read();if(!r){e.enqueue(n);continue}return}}})}(r.body):r.body,P=await _(R);if((0,i.getAppBuildId)()!==P.b)return d(r.url);return{flightData:(0,a.normalizeFlightData)(P.f),canonicalUrl:h,couldBeIntercepted:g,prerendered:P.S,postponed:v,staleTime:E}}catch(t){return p.signal.aborted||console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),{flightData:e.toString(),canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1}}}function y(e,t,r,n){let o=new URL(e);return(0,c.setCacheBustingSearchParam)(o,t),fetch(o,{credentials:"same-origin",headers:t,priority:r||void 0,signal:n})}function _(e){return s(e,{callServer:o.callServer,findSourceMapURL:u.findSourceMapURL})}window.addEventListener("pagehide",()=>{p.abort()}),window.addEventListener("pageshow",()=>{p=new AbortController}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8709:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return w}});let n=r(3806),o=r(1818),u=r(3269),l=r(9818),a=r(1315),i=r(1139),c=r(3894),s=r(7442),f=r(9234),d=r(3507),p=r(4758),h=r(6158),y=r(4108),_=r(6375),b=r(4908),g=r(2561),v=r(6825),m=r(2210),E=r(1518),O=r(4882),R=r(7102),P=r(2816);r(6005);let{createFromFetch:j,createTemporaryReferenceSet:T,encodeReply:S}=r(4979);async function M(e,t,r){let l,i,{actionId:c,actionArgs:s}=r,f=T(),d=(0,P.extractInfoFromServerReferenceId)(c),p="use-cache"===d.type?(0,P.omitUnusedArgs)(s,d):s,h=await S(p,{temporaryReferences:f}),y=await fetch("",{method:"POST",headers:{Accept:u.RSC_CONTENT_TYPE_HEADER,[u.ACTION_HEADER]:c,[u.NEXT_ROUTER_STATE_TREE_HEADER]:encodeURIComponent(JSON.stringify(e.tree)),...{},...t?{[u.NEXT_URL]:t}:{}},body:h}),_=y.headers.get("x-action-redirect"),[b,v]=(null==_?void 0:_.split(";"))||[];switch(v){case"push":l=m.RedirectType.push;break;case"replace":l=m.RedirectType.replace;break;default:l=void 0}let E=!!y.headers.get(u.NEXT_IS_PRERENDER_HEADER);try{let e=JSON.parse(y.headers.get("x-action-revalidated")||"[[],0,0]");i={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){i={paths:[],tag:!1,cookie:!1}}let O=b?(0,a.assignLocation)(b,new URL(e.canonicalUrl,window.location.href)):void 0,R=y.headers.get("content-type");if(null==R?void 0:R.startsWith(u.RSC_CONTENT_TYPE_HEADER)){let e=await j(Promise.resolve(y),{callServer:n.callServer,findSourceMapURL:o.findSourceMapURL,temporaryReferences:f});return b?{actionFlightData:(0,g.normalizeFlightData)(e.f),redirectLocation:O,redirectType:l,revalidatedParts:i,isPrerender:E}:{actionResult:e.a,actionFlightData:(0,g.normalizeFlightData)(e.f),redirectLocation:O,redirectType:l,revalidatedParts:i,isPrerender:E}}if(y.status>=400)throw Object.defineProperty(Error("text/plain"===R?await y.text():"An unexpected response was received from the server."),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return{redirectLocation:O,redirectType:l,revalidatedParts:i,isPrerender:E}}function w(e,t){let{resolve:r,reject:n}=t,o={},u=e.tree;o.preserveCustomHistoryState=!1;let a=e.nextUrl&&(0,y.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null,g=Date.now();return M(e,a,t).then(async y=>{let P,{actionResult:j,actionFlightData:T,redirectLocation:S,redirectType:M,isPrerender:w,revalidatedParts:C}=y;if(S&&(M===m.RedirectType.replace?(e.pushRef.pendingPush=!1,o.pendingPush=!1):(e.pushRef.pendingPush=!0,o.pendingPush=!0),o.canonicalUrl=P=(0,i.createHrefFromUrl)(S,!1)),!T)return(r(j),S)?(0,c.handleExternalUrl)(e,o,S.href,e.pushRef.pendingPush):e;if("string"==typeof T)return r(j),(0,c.handleExternalUrl)(e,o,T,e.pushRef.pendingPush);let x=C.paths.length>0||C.tag||C.cookie;for(let n of T){let{tree:l,seedData:i,head:d,isRootRender:y}=n;if(!y)return console.log("SERVER ACTION APPLY FAILED"),r(j),e;let v=(0,s.applyRouterStatePatchToTree)([""],u,l,P||e.canonicalUrl);if(null===v)return r(j),(0,_.handleSegmentMismatch)(e,t,l);if((0,f.isNavigatingToNewRootLayout)(u,v))return r(j),(0,c.handleExternalUrl)(e,o,P||e.canonicalUrl,e.pushRef.pendingPush);if(null!==i){let t=i[1],r=(0,h.createEmptyCacheNode)();r.rsc=t,r.prefetchRsc=null,r.loading=i[3],(0,p.fillLazyItemsTillLeafWithHead)(g,r,void 0,l,i,d,void 0),o.cache=r,o.prefetchCache=new Map,x&&await (0,b.refreshInactiveParallelSegments)({navigatedAt:g,state:e,updatedTree:v,updatedCache:r,includeNextUrl:!!a,canonicalUrl:o.canonicalUrl||e.canonicalUrl})}o.patchedTree=v,u=v}return S&&P?(x||((0,E.createSeededPrefetchCacheEntry)({url:S,data:{flightData:T,canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1},tree:e.tree,prefetchCache:e.prefetchCache,nextUrl:e.nextUrl,kind:w?l.PrefetchKind.FULL:l.PrefetchKind.AUTO}),o.prefetchCache=e.prefetchCache),n((0,v.getRedirectError)((0,R.hasBasePath)(P)?(0,O.removeBasePath)(P):P,M||m.RedirectType.push))):r(j),(0,d.handleMutable)(e,o)},t=>(n(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8730:(e,t,r)=>{"use strict";var n=r(2115);function o(e){var t="https://react.dev/errors/"+e;if(1{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleHardNavError:function(){return o},useNavFailureHandler:function(){return u}}),r(2115);let n=r(1139);function o(e){return!!e&&!!window.next.__pendingUrl&&(0,n.createHrefFromUrl)(new URL(window.location.href))!==(0,n.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function u(){}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8946:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{computeChangedPath:function(){return s},extractPathFromFlightRouterState:function(){return c},getSelectedParams:function(){return function e(t,r){for(let n of(void 0===r&&(r={}),Object.values(t[1]))){let t=n[0],u=Array.isArray(t),l=u?t[1]:t;!l||l.startsWith(o.PAGE_SEGMENT_KEY)||(u&&("c"===t[2]||"oc"===t[2])?r[t[0]]=t[1].split("/"):u&&(r[t[0]]=t[1]),r=e(n,r))}return r}}});let n=r(7755),o=r(8291),u=r(1127),l=e=>"/"===e[0]?e.slice(1):e,a=e=>"string"==typeof e?"children"===e?"":e:e[1];function i(e){return e.reduce((e,t)=>""===(t=l(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function c(e){var t;let r=Array.isArray(e[0])?e[0][1]:e[0];if(r===o.DEFAULT_SEGMENT_KEY||n.INTERCEPTION_ROUTE_MARKERS.some(e=>r.startsWith(e)))return;if(r.startsWith(o.PAGE_SEGMENT_KEY))return"";let u=[a(r)],l=null!=(t=e[1])?t:{},s=l.children?c(l.children):void 0;if(void 0!==s)u.push(s);else for(let[e,t]of Object.entries(l)){if("children"===e)continue;let r=c(t);void 0!==r&&u.push(r)}return i(u)}function s(e,t){let r=function e(t,r){let[o,l]=t,[i,s]=r,f=a(o),d=a(i);if(n.INTERCEPTION_ROUTE_MARKERS.some(e=>f.startsWith(e)||d.startsWith(e)))return"";if(!(0,u.matchSegment)(o,i)){var p;return null!=(p=c(r))?p:""}for(let t in l)if(s[t]){let r=e(l[t],s[t]);if(null!==r)return a(i)+"/"+r}return null}(e,t);return null==r||"/"===r?r:i(r.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8969:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"setCacheBustingSearchParam",{enumerable:!0,get:function(){return u}});let n=r(3942),o=r(3269),u=(e,t)=>{let r=(0,n.hexHash)([t[o.NEXT_ROUTER_PREFETCH_HEADER]||"0",t[o.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]||"0",t[o.NEXT_ROUTER_STATE_TREE_HEADER],t[o.NEXT_URL]].join(",")),u=e.search,l=(u.startsWith("?")?u.slice(1):u).split("&").filter(Boolean);l.push(o.NEXT_RSC_UNION_QUERY+"="+r),e.search=l.length?"?"+l.join("&"):""};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8999:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return i.RedirectType},ServerInsertedHTMLContext:function(){return c.ServerInsertedHTMLContext},forbidden:function(){return i.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return i.permanentRedirect},redirect:function(){return i.redirect},unauthorized:function(){return i.unauthorized},unstable_rethrow:function(){return i.unstable_rethrow},useParams:function(){return h},usePathname:function(){return d},useRouter:function(){return p},useSearchParams:function(){return f},useSelectedLayoutSegment:function(){return _},useSelectedLayoutSegments:function(){return y},useServerInsertedHTML:function(){return c.useServerInsertedHTML}});let n=r(2115),o=r(5227),u=r(886),l=r(708),a=r(8291),i=r(5618),c=r(7568),s=void 0;function f(){let e=(0,n.useContext)(u.SearchParamsContext);return(0,n.useMemo)(()=>e?new i.ReadonlyURLSearchParams(e):null,[e])}function d(){return null==s||s("usePathname()"),(0,n.useContext)(u.PathnameContext)}function p(){let e=(0,n.useContext)(o.AppRouterContext);if(null===e)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});return e}function h(){return null==s||s("useParams()"),(0,n.useContext)(u.PathParamsContext)}function y(e){void 0===e&&(e="children"),null==s||s("useSelectedLayoutSegments()");let t=(0,n.useContext)(o.LayoutRouterContext);return t?function e(t,r,n,o){let u;if(void 0===n&&(n=!0),void 0===o&&(o=[]),n)u=t[1][r];else{var i;let e=t[1];u=null!=(i=e.children)?i:Object.values(e)[0]}if(!u)return o;let c=u[0],s=(0,l.getSegmentValue)(c);return!s||s.startsWith(a.PAGE_SEGMENT_KEY)?o:(o.push(s),e(u,r,!1,o))}(t.parentTree,e):null}function _(e){void 0===e&&(e="children"),null==s||s("useSelectedLayoutSegment()");let t=y(e);if(!t||0===t.length)return null;let r="children"===e?t[0]:t[t.length-1];return r===a.DEFAULT_SEGMENT_KEY?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9062:(e,t,r)=>{"use strict";var n=r(7650),o={stream:!0},u=new Map;function l(e){var t=r(e);return"function"!=typeof t.then||"fulfilled"===t.status?null:(t.then(function(e){t.status="fulfilled",t.value=e},function(e){t.status="rejected",t.reason=e}),t)}function a(){}function i(e){for(var t=e[1],n=[],o=0;oc||35===c||114===c||120===c?(s=c,c=3,a++):(s=0,c=3);continue;case 2:44===(y=l[a++])?c=4:f=f<<4|(96l.length&&(y=-1)}var _=l.byteOffset+a;if(-1{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},9148:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{copyNextErrorCode:function(){return n},createDigestWithErrorCode:function(){return r},extractNextErrorCode:function(){return o}});let r=(e,t)=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e?`${t}@${e.__NEXT_ERROR_CODE}`:t,n=(e,t)=>{let r=o(e);r&&"object"==typeof t&&null!==t&&Object.defineProperty(t,"__NEXT_ERROR_CODE",{value:r,enumerable:!1,configurable:!0})},o=e=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e&&"string"==typeof e.__NEXT_ERROR_CODE?e.__NEXT_ERROR_CODE:"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest?e.digest.split("@").find(e=>e.startsWith("E")):void 0},9154:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{prefetchQueue:function(){return u},prefetchReducer:function(){return l}});let n=r(2312),o=r(1518),u=new n.PromiseQueue(5),l=function(e,t){(0,o.prunePrefetchCache)(e.prefetchCache);let{url:r}=t;return(0,o.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,allowAliasing:!0}),e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9155:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{onCaughtError:function(){return i},onUncaughtError:function(){return c}}),r(5128),r(5444);let n=r(2858),o=r(5262),u=r(1646),l=r(6905),a=r(6614);function i(e,t){var r;let u,i=null==(r=t.errorBoundary)?void 0:r.constructor;if(u=u||i===a.ErrorBoundaryHandler&&t.errorBoundary.props.errorComponent===a.GlobalError)return c(e,t);(0,o.isBailoutToCSRError)(e)||(0,n.isNextRouterError)(e)||(0,l.originConsoleError)(e)}function c(e,t){(0,o.isBailoutToCSRError)(e)||(0,n.isNextRouterError)(e)||(0,u.reportGlobalError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9187:(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unauthorized",{enumerable:!0,get:function(){return n}}),r(6494).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9234:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,r){let n=t[0],o=r[0];if(Array.isArray(n)&&Array.isArray(o)){if(n[0]!==o[0]||n[2]!==o[2])return!0}else if(n!==o)return!0;if(t[4])return!r[4];if(r[4])return!0;let u=Object.values(t[1])[0],l=Object.values(r[1])[0];return!u||!l||e(u,l)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9509:(e,t,r)=>{"use strict";var n,o;e.exports=(null==(n=r.g.process)?void 0:n.env)&&"object"==typeof(null==(o=r.g.process)?void 0:o.env)?r.g.process:r(666)},9665:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{MetadataBoundary:function(){return u},OutletBoundary:function(){return a},ViewportBoundary:function(){return l}});let n=r(8287),o={[n.METADATA_BOUNDARY_NAME]:function(e){let{children:t}=e;return t},[n.VIEWPORT_BOUNDARY_NAME]:function(e){let{children:t}=e;return t},[n.OUTLET_BOUNDARY_NAME]:function(e){let{children:t}=e;return t}},u=o[n.METADATA_BOUNDARY_NAME.slice(0)],l=o[n.VIEWPORT_BOUNDARY_NAME.slice(0)],a=o[n.OUTLET_BOUNDARY_NAME.slice(0)];("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9726:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return f}});let n=r(9818),o=r(3894),u=r(7801),l=r(4819),a=r(5542),i=r(9154),c=r(3612),s=r(8709),f=function(e,t){switch(t.type){case n.ACTION_NAVIGATE:return(0,o.navigateReducer)(e,t);case n.ACTION_SERVER_PATCH:return(0,u.serverPatchReducer)(e,t);case n.ACTION_RESTORE:return(0,l.restoreReducer)(e,t);case n.ACTION_REFRESH:return(0,a.refreshReducer)(e,t);case n.ACTION_HMR_REFRESH:return(0,c.hmrRefreshReducer)(e,t);case n.ACTION_PREFETCH:return(0,i.prefetchReducer)(e,t);case n.ACTION_SERVER_ACTION:return(0,s.serverActionReducer)(e,t);default:throw Object.defineProperty(Error("Unknown action"),"__NEXT_ERROR_CODE",{value:"E295",enumerable:!1,configurable:!0})}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9771:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getHydrationWarningType:function(){return a},getReactHydrationDiffSegments:function(){return s},hydrationErrorState:function(){return o},storeHydrationErrorStateFromConsoleArgs:function(){return f}});let n=r(6465),o={},u=new Set(["Warning: In HTML, %s cannot be a child of <%s>.%s\nThis will cause a hydration error.%s","Warning: In HTML, %s cannot be a descendant of <%s>.\nThis will cause a hydration error.%s","Warning: In HTML, text nodes cannot be a child of <%s>.\nThis will cause a hydration error.","Warning: In HTML, whitespace text nodes cannot be a child of <%s>. Make sure you don't have any extra whitespace between tags on each line of your source code.\nThis will cause a hydration error.","Warning: Expected server HTML to contain a matching <%s> in <%s>.%s","Warning: Did not expect server HTML to contain a <%s> in <%s>.%s"]),l=new Set(['Warning: Expected server HTML to contain a matching text node for "%s" in <%s>.%s','Warning: Did not expect server HTML to contain the text node "%s" in <%s>.%s']),a=e=>{if("string"!=typeof e)return"text";let t=e.startsWith("Warning: ")?e:"Warning: "+e;return i(t)?"tag":c(t)?"text-in-tag":"text"},i=e=>u.has(e),c=e=>l.has(e),s=e=>{if(e){let{message:t,diff:r}=(0,n.getHydrationErrorStackInfo)(e);if(t)return[t,r]}};function f(){for(var e=arguments.length,t=Array(e),r=0;r{e=e.trim();let[,l,a]=/at (\w+)( \((.*)\))?/.exec(e)||[];return a||(l===t&&-1===o?o=n:l===r&&-1===u&&(u=n)),a?"":l}).filter(Boolean).reverse(),c="";for(let e=0;e "+" ".repeat(Math.max(2*e-2,0)+2)+"<"+t+">\n":c+=" ".repeat(2*e+2)+"<"+t+">\n"}if("text"===l){let e=" ".repeat(2*i.length);c+="+ "+e+'"'+t+'"\n'+("- "+e+'"'+r)+'"\n'}else if("text-in-tag"===l){let e=" ".repeat(2*i.length);c+="> "+e+"<"+r+">\n"+("> "+e+'"'+t)+'"\n'}return c}(u,l,i,n):o.reactOutputComponentDiff=n,o.warning=r,o.serverContent=l,o.clientContent=i}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9818:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_HMR_REFRESH:function(){return a},ACTION_NAVIGATE:function(){return n},ACTION_PREFETCH:function(){return l},ACTION_REFRESH:function(){return r},ACTION_RESTORE:function(){return o},ACTION_SERVER_ACTION:function(){return i},ACTION_SERVER_PATCH:function(){return u},PrefetchCacheEntryStatus:function(){return s},PrefetchKind:function(){return c}});let r="refresh",n="navigate",o="restore",u="server-patch",l="prefetch",a="hmr-refresh",i="server-action";var c=function(e){return e.AUTO="auto",e.FULL="full",e.TEMPORARY="temporary",e}({}),s=function(e){return e.fresh="fresh",e.reusable="reusable",e.expired="expired",e.stale="stale",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9837:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"InvariantError",{enumerable:!0,get:function(){return r}});class r extends Error{constructor(e,t){super("Invariant: "+(e.endsWith(".")?e:e+".")+" This is a bug in Next.js.",t),this.name="InvariantError"}}},9880:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,r,u){let l=u.length<=2,[a,i]=u,c=(0,o.createRouterCacheKey)(i),s=r.parallelRoutes.get(a),f=t.parallelRoutes.get(a);f&&f!==s||(f=new Map(s),t.parallelRoutes.set(a,f));let d=null==s?void 0:s.get(c),p=f.get(c);if(l){p&&p.lazyData&&p!==d||f.set(c,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1});return}if(!p||!d){p||f.set(c,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1});return}return p===d&&(p={lazyData:p.lazyData,rsc:p.rsc,prefetchRsc:p.prefetchRsc,head:p.head,prefetchHead:p.prefetchHead,parallelRoutes:new Map(p.parallelRoutes),loading:p.loading},f.set(c,p)),e(p,d,(0,n.getNextFlightSegmentPath)(u))}}});let n=r(2561),o=r(5637);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9921:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=r(2115),o=r(886);function u(){return(0,n.useContext)(o.PathnameContext)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/728.0a8f45173f3a857c.js b/docs/_next/static/chunks/728.0a8f45173f3a857c.js deleted file mode 100644 index 34be2e5d..00000000 --- a/docs/_next/static/chunks/728.0a8f45173f3a857c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[728],{6728:(t,e,n)=>{function i(t){let e=[],n=new Set;for(let i of t)n.has(i.url)||(n.add(i.url),e.push({id:i.url,type:"page",url:i.url,content:i.title})),e.push({id:i.objectID,type:i.content===i.section?"heading":"text",url:i.section_id?`${i.url}#${i.section_id}`:i.url,content:i.content});return e}async function s(t,e,n,s){let r=s?.filters;return(n&&(r=r?`tag:${n} AND (${r})`:`tag:${n}`),0===e.length)?i((await t.search(e,{distinct:1,hitsPerPage:8,...s,filters:r})).hits).filter(t=>"page"===t.type):i((await t.search(e,{distinct:5,hitsPerPage:10,...s,filters:r})).hits)}n.d(e,{searchDocs:()=>s}),n(9189)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/874-0cb5402bc7a91b88.js b/docs/_next/static/chunks/874-0cb5402bc7a91b88.js deleted file mode 100644 index 52852bb2..00000000 --- a/docs/_next/static/chunks/874-0cb5402bc7a91b88.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[874],{2664:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return u}});let n=r(9991),o=r(7102);function u(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},2757:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return u},formatWithValidation:function(){return a},urlObjectKeys:function(){return i}});let n=r(6966)._(r(8859)),o=/https?|ftp|gopher|file/;function u(e){let{auth:t,hostname:r}=e,u=e.protocol||"",i=e.pathname||"",a=e.hash||"",l=e.query||"",f=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?f=t+e.host:r&&(f=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(f+=":"+e.port)),l&&"object"==typeof l&&(l=String(n.urlQueryToSearchParams(l)));let c=e.search||l&&"?"+l||"";return u&&!u.endsWith(":")&&(u+=":"),e.slashes||(!u||o.test(u))&&!1!==f?(f="//"+(f||""),i&&"/"!==i[0]&&(i="/"+i)):f||(f=""),a&&"#"!==a[0]&&(a="#"+a),c&&"?"!==c[0]&&(c="?"+c),""+u+f+(i=i.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+a}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function a(e){return u(e)}},3180:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},6654:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=r(2115);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=u(e,n)),t&&(o.current=u(t,n))},[e,t])}function u(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6874:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return g},useLinkStatus:function(){return b}});let n=r(6966),o=r(5155),u=n._(r(2115)),i=r(2757),a=r(5227),l=r(9818),f=r(6654),c=r(9991),s=r(5929);r(3230);let p=r(4930),d=r(2664),h=r(6634);function y(e){return"string"==typeof e?e:(0,i.formatUrl)(e)}function g(e){let t,r,n,[i,g]=(0,u.useOptimistic)(p.IDLE_LINK_STATUS),b=(0,u.useRef)(null),{href:P,as:_,children:v,prefetch:E=null,passHref:O,replace:j,shallow:T,scroll:C,onClick:N,onMouseEnter:S,onTouchStart:A,legacyBehavior:L=!1,onNavigate:x,ref:M,unstable_dynamicOnHover:U,...R}=e;t=v,L&&("string"==typeof t||"number"==typeof t)&&(t=(0,o.jsx)("a",{children:t}));let k=u.default.useContext(a.AppRouterContext),I=!1!==E,w=null===E?l.PrefetchKind.AUTO:l.PrefetchKind.FULL,{href:D,as:F}=u.default.useMemo(()=>{let e=y(P);return{href:e,as:_?y(_):e}},[P,_]);L&&(r=u.default.Children.only(t));let K=L?r&&"object"==typeof r&&r.ref:M,B=u.default.useCallback(e=>(null!==k&&(b.current=(0,p.mountLinkInstance)(e,D,k,w,I,g)),()=>{b.current&&((0,p.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,p.unmountPrefetchableInstance)(e)}),[I,D,k,w,g]),z={ref:(0,f.useMergedRef)(B,K),onClick(e){L||"function"!=typeof N||N(e),L&&r.props&&"function"==typeof r.props.onClick&&r.props.onClick(e),k&&(e.defaultPrevented||function(e,t,r,n,o,i,a){let{nodeName:l}=e.currentTarget;if(!("A"===l.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,d.isLocalURL)(t)){o&&(e.preventDefault(),location.replace(t));return}e.preventDefault(),u.default.startTransition(()=>{if(a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}(0,h.dispatchNavigateAction)(r||t,o?"replace":"push",null==i||i,n.current)})}}(e,D,F,b,j,C,x))},onMouseEnter(e){L||"function"!=typeof S||S(e),L&&r.props&&"function"==typeof r.props.onMouseEnter&&r.props.onMouseEnter(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){L||"function"!=typeof A||A(e),L&&r.props&&"function"==typeof r.props.onTouchStart&&r.props.onTouchStart(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,c.isAbsoluteUrl)(F)?z.href=F:L&&!O&&("a"!==r.type||"href"in r.props)||(z.href=(0,s.addBasePath)(F)),n=L?u.default.cloneElement(r,z):(0,o.jsx)("a",{...R,...z,children:t}),(0,o.jsx)(m.Provider,{value:i,children:n})}r(3180);let m=(0,u.createContext)(p.IDLE_LINK_STATUS),b=()=>(0,u.useContext)(m);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8859:(e,t)=>{function r(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,n(e));else t.set(r,n(o));return t}function u(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return m},NormalizeError:function(){return y},PageNotFoundError:function(){return g},SP:function(){return p},ST:function(){return d},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return l},getLocationOrigin:function(){return i},getURL:function(){return a},isAbsoluteUrl:function(){return u},isResSent:function(){return f},loadGetInitialProps:function(){return s},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return P}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),u=0;uo.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function a(){let{href:e}=window.location,t=i();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function s(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await s(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let p="undefined"!=typeof performance,d=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class y extends Error{}class g extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class m extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function P(e){return JSON.stringify({message:e.message,stack:e.stack})}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/882-90fa2d4319e1517d.js b/docs/_next/static/chunks/882-90fa2d4319e1517d.js deleted file mode 100644 index 7f2f1095..00000000 --- a/docs/_next/static/chunks/882-90fa2d4319e1517d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[882],{408:(e,t,n)=>{n.d(t,{AM:()=>ty,hl:()=>tw,Wv:()=>tx});var r=n(5155),o=n(2115),i=n(5185),l=n(6101),a=n(6081),s=n(9178),c=n(2293),u=n(7900),f=n(1285);let d=["top","right","bottom","left"],p=Math.min,h=Math.max,m=Math.round,g=Math.floor,v=e=>({x:e,y:e}),y={left:"right",right:"left",bottom:"top",top:"bottom"},x={start:"end",end:"start"};function w(e,t){return"function"==typeof e?e(t):e}function b(e){return e.split("-")[0]}function A(e){return e.split("-")[1]}function C(e){return"x"===e?"y":"x"}function k(e){return"y"===e?"height":"width"}function R(e){return["top","bottom"].includes(b(e))?"y":"x"}function P(e){return e.replace(/start|end/g,e=>x[e])}function E(e){return e.replace(/left|right|bottom|top/g,e=>y[e])}function T(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function S(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function j(e,t,n){let r,{reference:o,floating:i}=e,l=R(t),a=C(R(t)),s=k(a),c=b(t),u="y"===l,f=o.x+o.width/2-i.width/2,d=o.y+o.height/2-i.height/2,p=o[s]/2-i[s]/2;switch(c){case"top":r={x:f,y:o.y-i.height};break;case"bottom":r={x:f,y:o.y+o.height};break;case"right":r={x:o.x+o.width,y:d};break;case"left":r={x:o.x-i.width,y:d};break;default:r={x:o.x,y:o.y}}switch(A(t)){case"start":r[a]-=p*(n&&u?-1:1);break;case"end":r[a]+=p*(n&&u?-1:1)}return r}let L=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:l}=n,a=i.filter(Boolean),s=await (null==l.isRTL?void 0:l.isRTL(t)),c=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:f}=j(c,r,s),d=r,p={},h=0;for(let n=0;ne[t]>=0)}async function M(e,t){let{placement:n,platform:r,elements:o}=e,i=await (null==r.isRTL?void 0:r.isRTL(o.floating)),l=b(n),a=A(n),s="y"===R(n),c=["left","top"].includes(l)?-1:1,u=i&&s?-1:1,f=w(t,e),{mainAxis:d,crossAxis:p,alignmentAxis:h}="number"==typeof f?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&"number"==typeof h&&(p="end"===a?-1*h:h),s?{x:p*u,y:d*c}:{x:d*c,y:p*u}}function F(){return"undefined"!=typeof window}function H(e){return I(e)?(e.nodeName||"").toLowerCase():"#document"}function W(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function z(e){var t;return null==(t=(I(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function I(e){return!!F()&&(e instanceof Node||e instanceof W(e).Node)}function _(e){return!!F()&&(e instanceof Element||e instanceof W(e).Element)}function B(e){return!!F()&&(e instanceof HTMLElement||e instanceof W(e).HTMLElement)}function V(e){return!!F()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof W(e).ShadowRoot)}function K(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=G(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Q(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch(e){return!1}})}function q(e){let t=$(),n=_(e)?G(e):e;return["transform","translate","scale","rotate","perspective"].some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","translate","scale","rotate","perspective","filter"].some(e=>(n.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(n.contain||"").includes(e))}function $(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function Y(e){return["html","body","#document"].includes(H(e))}function G(e){return W(e).getComputedStyle(e)}function X(e){return _(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Z(e){if("html"===H(e))return e;let t=e.assignedSlot||e.parentNode||V(e)&&e.host||z(e);return V(t)?t.host:t}function J(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let o=function e(t){let n=Z(t);return Y(n)?t.ownerDocument?t.ownerDocument.body:t.body:B(n)&&K(n)?n:e(n)}(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),l=W(o);if(i){let e=U(l);return t.concat(l,l.visualViewport||[],K(o)?o:[],e&&n?J(e):[])}return t.concat(o,J(o,[],n))}function U(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ee(e){let t=G(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=B(e),i=o?e.offsetWidth:n,l=o?e.offsetHeight:r,a=m(n)!==i||m(r)!==l;return a&&(n=i,r=l),{width:n,height:r,$:a}}function et(e){return _(e)?e:e.contextElement}function en(e){let t=et(e);if(!B(t))return v(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:i}=ee(t),l=(i?m(n.width):n.width)/r,a=(i?m(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),a&&Number.isFinite(a)||(a=1),{x:l,y:a}}let er=v(0);function eo(e){let t=W(e);return $()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:er}function ei(e,t,n,r){var o;void 0===t&&(t=!1),void 0===n&&(n=!1);let i=e.getBoundingClientRect(),l=et(e),a=v(1);t&&(r?_(r)&&(a=en(r)):a=en(e));let s=(void 0===(o=n)&&(o=!1),r&&(!o||r===W(l))&&o)?eo(l):v(0),c=(i.left+s.x)/a.x,u=(i.top+s.y)/a.y,f=i.width/a.x,d=i.height/a.y;if(l){let e=W(l),t=r&&_(r)?W(r):r,n=e,o=U(n);for(;o&&r&&t!==n;){let e=en(o),t=o.getBoundingClientRect(),r=G(o),i=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,u*=e.y,f*=e.x,d*=e.y,c+=i,u+=l,o=U(n=W(o))}}return S({width:f,height:d,x:c,y:u})}function el(e,t){let n=X(e).scrollLeft;return t?t.left+n:ei(z(e)).left+n}function ea(e,t,n){void 0===n&&(n=!1);let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-(n?0:el(e,r)),y:r.top+t.scrollTop}}function es(e,t,n){let r;if("viewport"===t)r=function(e,t){let n=W(e),r=z(e),o=n.visualViewport,i=r.clientWidth,l=r.clientHeight,a=0,s=0;if(o){i=o.width,l=o.height;let e=$();(!e||e&&"fixed"===t)&&(a=o.offsetLeft,s=o.offsetTop)}return{width:i,height:l,x:a,y:s}}(e,n);else if("document"===t)r=function(e){let t=z(e),n=X(e),r=e.ownerDocument.body,o=h(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=h(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),l=-n.scrollLeft+el(e),a=-n.scrollTop;return"rtl"===G(r).direction&&(l+=h(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:l,y:a}}(z(e));else if(_(t))r=function(e,t){let n=ei(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=B(e)?en(e):v(1),l=e.clientWidth*i.x,a=e.clientHeight*i.y;return{width:l,height:a,x:o*i.x,y:r*i.y}}(t,n);else{let n=eo(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return S(r)}function ec(e){return"static"===G(e).position}function eu(e,t){if(!B(e)||"fixed"===G(e).position)return null;if(t)return t(e);let n=e.offsetParent;return z(e)===n&&(n=n.ownerDocument.body),n}function ef(e,t){let n=W(e);if(Q(e))return n;if(!B(e)){let t=Z(e);for(;t&&!Y(t);){if(_(t)&&!ec(t))return t;t=Z(t)}return n}let r=eu(e,t);for(;r&&["table","td","th"].includes(H(r))&&ec(r);)r=eu(r,t);return r&&Y(r)&&ec(r)&&!q(r)?n:r||function(e){let t=Z(e);for(;B(t)&&!Y(t);){if(q(t))return t;if(Q(t))break;t=Z(t)}return null}(e)||n}let ed=async function(e){let t=this.getOffsetParent||ef,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=B(t),o=z(t),i="fixed"===n,l=ei(e,!0,i,t),a={scrollLeft:0,scrollTop:0},s=v(0);if(r||!r&&!i)if(("body"!==H(t)||K(o))&&(a=X(t)),r){let e=ei(t,!0,i,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&(s.x=el(o));let c=!o||r||i?v(0):ea(o,a);return{x:l.left+a.scrollLeft-s.x-c.x,y:l.top+a.scrollTop-s.y-c.y,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},ep={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,i="fixed"===o,l=z(r),a=!!t&&Q(t.floating);if(r===l||a&&i)return n;let s={scrollLeft:0,scrollTop:0},c=v(1),u=v(0),f=B(r);if((f||!f&&!i)&&(("body"!==H(r)||K(l))&&(s=X(r)),B(r))){let e=ei(r);c=en(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let d=!l||f||i?v(0):ea(l,s,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+u.x+d.x,y:n.y*c.y-s.scrollTop*c.y+u.y+d.y}},getDocumentElement:z,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,i=[..."clippingAncestors"===n?Q(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=J(e,[],!1).filter(e=>_(e)&&"body"!==H(e)),o=null,i="fixed"===G(e).position,l=i?Z(e):e;for(;_(l)&&!Y(l);){let t=G(l),n=q(l);n||"fixed"!==t.position||(o=null),(i?!n&&!o:!n&&"static"===t.position&&!!o&&["absolute","fixed"].includes(o.position)||K(l)&&!n&&function e(t,n){let r=Z(t);return!(r===n||!_(r)||Y(r))&&("fixed"===G(r).position||e(r,n))}(e,l))?r=r.filter(e=>e!==l):o=t,l=Z(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],l=i[0],a=i.reduce((e,n)=>{let r=es(t,n,o);return e.top=h(r.top,e.top),e.right=p(r.right,e.right),e.bottom=p(r.bottom,e.bottom),e.left=h(r.left,e.left),e},es(t,l,o));return{width:a.right-a.left,height:a.bottom-a.top,x:a.left,y:a.top}},getOffsetParent:ef,getElementRects:ed,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=ee(e);return{width:t,height:n}},getScale:en,isElement:_,isRTL:function(e){return"rtl"===G(e).direction}};function eh(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let em=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:r,placement:o,rects:i,platform:l,elements:a,middlewareData:s}=t,{element:c,padding:u=0}=w(e,t)||{};if(null==c)return{};let f=T(u),d={x:n,y:r},m=C(R(o)),g=k(m),v=await l.getDimensions(c),y="y"===m,x=y?"clientHeight":"clientWidth",b=i.reference[g]+i.reference[m]-d[m]-i.floating[g],P=d[m]-i.reference[m],E=await (null==l.getOffsetParent?void 0:l.getOffsetParent(c)),S=E?E[x]:0;S&&await (null==l.isElement?void 0:l.isElement(E))||(S=a.floating[x]||i.floating[g]);let j=S/2-v[g]/2-1,L=p(f[y?"top":"left"],j),O=p(f[y?"bottom":"right"],j),N=S-v[g]-O,D=S/2-v[g]/2+(b/2-P/2),M=h(L,p(D,N)),F=!s.arrow&&null!=A(o)&&D!==M&&i.reference[g]/2-(D{let r=new Map,o={platform:ep,...n},i={...o.platform,_c:r};return L(e,t,{...o,platform:i})};var ev=n(7650),ey="undefined"!=typeof document?o.useLayoutEffect:o.useEffect;function ex(e,t){let n,r,o;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!ex(e[r],t[r]))return!1;return!0}if((n=(o=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if(("_owner"!==n||!e.$$typeof)&&!ex(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function ew(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function eb(e,t){let n=ew(e);return Math.round(t*n)/n}function eA(e){let t=o.useRef(e);return ey(()=>{t.current=e}),t}let eC=e=>({name:"arrow",options:e,fn(t){let{element:n,padding:r}="function"==typeof e?e(t):e;return n&&({}).hasOwnProperty.call(n,"current")?null!=n.current?em({element:n.current,padding:r}).fn(t):{}:n?em({element:n,padding:r}).fn(t):{}}}),ek=(e,t)=>({...function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;let{x:o,y:i,placement:l,middlewareData:a}=t,s=await M(t,e);return l===(null==(n=a.offset)?void 0:n.placement)&&null!=(r=a.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:l}}}}}(e),options:[e,t]}),eR=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:l=!1,limiter:a={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=w(e,t),c={x:n,y:r},u=await O(t,s),f=R(b(o)),d=C(f),m=c[d],g=c[f];if(i){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",n=m+u[e],r=m-u[t];m=h(n,p(m,r))}if(l){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",n=g+u[e],r=g-u[t];g=h(n,p(g,r))}let v=a.fn({...t,[d]:m,[f]:g});return{...v,data:{x:v.x-n,y:v.y-r,enabled:{[d]:i,[f]:l}}}}}}(e),options:[e,t]}),eP=(e,t)=>({...function(e){return void 0===e&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:o,rects:i,middlewareData:l}=t,{offset:a=0,mainAxis:s=!0,crossAxis:c=!0}=w(e,t),u={x:n,y:r},f=R(o),d=C(f),p=u[d],h=u[f],m=w(a,t),g="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(s){let e="y"===d?"height":"width",t=i.reference[d]-i.floating[e]+g.mainAxis,n=i.reference[d]+i.reference[e]-g.mainAxis;pn&&(p=n)}if(c){var v,y;let e="y"===d?"width":"height",t=["top","left"].includes(b(o)),n=i.reference[f]-i.floating[e]+(t&&(null==(v=l.offset)?void 0:v[f])||0)+(t?0:g.crossAxis),r=i.reference[f]+i.reference[e]+(t?0:(null==(y=l.offset)?void 0:y[f])||0)-(t?g.crossAxis:0);hr&&(h=r)}return{[d]:p,[f]:h}}}}(e),options:[e,t]}),eE=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r,o,i,l;let{placement:a,middlewareData:s,rects:c,initialPlacement:u,platform:f,elements:d}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:v="none",flipAlignment:y=!0,...x}=w(e,t);if(null!=(n=s.arrow)&&n.alignmentOffset)return{};let T=b(a),S=R(u),j=b(u)===u,L=await (null==f.isRTL?void 0:f.isRTL(d.floating)),N=m||(j||!y?[E(u)]:function(e){let t=E(e);return[P(e),t,P(t)]}(u)),D="none"!==v;!m&&D&&N.push(...function(e,t,n,r){let o=A(e),i=function(e,t,n){let r=["left","right"],o=["right","left"];switch(e){case"top":case"bottom":if(n)return t?o:r;return t?r:o;case"left":case"right":return t?["top","bottom"]:["bottom","top"];default:return[]}}(b(e),"start"===n,r);return o&&(i=i.map(e=>e+"-"+o),t&&(i=i.concat(i.map(P)))),i}(u,y,v,L));let M=[u,...N],F=await O(t,x),H=[],W=(null==(r=s.flip)?void 0:r.overflows)||[];if(p&&H.push(F[T]),h){let e=function(e,t,n){void 0===n&&(n=!1);let r=A(e),o=C(R(e)),i=k(o),l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=E(l)),[l,E(l)]}(a,c,L);H.push(F[e[0]],F[e[1]])}if(W=[...W,{placement:a,overflows:H}],!H.every(e=>e<=0)){let e=((null==(o=s.flip)?void 0:o.index)||0)+1,t=M[e];if(t)return{data:{index:e,overflows:W},reset:{placement:t}};let n=null==(i=W.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!n)switch(g){case"bestFit":{let e=null==(l=W.filter(e=>{if(D){let t=R(e.placement);return t===S||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:l[0];e&&(n=e);break}case"initialPlacement":n=u}if(a!==n)return{reset:{placement:n}}}return{}}}}(e),options:[e,t]}),eT=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;let o,i,{placement:l,rects:a,platform:s,elements:c}=t,{apply:u=()=>{},...f}=w(e,t),d=await O(t,f),m=b(l),g=A(l),v="y"===R(l),{width:y,height:x}=a.floating;"top"===m||"bottom"===m?(o=m,i=g===(await (null==s.isRTL?void 0:s.isRTL(c.floating))?"start":"end")?"left":"right"):(i=m,o="end"===g?"top":"bottom");let C=x-d.top-d.bottom,k=y-d.left-d.right,P=p(x-d[o],C),E=p(y-d[i],k),T=!t.middlewareData.shift,S=P,j=E;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(j=k),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(S=C),T&&!g){let e=h(d.left,0),t=h(d.right,0),n=h(d.top,0),r=h(d.bottom,0);v?j=y-2*(0!==e||0!==t?e+t:h(d.left,d.right)):S=x-2*(0!==n||0!==r?n+r:h(d.top,d.bottom))}await u({...t,availableWidth:j,availableHeight:S});let L=await s.getDimensions(c.floating);return y!==L.width||x!==L.height?{reset:{rects:!0}}:{}}}}(e),options:[e,t]}),eS=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){let{rects:n}=t,{strategy:r="referenceHidden",...o}=w(e,t);switch(r){case"referenceHidden":{let e=N(await O(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:D(e)}}}case"escaped":{let e=N(await O(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:D(e)}}}default:return{}}}}}(e),options:[e,t]}),ej=(e,t)=>({...eC(e),options:[e,t]});var eL=n(3655),eO=o.forwardRef((e,t)=>{let{children:n,width:o=10,height:i=5,...l}=e;return(0,r.jsx)(eL.sG.svg,{...l,ref:t,width:o,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,r.jsx)("polygon",{points:"0,0 30,0 15,10"})})});eO.displayName="Arrow";var eN=n(9033),eD=n(2712),eM="Popper",[eF,eH]=(0,a.A)(eM),[eW,ez]=eF(eM),eI=e=>{let{__scopePopper:t,children:n}=e,[i,l]=o.useState(null);return(0,r.jsx)(eW,{scope:t,anchor:i,onAnchorChange:l,children:n})};eI.displayName=eM;var e_="PopperAnchor",eB=o.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:i,...a}=e,s=ez(e_,n),c=o.useRef(null),u=(0,l.s)(t,c);return o.useEffect(()=>{s.onAnchorChange((null==i?void 0:i.current)||c.current)}),i?null:(0,r.jsx)(eL.sG.div,{...a,ref:u})});eB.displayName=e_;var eV="PopperContent",[eK,eQ]=eF(eV),eq=o.forwardRef((e,t)=>{var n,i,a,s,c,u,f,d;let{__scopePopper:m,side:v="bottom",sideOffset:y=0,align:x="center",alignOffset:w=0,arrowPadding:b=0,avoidCollisions:A=!0,collisionBoundary:C=[],collisionPadding:k=0,sticky:R="partial",hideWhenDetached:P=!1,updatePositionStrategy:E="optimized",onPlaced:T,...S}=e,j=ez(eV,m),[L,O]=o.useState(null),N=(0,l.s)(t,e=>O(e)),[D,M]=o.useState(null),F=function(e){let[t,n]=o.useState(void 0);return(0,eD.N)(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,o;if(!Array.isArray(t)||!t.length)return;let i=t[0];if("borderBoxSize"in i){let e=i.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,o=t.blockSize}else r=e.offsetWidth,o=e.offsetHeight;n({width:r,height:o})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)},[e]),t}(D),H=null!=(f=null==F?void 0:F.width)?f:0,W=null!=(d=null==F?void 0:F.height)?d:0,I="number"==typeof k?k:{top:0,right:0,bottom:0,left:0,...k},_=Array.isArray(C)?C:[C],B=_.length>0,V={padding:I,boundary:_.filter(eX),altBoundary:B},{refs:K,floatingStyles:Q,placement:q,isPositioned:$,middlewareData:Y}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:i,elements:{reference:l,floating:a}={},transform:s=!0,whileElementsMounted:c,open:u}=e,[f,d]=o.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=o.useState(r);ex(p,r)||h(r);let[m,g]=o.useState(null),[v,y]=o.useState(null),x=o.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),w=o.useCallback(e=>{e!==k.current&&(k.current=e,y(e))},[]),b=l||m,A=a||v,C=o.useRef(null),k=o.useRef(null),R=o.useRef(f),P=null!=c,E=eA(c),T=eA(i),S=eA(u),j=o.useCallback(()=>{if(!C.current||!k.current)return;let e={placement:t,strategy:n,middleware:p};T.current&&(e.platform=T.current),eg(C.current,k.current,e).then(e=>{let t={...e,isPositioned:!1!==S.current};L.current&&!ex(R.current,t)&&(R.current=t,ev.flushSync(()=>{d(t)}))})},[p,t,n,T,S]);ey(()=>{!1===u&&R.current.isPositioned&&(R.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[u]);let L=o.useRef(!1);ey(()=>(L.current=!0,()=>{L.current=!1}),[]),ey(()=>{if(b&&(C.current=b),A&&(k.current=A),b&&A){if(E.current)return E.current(b,A,j);j()}},[b,A,j,E,P]);let O=o.useMemo(()=>({reference:C,floating:k,setReference:x,setFloating:w}),[x,w]),N=o.useMemo(()=>({reference:b,floating:A}),[b,A]),D=o.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=eb(N.floating,f.x),r=eb(N.floating,f.y);return s?{...e,transform:"translate("+t+"px, "+r+"px)",...ew(N.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}},[n,s,N.floating,f.x,f.y]);return o.useMemo(()=>({...f,update:j,refs:O,elements:N,floatingStyles:D}),[f,j,O,N,D])}({strategy:"fixed",placement:v+("center"!==x?"-"+x:""),whileElementsMounted:function(){for(var e=arguments.length,t=Array(e),n=0;n{i&&e.addEventListener("scroll",n,{passive:!0}),l&&e.addEventListener("resize",n)});let d=u&&s?function(e,t){let n,r=null,o=z(e);function i(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function l(a,s){void 0===a&&(a=!1),void 0===s&&(s=1),i();let c=e.getBoundingClientRect(),{left:u,top:f,width:d,height:m}=c;if(a||t(),!d||!m)return;let v=g(f),y=g(o.clientWidth-(u+d)),x={rootMargin:-v+"px "+-y+"px "+-g(o.clientHeight-(f+m))+"px "+-g(u)+"px",threshold:h(0,p(1,s))||1},w=!0;function b(t){let r=t[0].intersectionRatio;if(r!==s){if(!w)return l();r?l(!1,r):n=setTimeout(()=>{l(!1,1e-7)},1e3)}1!==r||eh(c,e.getBoundingClientRect())||l(),w=!1}try{r=new IntersectionObserver(b,{...x,root:o.ownerDocument})}catch(e){r=new IntersectionObserver(b,x)}r.observe(e)}(!0),i}(u,n):null,m=-1,v=null;a&&(v=new ResizeObserver(e=>{let[r]=e;r&&r.target===u&&v&&(v.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var e;null==(e=v)||e.observe(t)})),n()}),u&&!c&&v.observe(u),v.observe(t));let y=c?ei(e):null;return c&&function t(){let r=ei(e);y&&!eh(y,r)&&n(),y=r,o=requestAnimationFrame(t)}(),n(),()=>{var e;f.forEach(e=>{i&&e.removeEventListener("scroll",n),l&&e.removeEventListener("resize",n)}),null==d||d(),null==(e=v)||e.disconnect(),v=null,c&&cancelAnimationFrame(o)}}(...t,{animationFrame:"always"===E})},elements:{reference:j.anchor},middleware:[ek({mainAxis:y+W,alignmentAxis:w}),A&&eR({mainAxis:!0,crossAxis:!1,limiter:"partial"===R?eP():void 0,...V}),A&&eE({...V}),eT({...V,apply:e=>{let{elements:t,rects:n,availableWidth:r,availableHeight:o}=e,{width:i,height:l}=n.reference,a=t.floating.style;a.setProperty("--radix-popper-available-width","".concat(r,"px")),a.setProperty("--radix-popper-available-height","".concat(o,"px")),a.setProperty("--radix-popper-anchor-width","".concat(i,"px")),a.setProperty("--radix-popper-anchor-height","".concat(l,"px"))}}),D&&ej({element:D,padding:b}),eZ({arrowWidth:H,arrowHeight:W}),P&&eS({strategy:"referenceHidden",...V})]}),[G,X]=eJ(q),Z=(0,eN.c)(T);(0,eD.N)(()=>{$&&(null==Z||Z())},[$,Z]);let U=null==(n=Y.arrow)?void 0:n.x,ee=null==(i=Y.arrow)?void 0:i.y,en=(null==(a=Y.arrow)?void 0:a.centerOffset)!==0,[er,eo]=o.useState();return(0,eD.N)(()=>{L&&eo(window.getComputedStyle(L).zIndex)},[L]),(0,r.jsx)("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...Q,transform:$?Q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:er,"--radix-popper-transform-origin":[null==(s=Y.transformOrigin)?void 0:s.x,null==(c=Y.transformOrigin)?void 0:c.y].join(" "),...(null==(u=Y.hide)?void 0:u.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,r.jsx)(eK,{scope:m,placedSide:G,onArrowChange:M,arrowX:U,arrowY:ee,shouldHideArrow:en,children:(0,r.jsx)(eL.sG.div,{"data-side":G,"data-align":X,...S,ref:N,style:{...S.style,animation:$?void 0:"none"}})})})});eq.displayName=eV;var e$="PopperArrow",eY={top:"bottom",right:"left",bottom:"top",left:"right"},eG=o.forwardRef(function(e,t){let{__scopePopper:n,...o}=e,i=eQ(e$,n),l=eY[i.placedSide];return(0,r.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,r.jsx)(eO,{...o,ref:t,style:{...o.style,display:"block"}})})});function eX(e){return null!==e}eG.displayName=e$;var eZ=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,l;let{placement:a,rects:s,middlewareData:c}=t,u=(null==(n=c.arrow)?void 0:n.centerOffset)!==0,f=u?0:e.arrowWidth,d=u?0:e.arrowHeight,[p,h]=eJ(a),m={start:"0%",center:"50%",end:"100%"}[h],g=(null!=(i=null==(r=c.arrow)?void 0:r.x)?i:0)+f/2,v=(null!=(l=null==(o=c.arrow)?void 0:o.y)?l:0)+d/2,y="",x="";return"bottom"===p?(y=u?m:"".concat(g,"px"),x="".concat(-d,"px")):"top"===p?(y=u?m:"".concat(g,"px"),x="".concat(s.floating.height+d,"px")):"right"===p?(y="".concat(-d,"px"),x=u?m:"".concat(v,"px")):"left"===p&&(y="".concat(s.floating.width+d,"px"),x=u?m:"".concat(v,"px")),{data:{x:y,y:x}}}});function eJ(e){let[t,n="center"]=e.split("-");return[t,n]}var eU=n(4378),e0=n(8905),e1=n(9708),e2=n(5845),e5=n(8168),e9=n(3795),e8="Popover",[e4,e6]=(0,a.A)(e8,[eH]),e3=eH(),[e7,te]=e4(e8),tt=e=>{let{__scopePopover:t,children:n,open:i,defaultOpen:l,onOpenChange:a,modal:s=!1}=e,c=e3(t),u=o.useRef(null),[d,p]=o.useState(!1),[h,m]=(0,e2.i)({prop:i,defaultProp:null!=l&&l,onChange:a,caller:e8});return(0,r.jsx)(eI,{...c,children:(0,r.jsx)(e7,{scope:t,contentId:(0,f.B)(),triggerRef:u,open:h,onOpenChange:m,onOpenToggle:o.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:d,onCustomAnchorAdd:o.useCallback(()=>p(!0),[]),onCustomAnchorRemove:o.useCallback(()=>p(!1),[]),modal:s,children:n})})};tt.displayName=e8;var tn="PopoverAnchor";o.forwardRef((e,t)=>{let{__scopePopover:n,...i}=e,l=te(tn,n),a=e3(n),{onCustomAnchorAdd:s,onCustomAnchorRemove:c}=l;return o.useEffect(()=>(s(),()=>c()),[s,c]),(0,r.jsx)(eB,{...a,...i,ref:t})}).displayName=tn;var tr="PopoverTrigger",to=o.forwardRef((e,t)=>{let{__scopePopover:n,...o}=e,a=te(tr,n),s=e3(n),c=(0,l.s)(t,a.triggerRef),u=(0,r.jsx)(eL.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":tg(a.open),...o,ref:c,onClick:(0,i.m)(e.onClick,a.onOpenToggle)});return a.hasCustomAnchor?u:(0,r.jsx)(eB,{asChild:!0,...s,children:u})});to.displayName=tr;var ti="PopoverPortal",[tl,ta]=e4(ti,{forceMount:void 0}),ts=e=>{let{__scopePopover:t,forceMount:n,children:o,container:i}=e,l=te(ti,t);return(0,r.jsx)(tl,{scope:t,forceMount:n,children:(0,r.jsx)(e0.C,{present:n||l.open,children:(0,r.jsx)(eU.Z,{asChild:!0,container:i,children:o})})})};ts.displayName=ti;var tc="PopoverContent",tu=o.forwardRef((e,t)=>{let n=ta(tc,e.__scopePopover),{forceMount:o=n.forceMount,...i}=e,l=te(tc,e.__scopePopover);return(0,r.jsx)(e0.C,{present:o||l.open,children:l.modal?(0,r.jsx)(td,{...i,ref:t}):(0,r.jsx)(tp,{...i,ref:t})})});tu.displayName=tc;var tf=(0,e1.TL)("PopoverContent.RemoveScroll"),td=o.forwardRef((e,t)=>{let n=te(tc,e.__scopePopover),a=o.useRef(null),s=(0,l.s)(t,a),c=o.useRef(!1);return o.useEffect(()=>{let e=a.current;if(e)return(0,e5.Eq)(e)},[]),(0,r.jsx)(e9.A,{as:tf,allowPinchZoom:!0,children:(0,r.jsx)(th,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,i.m)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),c.current||null==(t=n.triggerRef.current)||t.focus()}),onPointerDownOutside:(0,i.m)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;c.current=2===t.button||n},{checkForDefaultPrevented:!1}),onFocusOutside:(0,i.m)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),tp=o.forwardRef((e,t)=>{let n=te(tc,e.__scopePopover),i=o.useRef(!1),l=o.useRef(!1);return(0,r.jsx)(th,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var r,o;null==(r=e.onCloseAutoFocus)||r.call(e,t),t.defaultPrevented||(i.current||null==(o=n.triggerRef.current)||o.focus(),t.preventDefault()),i.current=!1,l.current=!1},onInteractOutside:t=>{var r,o;null==(r=e.onInteractOutside)||r.call(e,t),t.defaultPrevented||(i.current=!0,"pointerdown"===t.detail.originalEvent.type&&(l.current=!0));let a=t.target;(null==(o=n.triggerRef.current)?void 0:o.contains(a))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&l.current&&t.preventDefault()}})}),th=o.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:o,onOpenAutoFocus:i,onCloseAutoFocus:l,disableOutsidePointerEvents:a,onEscapeKeyDown:f,onPointerDownOutside:d,onFocusOutside:p,onInteractOutside:h,...m}=e,g=te(tc,n),v=e3(n);return(0,c.Oh)(),(0,r.jsx)(u.n,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:i,onUnmountAutoFocus:l,children:(0,r.jsx)(s.qW,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:f,onPointerDownOutside:d,onFocusOutside:p,onDismiss:()=>g.onOpenChange(!1),children:(0,r.jsx)(eq,{"data-state":tg(g.open),role:"dialog",id:g.contentId,...v,...m,ref:t,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),tm="PopoverClose";function tg(e){return e?"open":"closed"}o.forwardRef((e,t)=>{let{__scopePopover:n,...o}=e,l=te(tm,n);return(0,r.jsx)(eL.sG.button,{type:"button",...o,ref:t,onClick:(0,i.m)(e.onClick,()=>l.onOpenChange(!1))})}).displayName=tm,o.forwardRef((e,t)=>{let{__scopePopover:n,...o}=e,i=e3(n);return(0,r.jsx)(eG,{...i,...o,ref:t})}).displayName="PopoverArrow";var tv=n(9688);let ty=tt,tx=to,tw=o.forwardRef((e,t)=>{let{className:n,align:o="center",sideOffset:i=4,...l}=e;return(0,r.jsx)(ts,{children:(0,r.jsx)(tu,{ref:t,align:o,sideOffset:i,side:"bottom",className:(0,tv.QP)("z-50 min-w-[220px] max-w-[98vw] rounded-lg border bg-fd-popover p-2 text-sm text-fd-popover-foreground shadow-lg focus-visible:outline-none data-[state=closed]:animate-fd-popover-out data-[state=open]:animate-fd-popover-in",n),...l})})});tw.displayName=tu.displayName},910:(e,t,n)=>{n.d(t,{ThemeToggle:()=>h});var r=n(5155),o=n(2085),i=n(3536);let l=(0,i.A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),a=(0,i.A)("moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]),s=(0,i.A)("airplay",[["path",{d:"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1",key:"ns4c3b"}],["path",{d:"m12 15 5 6H7Z",key:"14qnn2"}]]);var c=n(1362),u=n(2115),f=n(9688);let d=(0,o.F)("size-6.5 rounded-full p-1.5 text-fd-muted-foreground",{variants:{active:{true:"bg-fd-accent text-fd-accent-foreground",false:"text-fd-muted-foreground"}}}),p=[["light",l],["dark",a],["system",s]];function h(e){let{className:t,mode:n="light-dark",...o}=e,{setTheme:i,theme:l,resolvedTheme:a}=(0,c.D)(),[s,h]=(0,u.useState)(!1);(0,u.useLayoutEffect)(()=>{h(!0)},[]);let m=(0,f.QP)("inline-flex items-center rounded-full border p-1",t);if("light-dark"===n){let e=s?a:null;return(0,r.jsx)("button",{className:m,"aria-label":"Toggle Theme",onClick:()=>i("light"===e?"dark":"light"),"data-theme-toggle":"",...o,children:p.map(t=>{let[n,o]=t;if("system"!==n)return(0,r.jsx)(o,{fill:"currentColor",className:(0,f.QP)(d({active:e===n}))},n)})})}let g=s?l:null;return(0,r.jsx)("div",{className:m,"data-theme-toggle":"",...o,children:p.map(e=>{let[t,n]=e;return(0,r.jsx)("button",{"aria-label":t,className:(0,f.QP)(d({active:g===t})),onClick:()=>i(t),children:(0,r.jsx)(n,{className:"size-full",fill:"currentColor"})},t)})})}},1053:(e,t,n)=>{n.d(t,{LanguageToggle:()=>s,LanguageToggleText:()=>c});var r=n(5155),o=n(9697),i=n(408),l=n(9688),a=n(7936);function s(e){let t=(0,o.s9)();if(!t.locales)throw Error("Missing ``");return(0,r.jsxs)(i.AM,{children:[(0,r.jsx)(i.Wv,{"aria-label":t.text.chooseLanguage,...e,className:(0,l.QP)((0,a.r)({color:"ghost",className:"gap-1.5 p-1.5"}),e.className),children:e.children}),(0,r.jsxs)(i.hl,{className:"flex flex-col overflow-hidden p-0",children:[(0,r.jsx)("p",{className:"mb-1 p-2 text-xs font-medium text-fd-muted-foreground",children:t.text.chooseLanguage}),t.locales.map(e=>(0,r.jsx)("button",{type:"button",className:(0,l.QP)("p-2 text-start text-sm",e.locale===t.locale?"bg-fd-primary/10 font-medium text-fd-primary":"hover:bg-fd-accent hover:text-fd-accent-foreground"),onClick:()=>{var n;null==(n=t.onChange)||n.call(t,e.locale)},children:e.name},e.locale))]})]})}function c(e){var t,n;let i=(0,o.s9)(),l=null==(n=i.locales)||null==(t=n.find(e=>e.locale===i.locale))?void 0:t.name;return(0,r.jsx)("span",{...e,children:l})}},1362:(e,t,n)=>{n.d(t,{D:()=>c,N:()=>u});var r=n(2115),o=(e,t,n,r,o,i,l,a)=>{let s=document.documentElement,c=["light","dark"];function u(t){var n;(Array.isArray(e)?e:[e]).forEach(e=>{let n="class"===e,r=n&&i?o.map(e=>i[e]||e):o;n?(s.classList.remove(...r),s.classList.add(i&&i[t]?i[t]:t)):s.setAttribute(e,t)}),n=t,a&&c.includes(n)&&(s.style.colorScheme=n)}if(r)u(r);else try{let e=localStorage.getItem(t)||n,r=l&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(r)}catch(e){}},i=["light","dark"],l="(prefers-color-scheme: dark)",a=r.createContext(void 0),s={setTheme:e=>{},themes:[]},c=()=>{var e;return null!=(e=r.useContext(a))?e:s},u=e=>r.useContext(a)?r.createElement(r.Fragment,null,e.children):r.createElement(d,{...e}),f=["light","dark"],d=e=>{let{forcedTheme:t,disableTransitionOnChange:n=!1,enableSystem:o=!0,enableColorScheme:s=!0,storageKey:c="theme",themes:u=f,defaultTheme:d=o?"system":"light",attribute:v="data-theme",value:y,children:x,nonce:w,scriptProps:b}=e,[A,C]=r.useState(()=>h(c,d)),[k,R]=r.useState(()=>"system"===A?g():A),P=y?Object.values(y):u,E=r.useCallback(e=>{let t=e;if(!t)return;"system"===e&&o&&(t=g());let r=y?y[t]:t,l=n?m(w):null,a=document.documentElement,c=e=>{"class"===e?(a.classList.remove(...P),r&&a.classList.add(r)):e.startsWith("data-")&&(r?a.setAttribute(e,r):a.removeAttribute(e))};if(Array.isArray(v)?v.forEach(c):c(v),s){let e=i.includes(d)?d:null,n=i.includes(t)?t:e;a.style.colorScheme=n}null==l||l()},[w]),T=r.useCallback(e=>{let t="function"==typeof e?e(A):e;C(t);try{localStorage.setItem(c,t)}catch(e){}},[A]),S=r.useCallback(e=>{R(g(e)),"system"===A&&o&&!t&&E("system")},[A,t]);r.useEffect(()=>{let e=window.matchMedia(l);return e.addListener(S),S(e),()=>e.removeListener(S)},[S]),r.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?C(e.newValue):T(d))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[T]),r.useEffect(()=>{E(null!=t?t:A)},[t,A]);let j=r.useMemo(()=>({theme:A,setTheme:T,forcedTheme:t,resolvedTheme:"system"===A?k:A,themes:o?[...u,"system"]:u,systemTheme:o?k:void 0}),[A,T,t,k,o,u]);return r.createElement(a.Provider,{value:j},r.createElement(p,{forcedTheme:t,storageKey:c,attribute:v,enableSystem:o,enableColorScheme:s,defaultTheme:d,value:y,themes:u,nonce:w,scriptProps:b}),x)},p=r.memo(e=>{let{forcedTheme:t,storageKey:n,attribute:i,enableSystem:l,enableColorScheme:a,defaultTheme:s,value:c,themes:u,nonce:f,scriptProps:d}=e,p=JSON.stringify([i,n,s,t,u,c,l,a]).slice(1,-1);return r.createElement("script",{...d,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(o.toString(),")(").concat(p,")")}})}),h=(e,t)=>{let n;try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t},m=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},g=e=>(e||(e=window.matchMedia(l)),e.matches?"dark":"light")},4657:(e,t,n)=>{n.d(t,{BaseLinkItem:()=>s});var r=n(5155),o=n(9949),i=n(344),l=n(2115),a=n(5455);let s=(0,l.forwardRef)((e,t)=>{var n;let{item:l,...s}=e,c=(0,i.a8)(),u=null!=(n=l.active)?n:"url",f="none"!==u&&(0,a.$)(l.url,c,"nested-url"===u);return(0,r.jsx)(o.default,{ref:t,href:l.url,external:l.external,...s,"data-active":f,children:s.children})});s.displayName="BaseLinkItem"},5403:(e,t,n)=>{n.d(t,{LargeSearchToggle:()=>u,SearchToggle:()=>c});var r=n(5155),o=n(7543),i=n(8169),l=n(9697),a=n(9688),s=n(7936);function c(e){let{hideIfDisabled:t,size:n="icon",color:l="ghost",...c}=e,{setOpenSearch:u,enabled:f}=(0,i.$A)();return t&&!f?null:(0,r.jsx)("button",{type:"button",className:(0,a.QP)((0,s.r)({size:n,color:l}),c.className),"data-search":"","aria-label":"Open Search",onClick:()=>{u(!0)},children:(0,r.jsx)(o.A,{className:"p-px"})})}function u(e){let{hideIfDisabled:t,...n}=e,{enabled:s,hotKey:c,setOpenSearch:u}=(0,i.$A)(),{text:f}=(0,l.s9)();return t&&!s?null:(0,r.jsxs)("button",{type:"button","data-search-full":"",...n,className:(0,a.QP)("inline-flex items-center gap-2 rounded-full border bg-fd-secondary/50 p-1.5 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground",n.className),onClick:()=>{u(!0)},children:[(0,r.jsx)(o.A,{className:"ms-1 size-4"}),f.search,(0,r.jsx)("div",{className:"ms-auto inline-flex gap-0.5",children:c.map((e,t)=>(0,r.jsx)("kbd",{className:"rounded-md border bg-fd-background px-1.5",children:e.display},t))})]})}},8169:(e,t,n)=>{n.d(t,{$A:()=>l,YL:()=>s});var r=n(5155),o=n(2115);let i=(0,n(344).q6)("SearchContext",{enabled:!1,hotKey:[],setOpenSearch:()=>void 0});function l(){return i.use()}function a(){let[e,t]=(0,o.useState)("⌘");return(0,o.useEffect)(()=>{window.navigator.userAgent.includes("Windows")&&t("Ctrl")},[]),e}function s(e){let{SearchDialog:t,children:n,preload:l=!0,options:s,hotKey:c=[{key:e=>e.metaKey||e.ctrlKey,display:(0,r.jsx)(a,{})},{key:"k",display:"K"}],links:u}=e,[f,d]=(0,o.useState)(!l&&void 0);return(0,o.useEffect)(()=>{let e=e=>{c.every(t=>"string"==typeof t.key?e.key===t.key:t.key(e))&&(d(!0),e.preventDefault())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[c]),(0,r.jsxs)(i.Provider,{value:(0,o.useMemo)(()=>({enabled:!0,hotKey:c,setOpenSearch:d}),[c]),children:[void 0!==f&&(0,r.jsx)(t,{open:f,onOpenChange:d,links:u,...s}),n]})}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/886.9b81414a450ef20f.js b/docs/_next/static/chunks/886.9b81414a450ef20f.js deleted file mode 100644 index faba843f..00000000 --- a/docs/_next/static/chunks/886.9b81414a450ef20f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[886],{3522:(e,t,r)=>{r.d(t,{B:()=>function e(t,r=!1){for(let i of Object.keys(t))void 0===t[i]&&delete t[i],r&&"object"==typeof t[i]&&null!==t[i]?e(t[i],r):r&&Array.isArray(t[i])&&t[i].forEach(t=>e(t,r));return t}})},8886:(e,t,r)=>{r.d(t,{searchDocs:()=>o});var i=r(3522);async function o(e,t,r){let o=[],{index:n="default",client:l,params:u={}}=r;if("crawler"===n){let r=await l.search({...u,term:e,where:{category:t?{eq:t.slice(0,1).toUpperCase()+t.slice(1)}:void 0,...u.where},limit:10});if(!r)return o;if("crawler"===n){for(let e of r.hits){let t=e.document;o.push({id:e.id,type:"page",content:t.title,url:t.path},{id:"page"+e.id,type:"text",content:t.content,url:t.path})}return o}}let a={...u,term:e,where:(0,i.B)({tag:t,...u.where}),groupBy:{properties:["page_id"],maxResult:7,...u.groupBy}},c=await l.search(a);if(!c||!c.groups)return o;for(let e of c.groups){let t=!1;for(let r of e.result){let e=r.document;t||(o.push({id:e.page_id,type:"page",content:e.title,url:e.url}),t=!0),o.push({id:e.id,content:e.content,type:e.content===e.section?"heading":"text",url:e.section_id?`${e.url}#${e.section_id}`:e.url})}}return o}r(9189)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/920-aed94374b29ba4e2.js b/docs/_next/static/chunks/920-aed94374b29ba4e2.js deleted file mode 100644 index de668359..00000000 --- a/docs/_next/static/chunks/920-aed94374b29ba4e2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[920],{2293:(e,t,n)=>{n.d(t,{Oh:()=>o});var r=n(2115),u=0;function o(){r.useEffect(()=>{var e,t;let n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!=(e=n[0])?e:a()),document.body.insertAdjacentElement("beforeend",null!=(t=n[1])?t:a()),u++,()=>{1===u&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),u--}},[])}function a(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}},4378:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(2115),u=n(7650),o=n(3655),a=n(2712),i=n(5155),s=r.forwardRef((e,t)=>{var n,s;let{container:l,...c}=e,[d,f]=r.useState(!1);(0,a.N)(()=>f(!0),[]);let v=l||d&&(null==(s=globalThis)||null==(n=s.document)?void 0:n.body);return v?u.createPortal((0,i.jsx)(o.sG.div,{...c,ref:t}),v):null});s.displayName="Portal"},7543:(e,t,n)=>{n.d(t,{A:()=>r});let r=(0,n(3536).A)("search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},7900:(e,t,n)=>{n.d(t,{n:()=>d});var r=n(2115),u=n(6101),o=n(3655),a=n(9033),i=n(5155),s="focusScope.autoFocusOnMount",l="focusScope.autoFocusOnUnmount",c={bubbles:!1,cancelable:!0},d=r.forwardRef((e,t)=>{let{loop:n=!1,trapped:d=!1,onMountAutoFocus:E,onUnmountAutoFocus:y,...h}=e,[b,w]=r.useState(null),g=(0,a.c)(E),L=(0,a.c)(y),A=r.useRef(null),C=(0,u.s)(t,e=>w(e)),k=r.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;r.useEffect(()=>{if(d){let e=function(e){if(k.paused||!b)return;let t=e.target;b.contains(t)?A.current=t:m(A.current,{select:!0})},t=function(e){if(k.paused||!b)return;let t=e.relatedTarget;null!==t&&(b.contains(t)||m(A.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let n=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&m(b)});return b&&n.observe(b,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}},[d,b,k.paused]),r.useEffect(()=>{if(b){p.add(k);let e=document.activeElement;if(!b.contains(e)){let t=new CustomEvent(s,c);b.addEventListener(s,g),b.dispatchEvent(t),t.defaultPrevented||(function(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=document.activeElement;for(let r of e)if(m(r,{select:t}),document.activeElement!==n)return}(f(b).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&m(b))}return()=>{b.removeEventListener(s,g),setTimeout(()=>{let t=new CustomEvent(l,c);b.addEventListener(l,L),b.dispatchEvent(t),t.defaultPrevented||m(null!=e?e:document.body,{select:!0}),b.removeEventListener(l,L),p.remove(k)},0)}}},[b,g,L,k]);let D=r.useCallback(e=>{if(!n&&!d||k.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=document.activeElement;if(t&&r){let t=e.currentTarget,[u,o]=function(e){let t=f(e);return[v(t,e),v(t.reverse(),e)]}(t);u&&o?e.shiftKey||r!==o?e.shiftKey&&r===u&&(e.preventDefault(),n&&m(o,{select:!0})):(e.preventDefault(),n&&m(u,{select:!0})):r===t&&e.preventDefault()}},[n,d,k.paused]);return(0,i.jsx)(o.sG.div,{tabIndex:-1,...h,ref:C,onKeyDown:D})});function f(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function v(e,t){for(let n of e)if(!function(e,t){let{upTo:n}=t;if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===n||e!==n);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(n,{upTo:t}))return n}function m(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e&&e.focus){var n;let r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&(n=e)instanceof HTMLInputElement&&"select"in n&&t&&e.select()}}d.displayName="FocusScope";var p=function(){let e=[];return{add(t){let n=e[0];t!==n&&(null==n||n.pause()),(e=E(e,t)).unshift(t)},remove(t){var n;null==(n=(e=E(e,t))[0])||n.resume()}}}();function E(e,t){let n=[...e],r=n.indexOf(t);return -1!==r&&n.splice(r,1),n}},8168:(e,t,n)=>{n.d(t,{Eq:()=>c});var r=function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},u=new WeakMap,o=new WeakMap,a={},i=0,s=function(e){return e&&(e.host||s(e.parentNode))},l=function(e,t,n,r){var l=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var n=s(e);return n&&t.contains(n)?n:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});a[n]||(a[n]=new WeakMap);var c=a[n],d=[],f=new Set,v=new Set(l),m=function(e){!e||f.has(e)||(f.add(e),m(e.parentNode))};l.forEach(m);var p=function(e){!e||v.has(e)||Array.prototype.forEach.call(e.children,function(e){if(f.has(e))p(e);else try{var t=e.getAttribute(r),a=null!==t&&"false"!==t,i=(u.get(e)||0)+1,s=(c.get(e)||0)+1;u.set(e,i),c.set(e,s),d.push(e),1===i&&a&&o.set(e,!0),1===s&&e.setAttribute(n,"true"),a||e.setAttribute(r,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return p(t),f.clear(),i++,function(){d.forEach(function(e){var t=u.get(e)-1,a=c.get(e)-1;u.set(e,t),c.set(e,a),t||(o.has(e)||e.removeAttribute(r),o.delete(e)),a||e.removeAttribute(n)}),--i||(u=new WeakMap,u=new WeakMap,o=new WeakMap,a={})}},c=function(e,t,n){void 0===n&&(n="data-aria-hidden");var u=Array.from(Array.isArray(e)?e:[e]),o=t||r(e);return o?(u.push.apply(u,Array.from(o.querySelectorAll("[aria-live]"))),l(u,o,n,"aria-hidden")):function(){return null}}},9178:(e,t,n)=>{n.d(t,{qW:()=>f});var r,u=n(2115),o=n(5185),a=n(3655),i=n(6101),s=n(9033),l=n(5155),c="dismissableLayer.update",d=u.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),f=u.forwardRef((e,t)=>{var n,f;let{disableOutsidePointerEvents:p=!1,onEscapeKeyDown:E,onPointerDownOutside:y,onFocusOutside:h,onInteractOutside:b,onDismiss:w,...g}=e,L=u.useContext(d),[A,C]=u.useState(null),k=null!=(f=null==A?void 0:A.ownerDocument)?f:null==(n=globalThis)?void 0:n.document,[,D]=u.useState({}),P=(0,i.s)(t,e=>C(e)),N=Array.from(L.layers),[S]=[...L.layersWithOutsidePointerEventsDisabled].slice(-1),T=N.indexOf(S),x=A?N.indexOf(A):-1,O=L.layersWithOutsidePointerEventsDisabled.size>0,F=x>=T,W=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(t=globalThis)?void 0:t.document,r=(0,s.c)(e),o=u.useRef(!1),a=u.useRef(()=>{});return u.useEffect(()=>{let e=e=>{if(e.target&&!o.current){let t=function(){m("dismissableLayer.pointerDownOutside",r,u,{discrete:!0})},u={originalEvent:e};"touch"===e.pointerType?(n.removeEventListener("click",a.current),a.current=t,n.addEventListener("click",a.current,{once:!0})):t()}else n.removeEventListener("click",a.current);o.current=!1},t=window.setTimeout(()=>{n.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(t),n.removeEventListener("pointerdown",e),n.removeEventListener("click",a.current)}},[n,r]),{onPointerDownCapture:()=>o.current=!0}}(e=>{let t=e.target,n=[...L.branches].some(e=>e.contains(t));F&&!n&&(null==y||y(e),null==b||b(e),e.defaultPrevented||null==w||w())},k),R=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(t=globalThis)?void 0:t.document,r=(0,s.c)(e),o=u.useRef(!1);return u.useEffect(()=>{let e=e=>{e.target&&!o.current&&m("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return n.addEventListener("focusin",e),()=>n.removeEventListener("focusin",e)},[n,r]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}(e=>{let t=e.target;![...L.branches].some(e=>e.contains(t))&&(null==h||h(e),null==b||b(e),e.defaultPrevented||null==w||w())},k);return!function(e,t=globalThis?.document){let n=(0,s.c)(e);u.useEffect(()=>{let e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[n,t])}(e=>{x===L.layers.size-1&&(null==E||E(e),!e.defaultPrevented&&w&&(e.preventDefault(),w()))},k),u.useEffect(()=>{if(A)return p&&(0===L.layersWithOutsidePointerEventsDisabled.size&&(r=k.body.style.pointerEvents,k.body.style.pointerEvents="none"),L.layersWithOutsidePointerEventsDisabled.add(A)),L.layers.add(A),v(),()=>{p&&1===L.layersWithOutsidePointerEventsDisabled.size&&(k.body.style.pointerEvents=r)}},[A,k,p,L]),u.useEffect(()=>()=>{A&&(L.layers.delete(A),L.layersWithOutsidePointerEventsDisabled.delete(A),v())},[A,L]),u.useEffect(()=>{let e=()=>D({});return document.addEventListener(c,e),()=>document.removeEventListener(c,e)},[]),(0,l.jsx)(a.sG.div,{...g,ref:P,style:{pointerEvents:O?F?"auto":"none":void 0,...e.style},onFocusCapture:(0,o.m)(e.onFocusCapture,R.onFocusCapture),onBlurCapture:(0,o.m)(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:(0,o.m)(e.onPointerDownCapture,W.onPointerDownCapture)})});function v(){let e=new CustomEvent(c);document.dispatchEvent(e)}function m(e,t,n,r){let{discrete:u}=r,o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),u?(0,a.hO)(o,i):o.dispatchEvent(i)}f.displayName="DismissableLayer",u.forwardRef((e,t)=>{let n=u.useContext(d),r=u.useRef(null),o=(0,i.s)(t,r);return u.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,l.jsx)(a.sG.div,{...e,ref:o})}).displayName="DismissableLayerBranch"}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/996.84f6c850bac17e1e.js b/docs/_next/static/chunks/996.84f6c850bac17e1e.js deleted file mode 100644 index f40409c4..00000000 --- a/docs/_next/static/chunks/996.84f6c850bac17e1e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[996],{1615:(e,t,a)=>{a.d(t,{fetchDocs:()=>s}),a(9189);var r=new Map;async function s(e,t,a,s){let c=new URLSearchParams;c.set("query",e),t&&c.set("locale",t),a&&c.set("tag",a);let n=`${s.api??"/api/search"}?${c}`,i=r.get(n);if(i)return i;let h=await fetch(n);if(!h.ok)throw Error(await h.text());let l=await h.json();return r.set(n,l),l}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/997-04a205149f54dcb1.js b/docs/_next/static/chunks/997-04a205149f54dcb1.js deleted file mode 100644 index 9eb1ae84..00000000 --- a/docs/_next/static/chunks/997-04a205149f54dcb1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[997],{244:(e,r,t)=>{function n(e,r,t){let{includePage:n=!0,includeSeparator:o=!1,includeRoot:l}=t,a=[];return r.forEach((e,t)=>{if("separator"===e.type&&o&&a.push({name:e.name}),"folder"===e.type){let n=r.at(t+1);if(n&&e.index===n)return;if(e.root){a=[];return}a.push({name:e.name,url:e.index?.url})}"page"===e.type&&n&&a.push({name:e.name,url:e.url})}),l&&a.unshift({name:e.name,url:"object"==typeof l?l.url:void 0}),a}t.d(r,{Pp:()=>n,oe:()=>function e(r,t){let n;for(let o of(t.endsWith("/")&&(t=t.slice(0,-1)),r)){if("separator"===o.type&&(n=o),"folder"===o.type){if(o.index?.url===t){let e=[];return n&&e.push(n),e.push(o,o.index),e}let r=e(o.children,t);if(r)return r.unshift(o),n&&r.unshift(n),r}if("page"===o.type&&o.url===t){let e=[];return n&&e.push(n),e.push(o),e}}return null}}),t(9189),t(2115)},263:(e,r,t)=>{t.d(r,{G:()=>c,c:()=>d});var n=t(5155),o=t(2115),l=t(344),a=t(5547),i=t(3259);let s=(0,l.q6)("SidebarContext");function d(){return s.use()}function c(e){let{children:r}=e,t=(0,o.useRef)(!0),[d,c]=(0,o.useState)(!1),[u,f]=(0,o.useState)(!1),p=(0,l.a8)();return(0,i.T)(p,()=>{t.current&&c(!1),t.current=!0}),(0,n.jsx)(s.Provider,{value:(0,o.useMemo)(()=>({open:d,setOpen:c,collapsed:u,setCollapsed:f,closeOnRedirect:t}),[d,u]),children:(0,n.jsx)(a.GB,{open:d,onOpenChange:c,children:r})})}},2292:(e,r,t)=>{t.d(r,{UC:()=>F,Y9:()=>X,bL:()=>Y,l9:()=>q,q7:()=>B});var n=t(2115),o=t(6081),l=t(7328),a=t(6101),i=t(5185),s=t(5845),d=t(3655),c=t(8106),u=t(1285),f=t(4315),p=t(5155),h="Accordion",v=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[w,m,b]=(0,l.N)(h),[g,x]=(0,o.A)(h,[b,c.z3]),y=(0,c.z3)(),C=n.forwardRef((e,r)=>{let{type:t,...n}=e;return(0,p.jsx)(w.Provider,{scope:e.__scopeAccordion,children:"multiple"===t?(0,p.jsx)(T,{...n,ref:r}):(0,p.jsx)(A,{...n,ref:r})})});C.displayName=h;var[S,R]=g(h),[j,E]=g(h,{collapsible:!1}),A=n.forwardRef((e,r)=>{let{value:t,defaultValue:o,onValueChange:l=()=>{},collapsible:a=!1,...i}=e,[d,c]=(0,s.i)({prop:t,defaultProp:null!=o?o:"",onChange:l,caller:h});return(0,p.jsx)(S,{scope:e.__scopeAccordion,value:n.useMemo(()=>d?[d]:[],[d]),onItemOpen:c,onItemClose:n.useCallback(()=>a&&c(""),[a,c]),children:(0,p.jsx)(j,{scope:e.__scopeAccordion,collapsible:a,children:(0,p.jsx)(L,{...i,ref:r})})})}),T=n.forwardRef((e,r)=>{let{value:t,defaultValue:o,onValueChange:l=()=>{},...a}=e,[i,d]=(0,s.i)({prop:t,defaultProp:null!=o?o:[],onChange:l,caller:h}),c=n.useCallback(e=>d(function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return[...r,e]}),[d]),u=n.useCallback(e=>d(function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return r.filter(r=>r!==e)}),[d]);return(0,p.jsx)(S,{scope:e.__scopeAccordion,value:i,onItemOpen:c,onItemClose:u,children:(0,p.jsx)(j,{scope:e.__scopeAccordion,collapsible:!0,children:(0,p.jsx)(L,{...a,ref:r})})})}),[N,P]=g(h),L=n.forwardRef((e,r)=>{let{__scopeAccordion:t,disabled:o,dir:l,orientation:s="vertical",...c}=e,u=n.useRef(null),h=(0,a.s)(u,r),b=m(t),g="ltr"===(0,f.jH)(l),x=(0,i.m)(e.onKeyDown,e=>{var r;if(!v.includes(e.key))return;let t=e.target,n=b().filter(e=>{var r;return!(null==(r=e.ref.current)?void 0:r.disabled)}),o=n.findIndex(e=>e.ref.current===t),l=n.length;if(-1===o)return;e.preventDefault();let a=o,i=l-1,d=()=>{(a=o+1)>i&&(a=0)},c=()=>{(a=o-1)<0&&(a=i)};switch(e.key){case"Home":a=0;break;case"End":a=i;break;case"ArrowRight":"horizontal"===s&&(g?d():c());break;case"ArrowDown":"vertical"===s&&d();break;case"ArrowLeft":"horizontal"===s&&(g?c():d());break;case"ArrowUp":"vertical"===s&&c()}null==(r=n[a%l].ref.current)||r.focus()});return(0,p.jsx)(N,{scope:t,disabled:o,direction:l,orientation:s,children:(0,p.jsx)(w.Slot,{scope:t,children:(0,p.jsx)(d.sG.div,{...c,"data-orientation":s,ref:h,onKeyDown:o?void 0:x})})})}),_="AccordionItem",[D,k]=g(_),I=n.forwardRef((e,r)=>{let{__scopeAccordion:t,value:n,...o}=e,l=P(_,t),a=R(_,t),i=y(t),s=(0,u.B)(),d=n&&a.value.includes(n)||!1,f=l.disabled||e.disabled;return(0,p.jsx)(D,{scope:t,open:d,disabled:f,triggerId:s,children:(0,p.jsx)(c.bL,{"data-orientation":l.orientation,"data-state":M(d),...i,...o,ref:r,disabled:f,open:d,onOpenChange:e=>{e?a.onItemOpen(n):a.onItemClose(n)}})})});I.displayName=_;var O="AccordionHeader",z=n.forwardRef((e,r)=>{let{__scopeAccordion:t,...n}=e,o=P(h,t),l=k(O,t);return(0,p.jsx)(d.sG.h3,{"data-orientation":o.orientation,"data-state":M(l.open),"data-disabled":l.disabled?"":void 0,...n,ref:r})});z.displayName=O;var H="AccordionTrigger",W=n.forwardRef((e,r)=>{let{__scopeAccordion:t,...n}=e,o=P(h,t),l=k(H,t),a=E(H,t),i=y(t);return(0,p.jsx)(w.ItemSlot,{scope:t,children:(0,p.jsx)(c.l9,{"aria-disabled":l.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:l.triggerId,...i,...n,ref:r})})});W.displayName=H;var U="AccordionContent",G=n.forwardRef((e,r)=>{let{__scopeAccordion:t,...n}=e,o=P(h,t),l=k(U,t),a=y(t);return(0,p.jsx)(c.UC,{role:"region","aria-labelledby":l.triggerId,"data-orientation":o.orientation,...a,...n,ref:r,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function M(e){return e?"open":"closed"}G.displayName=U;var Y=C,B=I,X=z,q=W,F=G},2829:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3536).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},3259:(e,r,t)=>{t.d(r,{T:()=>n.T});var n=t(5936);t(9189)},3359:(e,r,t)=>{t.d(r,{A:()=>u});var n=t(2115);let o=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),l=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,t)=>t?t.toUpperCase():r.toLowerCase()),a=e=>{let r=l(e);return r.charAt(0).toUpperCase()+r.slice(1)},i=function(){for(var e=arguments.length,r=Array(e),t=0;t!!e&&""!==e.trim()&&t.indexOf(e)===r).join(" ").trim()},s=e=>{for(let r in e)if(r.startsWith("aria-")||"role"===r||"title"===r)return!0};var d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let c=(0,n.forwardRef)((e,r)=>{let{color:t="currentColor",size:o=24,strokeWidth:l=2,absoluteStrokeWidth:a,className:c="",children:u,iconNode:f,...p}=e;return(0,n.createElement)("svg",{ref:r,...d,width:o,height:o,stroke:t,strokeWidth:a?24*Number(l)/Number(o):l,className:i("lucide",c),...!u&&!s(p)&&{"aria-hidden":"true"},...p},[...f.map(e=>{let[r,t]=e;return(0,n.createElement)(r,t)}),...Array.isArray(u)?u:[u]])}),u=((e,r)=>{let t=(0,n.forwardRef)((t,l)=>{let{className:s,...d}=t;return(0,n.createElement)(c,{ref:l,iconNode:r,className:i("lucide-".concat(o(a(e))),"lucide-".concat(e),s),...d})});return t.displayName=a(e),t})("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},5547:(e,r,t)=>{t.d(r,{GB:()=>s,Pg:()=>c,x2:()=>d}),t(9189);var n=t(2115),o=t(3795),l=t(5155),a=(0,n.createContext)(null);function i(){let e=(0,n.useContext)(a);if(!e)throw Error("Missing sidebar provider");return e}function s(e){let[r,t]=void 0===e.open?(0,n.useState)(!1):[e.open,e.onOpenChange];return(0,l.jsx)(a.Provider,{value:(0,n.useMemo)(()=>({open:r,setOpen:null!=t?t:()=>void 0}),[r,t]),children:e.children})}function d(e){let{as:r,...t}=e,{open:n,setOpen:o}=i();return(0,l.jsx)(null!=r?r:"button",{"aria-label":"Toggle Sidebar","data-open":n,onClick:()=>{o(!n)},...t})}function c(e){let{as:r,blockScrollingWidth:t,removeScrollOn:a=t?"(width < ".concat(t,"px)"):void 0,...s}=e,{open:d}=i(),[c,u]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{if(!a)return;let e=window.matchMedia(a),r=()=>{u(e.matches)};return r(),e.addEventListener("change",r),()=>{e.removeEventListener("change",r)}},[a]),(0,l.jsx)(o.A,{as:null!=r?r:"aside","data-open":d,enabled:!!(c&&d),...s,children:s.children})}},5675:(e,r,t)=>{t.d(r,{FK:()=>F,$H:()=>$,Gl:()=>K});var n=t(5155),o=t(2115),l=t(3655),a=t(8905),i=t(6081),s=t(6101),d=t(9033),c=t(4315),u=t(2712),f=t(5185),p="ScrollArea",[h,v]=(0,i.A)(p),[w,m]=h(p),b=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,type:a="hover",dir:i,scrollHideDelay:d=600,...u}=e,[f,p]=o.useState(null),[h,v]=o.useState(null),[m,b]=o.useState(null),[g,x]=o.useState(null),[y,C]=o.useState(null),[S,R]=o.useState(0),[j,E]=o.useState(0),[A,T]=o.useState(!1),[N,P]=o.useState(!1),L=(0,s.s)(r,e=>p(e)),_=(0,c.jH)(i);return(0,n.jsx)(w,{scope:t,type:a,dir:_,scrollHideDelay:d,scrollArea:f,viewport:h,onViewportChange:v,content:m,onContentChange:b,scrollbarX:g,onScrollbarXChange:x,scrollbarXEnabled:A,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:C,scrollbarYEnabled:N,onScrollbarYEnabledChange:P,onCornerWidthChange:R,onCornerHeightChange:E,children:(0,n.jsx)(l.sG.div,{dir:_,...u,ref:L,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":j+"px",...e.style}})})});b.displayName=p;var g="ScrollAreaViewport",x=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,children:a,nonce:i,...d}=e,c=m(g,t),u=o.useRef(null),f=(0,s.s)(r,u,c.onViewportChange);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),(0,n.jsx)(l.sG.div,{"data-radix-scroll-area-viewport":"",...d,ref:f,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,n.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:a})})]})});x.displayName=g;var y="ScrollAreaScrollbar",C=o.forwardRef((e,r)=>{let{forceMount:t,...l}=e,a=m(y,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:s}=a,d="horizontal"===e.orientation;return o.useEffect(()=>(d?i(!0):s(!0),()=>{d?i(!1):s(!1)}),[d,i,s]),"hover"===a.type?(0,n.jsx)(S,{...l,ref:r,forceMount:t}):"scroll"===a.type?(0,n.jsx)(R,{...l,ref:r,forceMount:t}):"auto"===a.type?(0,n.jsx)(j,{...l,ref:r,forceMount:t}):"always"===a.type?(0,n.jsx)(E,{...l,ref:r}):null});C.displayName=y;var S=o.forwardRef((e,r)=>{let{forceMount:t,...l}=e,i=m(y,e.__scopeScrollArea),[s,d]=o.useState(!1);return o.useEffect(()=>{let e=i.scrollArea,r=0;if(e){let t=()=>{window.clearTimeout(r),d(!0)},n=()=>{r=window.setTimeout(()=>d(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(r),e.removeEventListener("pointerenter",t),e.removeEventListener("pointerleave",n)}}},[i.scrollArea,i.scrollHideDelay]),(0,n.jsx)(a.C,{present:t||s,children:(0,n.jsx)(j,{"data-state":s?"visible":"hidden",...l,ref:r})})}),R=o.forwardRef((e,r)=>{var t,l;let{forceMount:i,...s}=e,d=m(y,e.__scopeScrollArea),c="horizontal"===e.orientation,u=B(()=>h("SCROLL_END"),100),[p,h]=(t="hidden",l={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},o.useReducer((e,r)=>{let t=l[e][r];return null!=t?t:e},t));return o.useEffect(()=>{if("idle"===p){let e=window.setTimeout(()=>h("HIDE"),d.scrollHideDelay);return()=>window.clearTimeout(e)}},[p,d.scrollHideDelay,h]),o.useEffect(()=>{let e=d.viewport,r=c?"scrollLeft":"scrollTop";if(e){let t=e[r],n=()=>{let n=e[r];t!==n&&(h("SCROLL"),u()),t=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[d.viewport,c,h,u]),(0,n.jsx)(a.C,{present:i||"hidden"!==p,children:(0,n.jsx)(E,{"data-state":"hidden"===p?"hidden":"visible",...s,ref:r,onPointerEnter:(0,f.m)(e.onPointerEnter,()=>h("POINTER_ENTER")),onPointerLeave:(0,f.m)(e.onPointerLeave,()=>h("POINTER_LEAVE"))})})}),j=o.forwardRef((e,r)=>{let t=m(y,e.__scopeScrollArea),{forceMount:l,...i}=e,[s,d]=o.useState(!1),c="horizontal"===e.orientation,u=B(()=>{if(t.viewport){let e=t.viewport.offsetWidth{let{orientation:t="vertical",...l}=e,a=m(y,e.__scopeScrollArea),i=o.useRef(null),s=o.useRef(0),[d,c]=o.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=W(d.viewport,d.content),f={...l,sizes:d,onSizesChange:c,hasThumb:!!(u>0&&u<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:e=>s.current=e};function p(e,r){return function(e,r,t){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ltr",o=U(t),l=r||o/2,a=t.scrollbar.paddingStart+l,i=t.scrollbar.size-t.scrollbar.paddingEnd-(o-l),s=t.content-t.viewport;return M([a,i],"ltr"===n?[0,s]:[-1*s,0])(e)}(e,s.current,d,r)}return"horizontal"===t?(0,n.jsx)(A,{...f,ref:r,onThumbPositionChange:()=>{if(a.viewport&&i.current){let e=G(a.viewport.scrollLeft,d,a.dir);i.current.style.transform="translate3d(".concat(e,"px, 0, 0)")}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollLeft=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollLeft=p(e,a.dir))}}):"vertical"===t?(0,n.jsx)(T,{...f,ref:r,onThumbPositionChange:()=>{if(a.viewport&&i.current){let e=G(a.viewport.scrollTop,d);i.current.style.transform="translate3d(0, ".concat(e,"px, 0)")}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollTop=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollTop=p(e))}}):null}),A=o.forwardRef((e,r)=>{let{sizes:t,onSizesChange:l,...a}=e,i=m(y,e.__scopeScrollArea),[d,c]=o.useState(),u=o.useRef(null),f=(0,s.s)(r,u,i.onScrollbarXChange);return o.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,n.jsx)(L,{"data-orientation":"horizontal",...a,ref:f,sizes:t,style:{bottom:0,left:"rtl"===i.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===i.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":U(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.x),onDragScroll:r=>e.onDragScroll(r.x),onWheelScroll:(r,t)=>{if(i.viewport){let n=i.viewport.scrollLeft+r.deltaX;e.onWheelScroll(n),function(e,r){return e>0&&e{u.current&&i.viewport&&d&&l({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:H(d.paddingLeft),paddingEnd:H(d.paddingRight)}})}})}),T=o.forwardRef((e,r)=>{let{sizes:t,onSizesChange:l,...a}=e,i=m(y,e.__scopeScrollArea),[d,c]=o.useState(),u=o.useRef(null),f=(0,s.s)(r,u,i.onScrollbarYChange);return o.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,n.jsx)(L,{"data-orientation":"vertical",...a,ref:f,sizes:t,style:{top:0,right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":U(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.y),onDragScroll:r=>e.onDragScroll(r.y),onWheelScroll:(r,t)=>{if(i.viewport){let n=i.viewport.scrollTop+r.deltaY;e.onWheelScroll(n),function(e,r){return e>0&&e{u.current&&i.viewport&&d&&l({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:H(d.paddingTop),paddingEnd:H(d.paddingBottom)}})}})}),[N,P]=h(y),L=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,sizes:a,hasThumb:i,onThumbChange:c,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:h,onDragScroll:v,onWheelScroll:w,onResize:b,...g}=e,x=m(y,t),[C,S]=o.useState(null),R=(0,s.s)(r,e=>S(e)),j=o.useRef(null),E=o.useRef(""),A=x.viewport,T=a.content-a.viewport,P=(0,d.c)(w),L=(0,d.c)(h),_=B(b,10);function D(e){j.current&&v({x:e.clientX-j.current.left,y:e.clientY-j.current.top})}return o.useEffect(()=>{let e=e=>{let r=e.target;(null==C?void 0:C.contains(r))&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[A,C,T,P]),o.useEffect(L,[a,L]),X(C,_),X(x.content,_),(0,n.jsx)(N,{scope:t,scrollbar:C,hasThumb:i,onThumbChange:(0,d.c)(c),onThumbPointerUp:(0,d.c)(u),onThumbPositionChange:L,onThumbPointerDown:(0,d.c)(p),children:(0,n.jsx)(l.sG.div,{...g,ref:R,style:{position:"absolute",...g.style},onPointerDown:(0,f.m)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),j.current=C.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),D(e))}),onPointerMove:(0,f.m)(e.onPointerMove,D),onPointerUp:(0,f.m)(e.onPointerUp,e=>{let r=e.target;r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,x.viewport&&(x.viewport.style.scrollBehavior=""),j.current=null})})})}),_="ScrollAreaThumb",D=o.forwardRef((e,r)=>{let{forceMount:t,...o}=e,l=P(_,e.__scopeScrollArea);return(0,n.jsx)(a.C,{present:t||l.hasThumb,children:(0,n.jsx)(k,{ref:r,...o})})}),k=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,style:a,...i}=e,d=m(_,t),c=P(_,t),{onThumbPositionChange:u}=c,p=(0,s.s)(r,e=>c.onThumbChange(e)),h=o.useRef(void 0),v=B(()=>{h.current&&(h.current(),h.current=void 0)},100);return o.useEffect(()=>{let e=d.viewport;if(e){let r=()=>{v(),h.current||(h.current=Y(e,u),u())};return u(),e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[d.viewport,v,u]),(0,n.jsx)(l.sG.div,{"data-state":c.hasThumb?"visible":"hidden",...i,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...a},onPointerDownCapture:(0,f.m)(e.onPointerDownCapture,e=>{let r=e.target.getBoundingClientRect(),t=e.clientX-r.left,n=e.clientY-r.top;c.onThumbPointerDown({x:t,y:n})}),onPointerUp:(0,f.m)(e.onPointerUp,c.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",O=o.forwardRef((e,r)=>{let t=m(I,e.__scopeScrollArea),o=!!(t.scrollbarX&&t.scrollbarY);return"scroll"!==t.type&&o?(0,n.jsx)(z,{...e,ref:r}):null});O.displayName=I;var z=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,...a}=e,i=m(I,t),[s,d]=o.useState(0),[c,u]=o.useState(0),f=!!(s&&c);return X(i.scrollbarX,()=>{var e;let r=(null==(e=i.scrollbarX)?void 0:e.offsetHeight)||0;i.onCornerHeightChange(r),u(r)}),X(i.scrollbarY,()=>{var e;let r=(null==(e=i.scrollbarY)?void 0:e.offsetWidth)||0;i.onCornerWidthChange(r),d(r)}),f?(0,n.jsx)(l.sG.div,{...a,ref:r,style:{width:s,height:c,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function H(e){return e?parseInt(e,10):0}function W(e,r){let t=e/r;return isNaN(t)?0:t}function U(e){let r=W(e.viewport,e.content),t=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-t)*r,18)}function G(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"ltr",n=U(r),o=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,l=r.scrollbar.size-o,a=r.content-r.viewport,i=function(e,[r,t]){return Math.min(t,Math.max(r,e))}(e,"ltr"===t?[0,a]:[-1*a,0]);return M([0,a],[0,l-n])(i)}function M(e,r){return t=>{if(e[0]===e[1]||r[0]===r[1])return r[0];let n=(r[1]-r[0])/(e[1]-e[0]);return r[0]+n*(t-e[0])}}var Y=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},t={left:e.scrollLeft,top:e.scrollTop},n=0;return!function o(){let l={left:e.scrollLeft,top:e.scrollTop},a=t.left!==l.left,i=t.top!==l.top;(a||i)&&r(),t=l,n=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(n)};function B(e,r){let t=(0,d.c)(e),n=o.useRef(0);return o.useEffect(()=>()=>window.clearTimeout(n.current),[]),o.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(t,r)},[t,r])}function X(e,r){let t=(0,d.c)(r);(0,u.N)(()=>{let r=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(t)});return n.observe(e),()=>{window.cancelAnimationFrame(r),n.unobserve(e)}}},[e,t])}var q=t(9688);let F=o.forwardRef(({className:e,children:r,...t},o)=>(0,n.jsxs)(b,{ref:o,className:(0,q.QP)("overflow-hidden",e),...t,children:[r,(0,n.jsx)(O,{}),(0,n.jsx)($,{orientation:"vertical"})]}));F.displayName=b.displayName;let K=o.forwardRef(({className:e,children:r,...t},o)=>(0,n.jsx)(x,{ref:o,className:(0,q.QP)("size-full rounded-[inherit]",e),...t,children:r}));K.displayName=x.displayName;let $=o.forwardRef(({className:e,orientation:r="vertical",...t},o)=>(0,n.jsx)(C,{ref:o,orientation:r,className:(0,q.QP)("flex select-none data-[state=hidden]:animate-fd-fade-out","vertical"===r&&"h-full w-1.5","horizontal"===r&&"h-1.5 flex-col",e),...t,children:(0,n.jsx)(D,{className:"relative flex-1 rounded-full bg-fd-border"})}));$.displayName=C.displayName},5936:(e,r,t)=>{t.d(r,{T:()=>o});var n=t(2115);function o(e,r,t=function e(r,t){if(Array.isArray(r)&&Array.isArray(t))return t.length!==r.length||r.some((r,n)=>e(r,t[n]));if("object"==typeof r&&r&&"object"==typeof t&&t){let n=Object.keys(r),o=Object.keys(t);return n.length!==o.length||n.some(n=>e(r[n],t[n]))}return r!==t}){let[l,a]=(0,n.useState)(e);t(l,e)&&(r(e,l),a(e))}},8106:(e,r,t)=>{t.d(r,{Ke:()=>C,R6:()=>x,UC:()=>A,bL:()=>j,l9:()=>E,z3:()=>v});var n=t(2115),o=t(5185),l=t(6081),a=t(5845),i=t(2712),s=t(6101),d=t(3655),c=t(8905),u=t(1285),f=t(5155),p="Collapsible",[h,v]=(0,l.A)(p),[w,m]=h(p),b=n.forwardRef((e,r)=>{let{__scopeCollapsible:t,open:o,defaultOpen:l,disabled:i,onOpenChange:s,...c}=e,[h,v]=(0,a.i)({prop:o,defaultProp:null!=l&&l,onChange:s,caller:p});return(0,f.jsx)(w,{scope:t,disabled:i,contentId:(0,u.B)(),open:h,onOpenToggle:n.useCallback(()=>v(e=>!e),[v]),children:(0,f.jsx)(d.sG.div,{"data-state":R(h),"data-disabled":i?"":void 0,...c,ref:r})})});b.displayName=p;var g="CollapsibleTrigger",x=n.forwardRef((e,r)=>{let{__scopeCollapsible:t,...n}=e,l=m(g,t);return(0,f.jsx)(d.sG.button,{type:"button","aria-controls":l.contentId,"aria-expanded":l.open||!1,"data-state":R(l.open),"data-disabled":l.disabled?"":void 0,disabled:l.disabled,...n,ref:r,onClick:(0,o.m)(e.onClick,l.onOpenToggle)})});x.displayName=g;var y="CollapsibleContent",C=n.forwardRef((e,r)=>{let{forceMount:t,...n}=e,o=m(y,e.__scopeCollapsible);return(0,f.jsx)(c.C,{present:t||o.open,children:e=>{let{present:t}=e;return(0,f.jsx)(S,{...n,ref:r,present:t})}})});C.displayName=y;var S=n.forwardRef((e,r)=>{let{__scopeCollapsible:t,present:o,children:l,...a}=e,c=m(y,t),[u,p]=n.useState(o),h=n.useRef(null),v=(0,s.s)(r,h),w=n.useRef(0),b=w.current,g=n.useRef(0),x=g.current,C=c.open||u,S=n.useRef(C),j=n.useRef(void 0);return n.useEffect(()=>{let e=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,i.N)(()=>{let e=h.current;if(e){j.current=j.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let r=e.getBoundingClientRect();w.current=r.height,g.current=r.width,S.current||(e.style.transitionDuration=j.current.transitionDuration,e.style.animationName=j.current.animationName),p(o)}},[c.open,o]),(0,f.jsx)(d.sG.div,{"data-state":R(c.open),"data-disabled":c.disabled?"":void 0,id:c.contentId,hidden:!C,...a,ref:v,style:{"--radix-collapsible-content-height":b?"".concat(b,"px"):void 0,"--radix-collapsible-content-width":x?"".concat(x,"px"):void 0,...e.style},children:C&&l})});function R(e){return e?"open":"closed"}var j=b,E=x,A=C},8693:(e,r,t)=>{t.d(r,{L:()=>c,TreeContextProvider:()=>d,t:()=>u});var n=t(5155),o=t(344),l=t(2115),a=t(244);let i=(0,o.q6)("TreeContext"),s=(0,o.q6)("PathContext",[]);function d(e){var r,t,d;let c=(0,l.useRef)(0),u=(0,o.a8)(),f=(0,l.useMemo)(()=>e.tree,[null!=(r=e.tree.$id)?r:e.tree]),p=(0,l.useMemo)(()=>{var e;return null!=(e=(0,a.oe)(f.children,u))?e:[]},[f,u]),h=null!=(t=p.findLast(e=>"folder"===e.type&&e.root))?t:f;return null!=h.$id||(h.$id=String(c.current++)),(0,n.jsx)(i.Provider,{value:(0,l.useMemo)(()=>({root:h}),[h]),children:(0,n.jsx)(s.Provider,{value:p,children:e.children})})}function c(){return s.use()}function u(){return i.use("You must wrap this component under ")}},8756:(e,r,t)=>{t.d(r,{Ke:()=>d,Nt:()=>i,R6:()=>s});var n=t(5155),o=t(8106),l=t(2115),a=t(9688);let i=o.bL,s=o.R6,d=(0,l.forwardRef)((e,r)=>{let{children:t,...i}=e,[s,d]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{d(!0)},[]),(0,n.jsx)(o.Ke,{ref:r,...i,className:(0,a.QP)("overflow-hidden",s&&"data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down",i.className),children:t})});d.displayName=o.Ke.displayName}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js b/docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js deleted file mode 100644 index 90c9359f..00000000 --- a/docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[790],{5619:(e,t,n)=>{"use strict";n.d(t,{Menu:()=>f,MenuContent:()=>m,MenuLinkItem:()=>c,MenuTrigger:()=>v});var r=n(5155),a=n(4657),o=n(9688),i=n(7474),l=n(9949),s=n(2085),u=n(7936);let d=(0,s.F)("",{variants:{variant:{main:"inline-flex items-center gap-2 py-1.5 transition-colors hover:text-fd-popover-foreground/50 data-[active=true]:font-medium data-[active=true]:text-fd-primary [&_svg]:size-4",icon:(0,u.r)({size:"icon",color:"ghost"}),button:(0,u.r)({color:"secondary",className:"gap-1.5 [&_svg]:size-4"})}},defaultVariants:{variant:"main"}});function c(e){let{item:t,...n}=e;if("custom"===t.type)return(0,r.jsx)("div",{className:(0,o.QP)("grid",n.className),children:t.children});if("menu"===t.type){let e=(0,r.jsxs)(r.Fragment,{children:[t.icon,t.text]});return(0,r.jsxs)("div",{className:(0,o.QP)("mb-4 flex flex-col",n.className),children:[(0,r.jsx)("p",{className:"mb-1 text-sm text-fd-muted-foreground",children:t.url?(0,r.jsx)(i.Ws,{asChild:!0,children:(0,r.jsx)(l.default,{href:t.url,children:e})}):e}),t.items.map((e,t)=>(0,r.jsx)(c,{item:e},t))]})}return(0,r.jsx)(i.Ws,{asChild:!0,children:(0,r.jsxs)(a.BaseLinkItem,{item:t,className:(0,o.QP)(d({variant:t.type}),n.className),"aria-label":"icon"===t.type?t.label:void 0,children:[t.icon,"icon"===t.type?void 0:t.text]})})}let f=i.JD;function v(e){let{enableHover:t=!1,...n}=e;return(0,r.jsx)(i.wd,{...n,onPointerMove:t?void 0:e=>e.preventDefault(),className:(0,o.QP)((0,u.r)({size:"icon",color:"ghost"}),n.className),children:n.children})}function m(e){return(0,r.jsx)(i.hA,{...e,className:(0,o.QP)("flex flex-col p-4",e.className),children:e.children})}},7110:(e,t,n)=>{"use strict";n.d(t,{Navbar:()=>v,NavbarLink:()=>w,NavbarMenu:()=>m,NavbarMenuContent:()=>h,NavbarMenuLink:()=>g,NavbarMenuTrigger:()=>p});var r=n(5155),a=n(2115),o=n(2085),i=n(9949),l=n(9688),s=n(4657),u=n(7474),d=n(1339),c=n(7936);let f=(0,o.F)("inline-flex items-center gap-1 p-2 text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground data-[active=true]:text-fd-primary [&_svg]:size-4");function v(e){let[t,n]=(0,a.useState)(""),{isTransparent:o}=(0,d.h)();return(0,r.jsx)(u.KS,{value:t,onValueChange:n,asChild:!0,children:(0,r.jsxs)("header",{id:"nd-nav",...e,className:(0,l.QP)("fixed left-1/2 top-(--fd-banner-height) z-40 box-content w-full max-w-fd-container -translate-x-1/2 border-b border-fd-foreground/10 transition-colors lg:mt-2 lg:w-[calc(100%-1rem)] lg:rounded-2xl lg:border",t.length>0?"shadow-lg":"shadow-sm",(!o||t.length>0)&&"bg-fd-background/80 backdrop-blur-lg",e.className),children:[(0,r.jsx)(u.SK,{className:"flex h-14 w-full flex-row items-center px-4 lg:h-12",asChild:!0,children:(0,r.jsx)("nav",{children:e.children})}),(0,r.jsx)(u.QW,{})]})})}let m=u.JD;function h(e){return(0,r.jsx)(u.hA,{...e,className:(0,l.QP)("grid grid-cols-1 gap-3 px-4 pb-4 md:grid-cols-2 lg:grid-cols-3",e.className),children:e.children})}function p(e){return(0,r.jsx)(u.wd,{...e,className:(0,l.QP)(f(),"rounded-md",e.className),children:e.children})}function g(e){return(0,r.jsx)(u.Ws,{asChild:!0,children:(0,r.jsx)(i.default,{...e,className:(0,l.QP)("flex flex-col gap-2 rounded-lg border bg-fd-card p-3 transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground",e.className),children:e.children})})}let x=(0,o.F)("",{variants:{variant:{main:f(),button:(0,c.r)({color:"secondary",className:"gap-1.5 [&_svg]:size-4"}),icon:(0,c.r)({color:"ghost",size:"icon"})}},defaultVariants:{variant:"main"}});function w(e){let{item:t,variant:n,...a}=e;return(0,r.jsx)(u.JD,{children:(0,r.jsx)(u.Ws,{asChild:!0,children:(0,r.jsx)(s.BaseLinkItem,{...a,item:t,className:(0,l.QP)(x({variant:n}),a.className),children:a.children})})})}},7474:(e,t,n)=>{"use strict";n.d(t,{KS:()=>ev,hA:()=>eg,JD:()=>eh,Ws:()=>ex,SK:()=>em,wd:()=>ep,QW:()=>ew});var r=n(5155),a=n(2115),o=n(7650),i=n(6081),l=n(5185),s=n(3655),u=n(5845),d=n(6101),c=n(4315),f=n(8905),v=n(1285),m=n(7328),h=n(9178),p=n(2712),g=n(9033),x=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),w=a.forwardRef((e,t)=>(0,r.jsx)(s.sG.span,{...e,ref:t,style:{...x,...e.style}}));w.displayName="VisuallyHidden";var N="NavigationMenu",[b,j,y]=(0,m.N)(N),[R,C,E]=(0,m.N)(N),[P,M]=(0,i.A)(N,[y,E]),[T,k]=P(N),[L,_]=P(N),I=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:o,onValueChange:i,defaultValue:l,delayDuration:f=200,skipDelayDuration:v=300,orientation:m="horizontal",dir:h,...p}=e,[g,x]=a.useState(null),w=(0,d.s)(t,e=>x(e)),b=(0,c.jH)(h),j=a.useRef(0),y=a.useRef(0),R=a.useRef(0),[C,E]=a.useState(!0),[P,M]=(0,u.i)({prop:o,onChange:e=>{let t=v>0;""!==e?(window.clearTimeout(R.current),t&&E(!1)):(window.clearTimeout(R.current),R.current=window.setTimeout(()=>E(!0),v)),null==i||i(e)},defaultProp:null!=l?l:"",caller:N}),T=a.useCallback(()=>{window.clearTimeout(y.current),y.current=window.setTimeout(()=>M(""),150)},[M]),k=a.useCallback(e=>{window.clearTimeout(y.current),M(e)},[M]),L=a.useCallback(e=>{P===e?window.clearTimeout(y.current):j.current=window.setTimeout(()=>{window.clearTimeout(y.current),M(e)},f)},[P,M,f]);return a.useEffect(()=>()=>{window.clearTimeout(j.current),window.clearTimeout(y.current),window.clearTimeout(R.current)},[]),(0,r.jsx)(F,{scope:n,isRootMenu:!0,value:P,dir:b,orientation:m,rootNavigationMenu:g,onTriggerEnter:e=>{window.clearTimeout(j.current),C?L(e):k(e)},onTriggerLeave:()=>{window.clearTimeout(j.current),T()},onContentEnter:()=>window.clearTimeout(y.current),onContentLeave:T,onItemSelect:e=>{M(t=>t===e?"":e)},onItemDismiss:()=>M(""),children:(0,r.jsx)(s.sG.nav,{"aria-label":"Main","data-orientation":m,dir:b,...p,ref:w})})});I.displayName=N;var D="NavigationMenuSub";a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:a,onValueChange:o,defaultValue:i,orientation:l="horizontal",...d}=e,c=k(D,n),[f,v]=(0,u.i)({prop:a,onChange:o,defaultProp:null!=i?i:"",caller:D});return(0,r.jsx)(F,{scope:n,isRootMenu:!1,value:f,dir:c.dir,orientation:l,rootNavigationMenu:c.rootNavigationMenu,onTriggerEnter:e=>v(e),onItemSelect:e=>v(e),onItemDismiss:()=>v(""),children:(0,r.jsx)(s.sG.div,{"data-orientation":l,...d,ref:t})})}).displayName=D;var F=e=>{let{scope:t,isRootMenu:n,rootNavigationMenu:o,dir:i,orientation:l,children:s,value:u,onItemSelect:d,onItemDismiss:c,onTriggerEnter:f,onTriggerLeave:m,onContentEnter:h,onContentLeave:p}=e,[x,w]=a.useState(null),[N,j]=a.useState(new Map),[y,R]=a.useState(null);return(0,r.jsx)(T,{scope:t,isRootMenu:n,rootNavigationMenu:o,value:u,previousValue:function(e){let t=a.useRef({value:e,previous:e});return a.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}(u),baseId:(0,v.B)(),dir:i,orientation:l,viewport:x,onViewportChange:w,indicatorTrack:y,onIndicatorTrackChange:R,onTriggerEnter:(0,g.c)(f),onTriggerLeave:(0,g.c)(m),onContentEnter:(0,g.c)(h),onContentLeave:(0,g.c)(p),onItemSelect:(0,g.c)(d),onItemDismiss:(0,g.c)(c),onViewportContentChange:a.useCallback((e,t)=>{j(n=>(n.set(e,t),new Map(n)))},[]),onViewportContentRemove:a.useCallback(e=>{j(t=>t.has(e)?(t.delete(e),new Map(t)):t)},[]),children:(0,r.jsx)(b.Provider,{scope:t,children:(0,r.jsx)(L,{scope:t,items:N,children:s})})})},S="NavigationMenuList",A=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...a}=e,o=k(S,n),i=(0,r.jsx)(s.sG.ul,{"data-orientation":o.orientation,...a,ref:t});return(0,r.jsx)(s.sG.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange,children:(0,r.jsx)(b.Slot,{scope:n,children:o.isRootMenu?(0,r.jsx)(en,{asChild:!0,children:i}):i})})});A.displayName=S;var K="NavigationMenuItem",[O,z]=P(K),Q=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:o,...i}=e,l=(0,v.B)(),u=a.useRef(null),d=a.useRef(null),c=a.useRef(null),f=a.useRef(()=>{}),m=a.useRef(!1),h=a.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"start";if(u.current){f.current();let t=eo(u.current);t.length&&ei("start"===e?t:t.reverse())}},[]),p=a.useCallback(()=>{if(u.current){let e=eo(u.current);e.length&&(f.current=function(e){return e.forEach(e=>{e.dataset.tabindex=e.getAttribute("tabindex")||"",e.setAttribute("tabindex","-1")}),()=>{e.forEach(e=>{let t=e.dataset.tabindex;e.setAttribute("tabindex",t)})}}(e))}},[]);return(0,r.jsx)(O,{scope:n,value:o||l||"LEGACY_REACT_AUTO_VALUE",triggerRef:d,contentRef:u,focusProxyRef:c,wasEscapeCloseRef:m,onEntryKeyDown:h,onFocusProxyEnter:h,onRootContentClose:p,onContentFocusOutside:p,children:(0,r.jsx)(s.sG.li,{...i,ref:t})})});Q.displayName=K;var G="NavigationMenuTrigger",V=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,disabled:o,...i}=e,u=k(G,e.__scopeNavigationMenu),c=z(G,e.__scopeNavigationMenu),f=a.useRef(null),v=(0,d.s)(f,c.triggerRef,t),m=eu(u.baseId,c.value),h=ed(u.baseId,c.value),p=a.useRef(!1),g=a.useRef(!1),x=c.value===u.value;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(b.ItemSlot,{scope:n,value:c.value,children:(0,r.jsx)(ea,{asChild:!0,children:(0,r.jsx)(s.sG.button,{id:m,disabled:o,"data-disabled":o?"":void 0,"data-state":es(x),"aria-expanded":x,"aria-controls":h,...i,ref:v,onPointerEnter:(0,l.m)(e.onPointerEnter,()=>{g.current=!1,c.wasEscapeCloseRef.current=!1}),onPointerMove:(0,l.m)(e.onPointerMove,ec(()=>{o||g.current||c.wasEscapeCloseRef.current||p.current||(u.onTriggerEnter(c.value),p.current=!0)})),onPointerLeave:(0,l.m)(e.onPointerLeave,ec(()=>{o||(u.onTriggerLeave(),p.current=!1)})),onClick:(0,l.m)(e.onClick,()=>{u.onItemSelect(c.value),g.current=x}),onKeyDown:(0,l.m)(e.onKeyDown,e=>{let t={horizontal:"ArrowDown",vertical:"rtl"===u.dir?"ArrowLeft":"ArrowRight"}[u.orientation];x&&e.key===t&&(c.onEntryKeyDown(),e.preventDefault())})})})}),x&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(w,{"aria-hidden":!0,tabIndex:0,ref:c.focusProxyRef,onFocus:e=>{let t=c.contentRef.current,n=e.relatedTarget,r=n===f.current,a=null==t?void 0:t.contains(n);(r||!a)&&c.onFocusProxyEnter(r?"start":"end")}}),u.viewport&&(0,r.jsx)("span",{"aria-owns":h})]})]})});V.displayName=G;var W="navigationMenu.linkSelect",H=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,active:a,onSelect:o,...i}=e;return(0,r.jsx)(ea,{asChild:!0,children:(0,r.jsx)(s.sG.a,{"data-active":a?"":void 0,"aria-current":a?"page":void 0,...i,ref:t,onClick:(0,l.m)(e.onClick,e=>{let t=e.target,n=new CustomEvent(W,{bubbles:!0,cancelable:!0});if(t.addEventListener(W,e=>null==o?void 0:o(e),{once:!0}),(0,s.hO)(t,n),!n.defaultPrevented&&!e.metaKey){let e=new CustomEvent(X,{bubbles:!0,cancelable:!0});(0,s.hO)(t,e)}},{checkForDefaultPrevented:!1})})})});H.displayName="NavigationMenuLink";var U="NavigationMenuIndicator";a.forwardRef((e,t)=>{let{forceMount:n,...a}=e,i=k(U,e.__scopeNavigationMenu),l=!!i.value;return i.indicatorTrack?o.createPortal((0,r.jsx)(f.C,{present:n||l,children:(0,r.jsx)(B,{...a,ref:t})}),i.indicatorTrack):null}).displayName=U;var B=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...o}=e,i=k(U,n),l=j(n),[u,d]=a.useState(null),[c,f]=a.useState(null),v="horizontal"===i.orientation,m=!!i.value;a.useEffect(()=>{var e;let t=null==(e=l().find(e=>e.value===i.value))?void 0:e.ref.current;t&&d(t)},[l,i.value]);let h=()=>{u&&f({size:v?u.offsetWidth:u.offsetHeight,offset:v?u.offsetLeft:u.offsetTop})};return el(u,h),el(i.indicatorTrack,h),c?(0,r.jsx)(s.sG.div,{"aria-hidden":!0,"data-state":m?"visible":"hidden","data-orientation":i.orientation,...o,ref:t,style:{position:"absolute",...v?{left:0,width:c.size+"px",transform:"translateX(".concat(c.offset,"px)")}:{top:0,height:c.size+"px",transform:"translateY(".concat(c.offset,"px)")},...o.style}}):null}),J="NavigationMenuContent",q=a.forwardRef((e,t)=>{let{forceMount:n,...a}=e,o=k(J,e.__scopeNavigationMenu),i=z(J,e.__scopeNavigationMenu),s=(0,d.s)(i.contentRef,t),u=i.value===o.value,c={value:i.value,triggerRef:i.triggerRef,focusProxyRef:i.focusProxyRef,wasEscapeCloseRef:i.wasEscapeCloseRef,onContentFocusOutside:i.onContentFocusOutside,onRootContentClose:i.onRootContentClose,...a};return o.viewport?(0,r.jsx)(Y,{forceMount:n,...c,ref:s}):(0,r.jsx)(f.C,{present:n||u,children:(0,r.jsx)(Z,{"data-state":es(u),...c,ref:s,onPointerEnter:(0,l.m)(e.onPointerEnter,o.onContentEnter),onPointerLeave:(0,l.m)(e.onPointerLeave,ec(o.onContentLeave)),style:{pointerEvents:!u&&o.isRootMenu?"none":void 0,...c.style}})})});q.displayName=J;var Y=a.forwardRef((e,t)=>{let{onViewportContentChange:n,onViewportContentRemove:r}=k(J,e.__scopeNavigationMenu);return(0,p.N)(()=>{n(e.value,{ref:t,...e})},[e,t,n]),(0,p.N)(()=>()=>r(e.value),[e.value,r]),null}),X="navigationMenu.rootContentDismiss",Z=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:o,triggerRef:i,focusProxyRef:s,wasEscapeCloseRef:u,onRootContentClose:c,onContentFocusOutside:f,...v}=e,m=k(J,n),p=a.useRef(null),g=(0,d.s)(p,t),x=eu(m.baseId,o),w=ed(m.baseId,o),N=j(n),b=a.useRef(null),{onItemDismiss:y}=m;a.useEffect(()=>{let e=p.current;if(m.isRootMenu&&e){let t=()=>{var t;y(),c(),e.contains(document.activeElement)&&(null==(t=i.current)||t.focus())};return e.addEventListener(X,t),()=>e.removeEventListener(X,t)}},[m.isRootMenu,e.value,i,y,c]);let R=a.useMemo(()=>{let e=N().map(e=>e.value);"rtl"===m.dir&&e.reverse();let t=e.indexOf(m.value),n=e.indexOf(m.previousValue),r=o===m.value,a=n===e.indexOf(o);if(!r&&!a)return b.current;let i=(()=>{if(t!==n){if(r&&-1!==n)return t>n?"from-end":"from-start";if(a&&-1!==t)return t>n?"to-start":"to-end"}return null})();return b.current=i,i},[m.previousValue,m.value,m.dir,N,o]);return(0,r.jsx)(en,{asChild:!0,children:(0,r.jsx)(h.qW,{id:w,"aria-labelledby":x,"data-motion":R,"data-orientation":m.orientation,...v,ref:g,disableOutsidePointerEvents:!1,onDismiss:()=>{var e;let t=new Event(X,{bubbles:!0,cancelable:!0});null==(e=p.current)||e.dispatchEvent(t)},onFocusOutside:(0,l.m)(e.onFocusOutside,e=>{var t;f();let n=e.target;(null==(t=m.rootNavigationMenu)?void 0:t.contains(n))&&e.preventDefault()}),onPointerDownOutside:(0,l.m)(e.onPointerDownOutside,e=>{var t;let n=e.target,r=N().some(e=>{var t;return null==(t=e.ref.current)?void 0:t.contains(n)}),a=m.isRootMenu&&(null==(t=m.viewport)?void 0:t.contains(n));(r||a||!m.isRootMenu)&&e.preventDefault()}),onKeyDown:(0,l.m)(e.onKeyDown,e=>{let t=e.altKey||e.ctrlKey||e.metaKey;if("Tab"===e.key&&!t){let t=eo(e.currentTarget),r=document.activeElement,a=t.findIndex(e=>e===r);if(ei(e.shiftKey?t.slice(0,a).reverse():t.slice(a+1,t.length)))e.preventDefault();else{var n;null==(n=s.current)||n.focus()}}}),onEscapeKeyDown:(0,l.m)(e.onEscapeKeyDown,e=>{u.current=!0})})})}),$="NavigationMenuViewport",ee=a.forwardRef((e,t)=>{let{forceMount:n,...a}=e,o=!!k($,e.__scopeNavigationMenu).value;return(0,r.jsx)(f.C,{present:n||o,children:(0,r.jsx)(et,{...a,ref:t})})});ee.displayName=$;var et=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,children:o,...i}=e,u=k($,n),c=(0,d.s)(t,u.onViewportChange),v=_(J,e.__scopeNavigationMenu),[m,h]=a.useState(null),[p,g]=a.useState(null),x=m?(null==m?void 0:m.width)+"px":void 0,w=m?(null==m?void 0:m.height)+"px":void 0,N=!!u.value,b=N?u.value:u.previousValue;return el(p,()=>{p&&h({width:p.offsetWidth,height:p.offsetHeight})}),(0,r.jsx)(s.sG.div,{"data-state":es(N),"data-orientation":u.orientation,...i,ref:c,style:{pointerEvents:!N&&u.isRootMenu?"none":void 0,"--radix-navigation-menu-viewport-width":x,"--radix-navigation-menu-viewport-height":w,...i.style},onPointerEnter:(0,l.m)(e.onPointerEnter,u.onContentEnter),onPointerLeave:(0,l.m)(e.onPointerLeave,ec(u.onContentLeave)),children:Array.from(v.items).map(e=>{let[t,{ref:n,forceMount:a,...o}]=e,i=b===t;return(0,r.jsx)(f.C,{present:a||i,children:(0,r.jsx)(Z,{...o,ref:(0,d.t)(n,e=>{i&&e&&g(e)})})},t)})})}),en=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...a}=e,o=k("FocusGroup",n);return(0,r.jsx)(R.Provider,{scope:n,children:(0,r.jsx)(R.Slot,{scope:n,children:(0,r.jsx)(s.sG.div,{dir:o.dir,...a,ref:t})})})}),er=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],ea=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...a}=e,o=C(n),i=k("FocusGroupItem",n);return(0,r.jsx)(R.ItemSlot,{scope:n,children:(0,r.jsx)(s.sG.button,{...a,ref:t,onKeyDown:(0,l.m)(e.onKeyDown,e=>{if(["Home","End",...er].includes(e.key)){let t=o().map(e=>e.ref.current);if(["rtl"===i.dir?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(e.key)&&t.reverse(),er.includes(e.key)){let n=t.indexOf(e.currentTarget);t=t.slice(n+1)}setTimeout(()=>ei(t)),e.preventDefault()}})})})});function eo(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function ei(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}function el(e,t){let n=(0,g.c)(t);(0,p.N)(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}function es(e){return e?"open":"closed"}function eu(e,t){return"".concat(e,"-trigger-").concat(t)}function ed(e,t){return"".concat(e,"-content-").concat(t)}function ec(e){return t=>"mouse"===t.pointerType?e(t):void 0}var ef=n(9688);let ev=I,em=A,eh=a.forwardRef((e,t)=>{let{className:n,children:a,...o}=e;return(0,r.jsx)(Q,{ref:t,className:(0,ef.QP)("list-none",n),...o,children:a})});eh.displayName=Q.displayName;let ep=a.forwardRef((e,t)=>{let{className:n,children:a,...o}=e;return(0,r.jsx)(V,{ref:t,className:(0,ef.QP)("data-[state=open]:bg-fd-accent/50",n),...o,children:a})});ep.displayName=V.displayName;let eg=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)(q,{ref:t,className:(0,ef.QP)("absolute inset-x-0 top-0 data-[motion=from-end]:animate-fd-enterFromRight data-[motion=from-start]:animate-fd-enterFromLeft data-[motion=to-end]:animate-fd-exitToRight data-[motion=to-start]:animate-fd-exitToLeft",n),...a})});eg.displayName=q.displayName;let ex=H,ew=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:"flex w-full justify-center",children:(0,r.jsx)(ee,{...a,className:(0,ef.QP)("relative h-(--radix-navigation-menu-viewport-height) w-full origin-[top_center] overflow-hidden text-fd-popover-foreground transition-[width,height] duration-300 data-[state=closed]:animate-fd-nav-menu-out data-[state=open]:animate-fd-nav-menu-in",n)})})});ew.displayName=ee.displayName},9035:(e,t,n)=>{Promise.resolve().then(n.bind(n,9949)),Promise.resolve().then(n.bind(n,1053)),Promise.resolve().then(n.bind(n,5403)),Promise.resolve().then(n.bind(n,910)),Promise.resolve().then(n.bind(n,1339)),Promise.resolve().then(n.bind(n,5619)),Promise.resolve().then(n.bind(n,7110))}},e=>{var t=t=>e(e.s=t);e.O(0,[534,595,920,318,882,441,684,358],()=>t(9035)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js b/docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js deleted file mode 100644 index d0b672e7..00000000 --- a/docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[813],{3334:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,6874,23))}},e=>{var s=s=>e(e.s=s);e.O(0,[874,441,684,358],()=>s(3334)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js b/docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js deleted file mode 100644 index 8bf5f407..00000000 --- a/docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{3632:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let l=r(5155),n=r(6395);function o(){return(0,l.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3868:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return r(3632)}])},6395:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}}),r(8229);let l=r(5155);r(2115);let n={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function o(e){let{status:t,message:r}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("title",{children:t+": "+r}),(0,l.jsx)("div",{style:n.error,children:(0,l.jsxs)("div",{children:[(0,l.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,l.jsx)("h1",{className:"next-error-h1",style:n.h1,children:t}),(0,l.jsx)("div",{style:n.desc,children:(0,l.jsx)("h2",{style:n.h2,children:r})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{var t=t=>e(e.s=t);e.O(0,[441,684,358],()=>t(3868)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js b/docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js deleted file mode 100644 index 6c7f444f..00000000 --- a/docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[870],{70:(e,t,r)=>{"use strict";r.d(t,{Breadcrumb:()=>H,Footer:()=>Q,LastUpdate:()=>T,PageArticle:()=>M,PageBody:()=>C,TocPopover:()=>k,TocPopoverContent:()=>P,TocPopoverTrigger:()=>j});var n=r(5155),l=r(2115),o=r(2829),s=r(3536);let a=(0,s.A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),i=(0,s.A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var c=r(9949),d=r(9688),u=r(9697),f=r(8693),h=r(263),p=r(344),m=r(244),x=r(1339),g=r(5455),v=r(8265),b=r(8756),y=r(6441);let w=(0,p.q6)("TocPopoverContext");function j(e){var t,r;let{items:s,...a}=e,{text:i}=(0,u.s9)(),{open:c}=w.use(),h=y.R3(),p=(0,l.useMemo)(()=>s.findIndex(e=>h===e.url.slice(1)),[s,h]),m=(0,f.L)().at(-1),x=-1!==p&&!c;return(0,n.jsxs)(b.R6,{...a,className:(0,d.QP)("flex flex-row items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:shrink-0 [&_svg]:size-4 md:px-6",a.className),children:[(0,n.jsx)(N,{value:(p+1)/s.length,max:1,className:(0,d.QP)(c&&"text-fd-primary")}),(0,n.jsxs)("span",{className:(0,d.QP)("grid flex-1 *:row-start-1 *:col-start-1",c&&"text-fd-foreground"),children:[(0,n.jsx)("span",{className:(0,d.QP)("truncate transition-all",x&&"opacity-0 -translate-y-full pointer-events-none"),children:null!=(r=null==m?void 0:m.name)?r:i.toc}),(0,n.jsx)("span",{className:(0,d.QP)("truncate transition-all",!x&&"opacity-0 translate-y-full pointer-events-none"),children:null==(t=s[p])?void 0:t.title})]}),(0,n.jsx)(o.A,{className:(0,d.QP)("transition-transform",c&&"rotate-180")})]})}function N(e){let{value:t,strokeWidth:r=2,size:l=24,min:o=0,max:s=100,...a}=e,i=ts?s:t,c=(l-r)/2,d=2*Math.PI*c,u=i/s*d,f={cx:l/2,cy:l/2,r:c,fill:"none",strokeWidth:r};return(0,n.jsxs)("svg",{role:"progressbar",viewBox:"0 0 ".concat(l," ").concat(l),"aria-valuenow":i,"aria-valuemin":o,"aria-valuemax":s,...a,children:[(0,n.jsx)("circle",{...f,className:"stroke-current/25"}),(0,n.jsx)("circle",{...f,stroke:"currentColor",strokeDasharray:d,strokeDashoffset:d-u,strokeLinecap:"round",transform:"rotate(-90 ".concat(l/2," ").concat(l/2,")"),className:"transition-all"})]})}function P(e){return(0,n.jsx)(b.Ke,{"data-toc-popover":"",...e,className:(0,d.QP)("flex flex-col max-h-[50vh]",e.className),children:e.children})}function k(e){let t=(0,l.useRef)(null),[r,o]=(0,l.useState)(!1),s=(0,h.c)(),{tocNav:a}=(0,x.v)(),{isTransparent:i}=(0,x.h)(),c=(0,v.J)(e=>{r&&t.current&&!t.current.contains(e.target)&&o(!1)});return(0,l.useEffect)(()=>(window.addEventListener("click",c),()=>{window.removeEventListener("click",c)}),[c]),(0,n.jsx)("div",{...e,className:(0,d.QP)("sticky overflow-visible z-10",a,e.className),style:{...e.style,top:"calc(var(--fd-banner-height) + var(--fd-nav-height))"},children:(0,n.jsx)(w.Provider,{value:(0,l.useMemo)(()=>({open:r,setOpen:o}),[o,r]),children:(0,n.jsx)(b.Nt,{open:r,onOpenChange:o,asChild:!0,children:(0,n.jsx)("header",{ref:t,id:"nd-tocnav",...e,className:(0,d.QP)("border-b border-fd-foreground/10 backdrop-blur-sm transition-colors",(!i||r)&&"bg-fd-background/80",r&&"shadow-lg",s.open&&"max-md:hidden"),children:e.children})})})})}function C(e){let{page:t}=(0,x.v)();return(0,n.jsx)("div",{id:"nd-page",...e,className:(0,d.QP)("flex w-full min-w-0 flex-col",t,e.className),children:e.children})}function M(e){let{article:t}=(0,x.v)();return(0,n.jsx)("article",{...e,className:(0,d.QP)("flex w-full flex-1 flex-col gap-6 px-4 md:px-6 pt-8 md:pt-12 xl:px-12 xl:mx-auto",t,e.className),children:e.children})}function T(e){let{text:t}=(0,u.s9)(),[r,o]=(0,l.useState)("");return(0,l.useEffect)(()=>{o(e.date.toLocaleDateString())},[e.date]),(0,n.jsxs)("p",{className:"text-sm text-fd-muted-foreground",children:[t.lastUpdate," ",r]})}let R=new WeakMap;function Q(e){let{items:t}=e,{root:r}=(0,f.t)(),o=(0,p.a8)(),{previous:s,next:a}=(0,l.useMemo)(()=>{if(t)return t;let e=R.get(r),n=null!=e?e:function e(t){let r=[];return t.forEach(t=>{if("folder"===t.type){t.index&&r.push(t.index),r.push(...e(t.children));return}"page"!==t.type||t.external||r.push(t)}),r}(r.children);R.set(r,n);let l=n.findIndex(e=>(0,g.$)(e.url,o,!1));return -1===l?{}:{previous:n[l-1],next:n[l+1]}},[t,o,r]);return(0,n.jsxs)("div",{className:(0,d.QP)("@container grid gap-4 pb-6",s&&a?"grid-cols-2":"grid-cols-1"),children:[s?(0,n.jsx)(E,{item:s,index:0}):null,a?(0,n.jsx)(E,{item:a,index:1}):null]})}function E(e){var t;let{item:r,index:l}=e,{text:o}=(0,u.s9)();return(0,n.jsxs)(c.default,{href:r.url,className:(0,d.QP)("flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full",1===l&&"text-end"),children:[(0,n.jsxs)("div",{className:(0,d.QP)("inline-flex items-center gap-1.5 font-medium",1===l&&"flex-row-reverse"),children:[(0,n.jsx)(0===l?a:i,{className:"-mx-1 size-4 shrink-0 rtl:rotate-180"}),(0,n.jsx)("p",{children:r.name})]}),(0,n.jsx)("p",{className:"text-fd-muted-foreground truncate",children:null!=(t=r.description)?t:0===l?o.previousPage:o.nextPage})]})}function H(e){let t=(0,f.L)(),{root:r}=(0,f.t)(),o=(0,l.useMemo)(()=>{var n;return(0,m.Pp)(r,t,{includePage:null!=(n=e.includePage)&&n,...e})},[e,t,r]);return 0===o.length?null:(0,n.jsx)("div",{className:"flex flex-row items-center gap-1.5 text-[15px] text-fd-muted-foreground",children:o.map((e,t)=>{let r=(0,d.QP)("truncate",t===o.length-1&&"text-fd-primary font-medium");return(0,n.jsxs)(l.Fragment,{children:[0!==t&&(0,n.jsx)("span",{className:"text-fd-foreground/30",children:"/"}),e.url?(0,n.jsx)(c.default,{href:e.url,className:(0,d.QP)(r,"transition-opacity hover:opacity-80"),children:e.name}):(0,n.jsx)("span",{className:r,children:e.name})]},t)})})}},1639:(e,t,r)=>{"use strict";r.d(t,{j:()=>d});var n=r(5155),l=r(2115),o=r(6441),s=r(3259),a=r(8265);function i(e,t){if(0===t.length||0===e.clientHeight)return[0,0];let r=Number.MAX_VALUE,n=0;for(let l of t){let t=e.querySelector(`a[href="#${l}"]`);if(!t)continue;let o=getComputedStyle(t);r=Math.min(r,t.offsetTop+parseFloat(o.paddingTop)),n=Math.max(n,t.offsetTop+t.clientHeight-parseFloat(o.paddingBottom))}return[r,n-r]}function c(e,t){e.style.setProperty("--fd-top",`${t[0]}px`),e.style.setProperty("--fd-height",`${t[1]}px`)}function d({containerRef:e,...t}){let r=o.Mf(),d=(0,l.useRef)(null),u=(0,a.J)(()=>{e.current&&d.current&&c(d.current,i(e.current,r))});return(0,l.useEffect)(()=>{if(!e.current)return;let t=e.current;u();let r=new ResizeObserver(u);return r.observe(t),()=>{r.disconnect()}},[e,u]),(0,s.T)(r,()=>{e.current&&d.current&&c(d.current,i(e.current,r))}),(0,n.jsx)("div",{ref:d,role:"none",...t})}},1778:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var n=r(5155),l=r(6441),o=r(2115),s=r(9688),a=r(1639),i=r(8070);function c(e){let{items:t}=e,r=(0,o.useRef)(null),[l,s]=(0,o.useState)();return((0,o.useEffect)(()=>{if(!r.current)return;let e=r.current;function n(){if(0===e.clientHeight)return;let r=0,n=0,l=[];for(let o=0;o{l.disconnect()}},[t]),0===t.length)?(0,n.jsx)(i.k,{}):(0,n.jsxs)(n.Fragment,{children:[l?(0,n.jsx)("div",{className:"absolute start-0 top-0 rtl:-scale-x-100",style:{width:l.width,height:l.height,maskImage:'url("data:image/svg+xml,'.concat(encodeURIComponent('')),'")')},children:(0,n.jsx)(a.j,{containerRef:r,className:"mt-(--fd-top) h-(--fd-height) bg-fd-primary transition-all"})}):null,(0,n.jsx)("div",{className:"flex flex-col",ref:r,children:t.map((e,r)=>{var l,o;return(0,n.jsx)(u,{item:e,upper:null==(l=t[r-1])?void 0:l.depth,lower:null==(o=t[r+1])?void 0:o.depth},e.url)})})]})}function d(e){return 10*(e>=3)}function u(e){var t;let{item:r,upper:o=r.depth,lower:a=r.depth}=e,i=d(r.depth),c=d(o),u=d(a);return(0,n.jsxs)(l.Cz,{href:r.url,style:{paddingInlineStart:(t=r.depth)<=2?14:3===t?26:36},className:"prose relative py-1.5 text-sm text-fd-muted-foreground transition-colors [overflow-wrap:anywhere] first:pt-0 last:pb-0 data-[active=true]:text-fd-primary",children:[i!==c?(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",className:"absolute -top-1.5 start-0 size-4 rtl:-scale-x-100",children:(0,n.jsx)("line",{x1:c,y1:"0",x2:i,y2:"12",className:"stroke-fd-foreground/10",strokeWidth:"1"})}):null,(0,n.jsx)("div",{className:(0,s.QP)("absolute inset-y-0 w-px bg-fd-foreground/10",i!==c&&"top-1.5",i!==u&&"bottom-1.5"),style:{insetInlineStart:i}}),r.title]})}},6441:(e,t,r)=>{"use strict";r.d(t,{AnchorProvider:()=>v,N2:()=>g,Cz:()=>b,R3:()=>m,Mf:()=>x});var n=r(5936);r(9189);var l=r(2115);let o=e=>"object"==typeof e&&null!=e&&1===e.nodeType,s=(e,t)=>(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e,a=(e,t)=>{if(e.clientHeight{let t=(e=>{if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}})(e);return!!t&&(t.clientHeightot||o>e&&s=t&&a>=r?o-e-n:s>t&&ar?s-t+l:0,c=e=>{let t=e.parentElement;return null==t?e.getRootNode().host||null:t},d=(e,t)=>{var r,n,l,s;if("undefined"==typeof document)return[];let{scrollMode:d,block:u,inline:f,boundary:h,skipOverflowHiddenElements:p}=t,m="function"==typeof h?h:e=>e!==h;if(!o(e))throw TypeError("Invalid target");let x=document.scrollingElement||document.documentElement,g=[],v=e;for(;o(v)&&m(v);){if((v=c(v))===x){g.push(v);break}null!=v&&v===document.body&&a(v)&&!a(document.documentElement)||null!=v&&a(v,p)&&g.push(v)}let b=null!=(n=null==(r=window.visualViewport)?void 0:r.width)?n:innerWidth,y=null!=(s=null==(l=window.visualViewport)?void 0:l.height)?s:innerHeight,{scrollX:w,scrollY:j}=window,{height:N,width:P,top:k,right:C,bottom:M,left:T}=e.getBoundingClientRect(),{top:R,right:Q,bottom:E,left:H}=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e),I="start"===u||"nearest"===u?k-R:"end"===u?M+E:k+N/2-R+E,S="center"===f?T+P/2-H+Q:"end"===f?C+Q:T-H,A=[];for(let e=0;e=0&&T>=0&&M<=y&&C<=b&&(t===x&&!a(t)||k>=l&&M<=s&&T>=c&&C<=o))break;let h=getComputedStyle(t),p=parseInt(h.borderLeftWidth,10),m=parseInt(h.borderTopWidth,10),v=parseInt(h.borderRightWidth,10),R=parseInt(h.borderBottomWidth,10),Q=0,E=0,H="offsetWidth"in t?t.offsetWidth-t.clientWidth-p-v:0,F="offsetHeight"in t?t.offsetHeight-t.clientHeight-m-R:0,L="offsetWidth"in t?0===t.offsetWidth?0:n/t.offsetWidth:0,W="offsetHeight"in t?0===t.offsetHeight?0:r/t.offsetHeight:0;if(x===t)Q="start"===u?I:"end"===u?I-y:"nearest"===u?i(j,j+y,y,m,R,j+I,j+I+N,N):I-y/2,E="start"===f?S:"center"===f?S-b/2:"end"===f?S-b:i(w,w+b,b,p,v,w+S,w+S+P,P),Q=Math.max(0,Q+j),E=Math.max(0,E+w);else{Q="start"===u?I-l-m:"end"===u?I-s+R+F:"nearest"===u?i(l,s,r,m,R+F,I,I+N,N):I-(l+r/2)+F/2,E="start"===f?S-c-p:"center"===f?S-(c+n/2)+H/2:"end"===f?S-o+v+H:i(c,o,n,p,v+H,S,S+P,P);let{scrollLeft:e,scrollTop:a}=t;Q=0===W?0:Math.max(0,Math.min(a+Q/W,t.scrollHeight-r/W+F)),E=0===L?0:Math.max(0,Math.min(e+E/L,t.scrollWidth-n/L+H)),I+=a-Q,S+=e-E}A.push({el:t,top:Q,left:E})}return A},u=e=>!1===e?{block:"end",inline:"nearest"}:(e=>e===Object(e)&&0!==Object.keys(e).length)(e)?e:{block:"start",inline:"nearest"};var f=r(5155),h=(0,l.createContext)([]),p=(0,l.createContext)({current:null});function m(){return(0,l.useContext)(h).at(-1)}function x(){return(0,l.useContext)(h)}function g(e){let{containerRef:t,children:r}=e;return(0,f.jsx)(p.Provider,{value:t,children:r})}function v(e){let{toc:t,single:r=!0,children:n}=e,o=(0,l.useMemo)(()=>t.map(e=>e.url.split("#")[1]),[t]);return(0,f.jsx)(h.Provider,{value:function(e,t){let[r,n]=(0,l.useState)([]);return(0,l.useEffect)(()=>{let r=[],l=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&!r.includes(t.target.id)?r=[...r,t.target.id]:!t.isIntersecting&&r.includes(t.target.id)&&(r=r.filter(e=>e!==t.target.id));r.length>0&&n(r)},{rootMargin:t?"-80px 0% -70% 0%":"-20px 0% -40% 0%",threshold:1});function o(){let r=document.scrollingElement;r&&(0===r.scrollTop&&t?n(e.slice(0,1)):r.scrollTop+r.clientHeight>=r.scrollHeight-6&&n(r=>r.length>0&&!t?e.slice(e.indexOf(r[0])):e.slice(-1)))}for(let t of e){let e=document.getElementById(t);e&&l.observe(e)}return o(),window.addEventListener("scroll",o),()=>{window.removeEventListener("scroll",o),l.disconnect()}},[t,e]),t?r.slice(0,1):r}(o,r),children:n})}var b=(0,l.forwardRef)((e,t)=>{let{onActiveChange:r,...o}=e,s=(0,l.useContext)(p),a=x(),i=(0,l.useRef)(null),c=function(){for(var e=arguments.length,t=Array(e),r=0;r{t.forEach(t=>{"function"==typeof t?t(e):null!==t&&(t.current=e)})}}(i,t),h=a.includes(o.href.slice(1));return(0,n.T)(h,e=>{let t=i.current;t&&(e&&s.current&&function(e,t){if(!e.isConnected||!(e=>{let t=e;for(;t&&t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof ShadowRoot?t.parentNode.host:t.parentNode}return!1})(e))return;let r=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e);if("object"==typeof t&&"function"==typeof t.behavior)return t.behavior(d(e,t));let n="boolean"==typeof t||null==t?void 0:t.behavior;for(let{el:l,top:o,left:s}of d(e,u(t))){let e=o-r.top+r.bottom,t=s-r.left+r.right;l.scroll({top:e,left:t,behavior:n})}}(t,{behavior:"smooth",block:"center",inline:"center",scrollMode:"always",boundary:s.current}),null==r||r(e))}),(0,f.jsx)("a",{ref:c,"data-active":h,...o,children:o.children})});b.displayName="TOCItem"},6827:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Accordion:()=>c,AccordionContent:()=>f,AccordionItem:()=>d,AccordionTrigger:()=>u});var n=r(5155);r(2115);var l=r(2292),o=r(3359),s=r(2596),a=r(9688);function i(){for(var e=arguments.length,t=Array(e),r=0;rsvg]:rotate-180",t),...s,children:[r,(0,n.jsx)(o.A,{className:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"})]})})}function f(e){let{className:t,children:r,...o}=e;return(0,n.jsx)(l.UC,{"data-slot":"accordion-content",className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",...o,children:(0,n.jsx)("div",{className:i("pt-0 pb-4",t),children:r})})}},7242:(e,t,r)=>{"use strict";r.d(t,{CodeBlock:()=>f,Pre:()=>u});var n=r(5155),l=r(3536);let o=(0,l.A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),s=(0,l.A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var a=r(2115),i=r(9688),c=r(5675),d=r(7936);let u=(0,a.forwardRef)((e,t)=>{let{className:r,...l}=e;return(0,n.jsx)("pre",{ref:t,className:(0,i.QP)("p-4 focus-visible:outline-none",r),...l,children:l.children})});u.displayName="Pre";let f=(0,a.forwardRef)((e,t)=>{let{title:r,allowCopy:l=!0,keepBackground:o=!1,icon:s,viewportProps:d,...u}=e,f=(0,a.useRef)(null),p=(0,a.useCallback)(()=>{var e,t;let r=null==(e=f.current)?void 0:e.getElementsByTagName("pre").item(0);if(!r)return;let n=r.cloneNode(!0);n.querySelectorAll(".nd-copy-ignore").forEach(e=>{e.remove()}),navigator.clipboard.writeText(null!=(t=n.textContent)?t:"")},[]);return(0,n.jsxs)("figure",{ref:t,...u,className:(0,i.QP)("not-prose group fd-codeblock relative my-4 overflow-hidden rounded-lg border bg-fd-secondary/50 text-sm",o&&"bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)",u.className),children:[r?(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b bg-fd-muted px-4 py-1.5",children:[s?(0,n.jsx)("div",{className:"text-fd-muted-foreground [&_svg]:size-3.5",dangerouslySetInnerHTML:"string"==typeof s?{__html:s}:void 0,children:"string"!=typeof s?s:null}):null,(0,n.jsx)("figcaption",{className:"flex-1 truncate text-fd-muted-foreground",children:r}),l?(0,n.jsx)(h,{className:"-me-2",onCopy:p}):null]}):l&&(0,n.jsx)(h,{className:"absolute right-2 top-2 z-[2] backdrop-blur-md",onCopy:p}),(0,n.jsxs)(c.FK,{ref:f,dir:"ltr",children:[(0,n.jsx)(c.Gl,{...d,className:(0,i.QP)("max-h-[600px]",null==d?void 0:d.className),children:u.children}),(0,n.jsx)(c.$H,{orientation:"horizontal"})]})]})});function h(e){let{className:t,onCopy:r,...l}=e,[c,u]=function(e){let[t,r]=(0,a.useState)(!1),n=(0,a.useRef)(null),l=(0,a.useRef)(e);l.current=e;let o=(0,a.useCallback)(()=>{n.current&&window.clearTimeout(n.current),n.current=window.setTimeout(()=>{r(!1)},1500),l.current(),r(!0)},[]);return(0,a.useEffect)(()=>()=>{n.current&&window.clearTimeout(n.current)},[]),[t,o]}(r);return(0,n.jsxs)("button",{type:"button",className:(0,i.QP)((0,d.r)({color:"ghost"}),"transition-opacity group-hover:opacity-100 [&_svg]:size-3.5",!c&&"[@media(hover:hover)]:opacity-0",t),"aria-label":c?"Copied Text":"Copy Text",onClick:u,...l,children:[(0,n.jsx)(o,{className:(0,i.QP)("transition-transform",!c&&"scale-0")}),(0,n.jsx)(s,{className:(0,i.QP)("absolute transition-transform",c&&"scale-0")})]})}f.displayName="CodeBlock"},8070:(e,t,r)=>{"use strict";r.d(t,{TOCItems:()=>p,TOCScrollArea:()=>h,Toc:()=>u,k:()=>f});var n=r(5155),l=r(6441),o=r(2115),s=r(9688),a=r(9697),i=r(1639),c=r(5675),d=r(1339);function u(e){let{toc:t}=(0,d.v)();return(0,n.jsx)("div",{id:"nd-toc",...e,className:(0,s.QP)("sticky top-[calc(var(--fd-banner-height)+var(--fd-nav-height))] h-(--fd-toc-height) pb-2 pt-12",t,e.className),style:{...e.style,"--fd-toc-height":"calc(100dvh - var(--fd-banner-height) - var(--fd-nav-height))"},children:(0,n.jsx)("div",{className:"flex h-full w-(--fd-toc-width) max-w-full flex-col gap-3 pe-4",children:e.children})})}function f(){let{text:e}=(0,a.s9)();return(0,n.jsx)("div",{className:"rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",children:e.tocNoHeadings})}function h(e){let{isMenu:t,...r}=e,a=(0,o.useRef)(null);return(0,n.jsx)(c.FK,{...r,className:(0,s.QP)("flex flex-col ps-px",r.className),children:(0,n.jsx)(c.Gl,{ref:a,className:(0,s.QP)("relative min-h-0 text-sm",t&&"[mask-image:linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] px-4 md:px-6 py-2"),children:(0,n.jsx)(l.N2,{containerRef:a,children:r.children})})})}function p(e){let{items:t}=e,r=(0,o.useRef)(null);return 0===t.length?(0,n.jsx)(f,{}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.j,{containerRef:r,className:"absolute top-(--fd-top) h-(--fd-height) w-px bg-fd-primary transition-all"}),(0,n.jsx)("div",{ref:r,className:"flex flex-col border-s border-fd-foreground/10",children:t.map(e=>(0,n.jsx)(m,{item:e},e.url))})]})}function m(e){let{item:t}=e;return(0,n.jsx)(l.Cz,{href:t.url,className:(0,s.QP)("prose py-1.5 text-sm text-fd-muted-foreground transition-colors [overflow-wrap:anywhere] first:pt-0 last:pb-0 data-[active=true]:text-fd-primary",t.depth<=2&&"ps-3",3===t.depth&&"ps-6",t.depth>=4&&"ps-8"),children:t.title})}},8265:(e,t,r)=>{"use strict";r.d(t,{J:()=>l}),r(9189);var n=r(2115);function l(e){let t=(0,n.useRef)(e);return t.current=e,(0,n.useCallback)(function(){for(var e=arguments.length,r=Array(e),n=0;n{Promise.resolve().then(r.bind(r,6827)),Promise.resolve().then(r.bind(r,344)),Promise.resolve().then(r.bind(r,9949)),Promise.resolve().then(r.bind(r,6441)),Promise.resolve().then(r.bind(r,7242)),Promise.resolve().then(r.bind(r,1778)),Promise.resolve().then(r.bind(r,8070)),Promise.resolve().then(r.bind(r,9697)),Promise.resolve().then(r.bind(r,70))}},e=>{var t=t=>e(e.s=t);e.O(0,[534,595,318,997,441,684,358],()=>t(8521)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js b/docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js deleted file mode 100644 index 1b6abb73..00000000 --- a/docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[499],{2397:(e,t,r)=>{"use strict";r.r(t),r.d(t,{CollapsibleSidebar:()=>y,Sidebar:()=>N,SidebarCollapseTrigger:()=>M,SidebarFolder:()=>C,SidebarFolderContent:()=>z,SidebarFolderLink:()=>T,SidebarFolderTrigger:()=>A,SidebarFooter:()=>P,SidebarHeader:()=>w,SidebarItem:()=>Q,SidebarPageTree:()=>I,SidebarSeparator:()=>S,SidebarViewport:()=>k});var n=r(5155);let a=(0,r(3536).A)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);var s=r(2829),l=r(5547),i=r(344),d=r(2115),o=r(9949),c=r(3259),u=r(9688),m=r(5675),h=r(5455),x=r(8756),f=r(263),p=r(2085),v=r(8693);let b=(0,p.F)("relative flex flex-row items-center gap-2 rounded-md p-2 text-start text-fd-muted-foreground [overflow-wrap:anywhere] md:py-1.5 [&_svg]:size-4 [&_svg]:shrink-0",{variants:{active:{true:"bg-fd-primary/10 text-fd-primary",false:"transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none"}}}),g=(0,d.createContext)(null),j=(0,d.createContext)(null);function y(e){let{collapsed:t}=(0,f.c)(),[r,a]=(0,d.useState)(!1),s=(0,d.useRef)(0),l=(0,d.useRef)(0);return(0,c.T)(t,()=>{a(!1),l.current=Date.now()+150}),(0,n.jsx)(N,{...e,onPointerEnter:e=>{!t||"touch"===e.pointerType||l.current>Date.now()||(window.clearTimeout(s.current),a(!0))},onPointerLeave:e=>{t&&"touch"!==e.pointerType&&(window.clearTimeout(s.current),s.current=window.setTimeout(()=>{a(!1),l.current=Date.now()+150},Math.min(e.clientX,document.body.clientWidth-e.clientX)>100?0:500))},"data-collapsed":t,className:(0,u.QP)("md:transition-all",t&&"md:-me-(--fd-sidebar-width) md:-translate-x-(--fd-sidebar-offset) rtl:md:translate-x-(--fd-sidebar-offset)",t&&r&&"z-50 md:translate-x-0",t&&!r&&"md:opacity-0",e.className),style:{"--fd-sidebar-offset":"calc(var(--fd-sidebar-width) - 6px)",...e.style}})}function N(e){let{defaultOpenLevel:t=0,prefetch:r=!0,inner:a,...s}=e,i=(0,d.useMemo)(()=>({defaultOpenLevel:t,prefetch:r,level:1}),[t,r]);return(0,n.jsx)(g.Provider,{value:i,children:(0,n.jsx)(l.Pg,{id:"nd-sidebar",removeScrollOn:"(width < 768px)",...s,className:(0,u.QP)("fixed top-[calc(var(--fd-banner-height)+var(--fd-nav-height))] z-20 bg-fd-card text-sm md:sticky md:h-(--fd-sidebar-height)","max-md:inset-x-0 max-md:bottom-0 max-md:bg-fd-background/80 max-md:text-[15px] max-md:backdrop-blur-lg max-md:data-[open=false]:invisible",s.className),style:{...s.style,"--fd-sidebar-height":"calc(100dvh - var(--fd-banner-height) - var(--fd-nav-height))"},children:(0,n.jsx)("div",{...a,className:(0,u.QP)("flex size-full max-w-full flex-col pt-2 md:ms-auto md:w-(--fd-sidebar-width) md:border-e md:pt-4",null==a?void 0:a.className),children:s.children})})})}function w(e){return(0,n.jsx)("div",{...e,className:(0,u.QP)("flex flex-col gap-3 px-4 empty:hidden",e.className),children:e.children})}function P(e){return(0,n.jsx)("div",{...e,className:(0,u.QP)("flex flex-col border-t px-4 py-3 empty:hidden",e.className),children:e.children})}function k(e){return(0,n.jsx)(m.FK,{...e,className:(0,u.QP)("h-full",e.className),children:(0,n.jsx)(m.Gl,{className:"p-4",style:{maskImage:"linear-gradient(to bottom, transparent, white 12px)"},children:e.children})})}function S(e){let{level:t}=_();return(0,n.jsx)("p",{...e,className:(0,u.QP)("inline-flex items-center gap-2 mb-2 px-2 text-sm font-medium [&_svg]:size-4 [&_svg]:shrink-0",e.className),style:{paddingInlineStart:q(t),...e.style},children:e.children})}function Q(e){let{icon:t,...r}=e,s=(0,i.a8)(),l=void 0!==r.href&&(0,h.$)(r.href,s,!1),{prefetch:d,level:c}=_();return(0,n.jsxs)(o.default,{...r,"data-active":l,className:(0,u.QP)(b({active:l}),r.className),prefetch:d,style:{paddingInlineStart:q(c),...r.style},children:[(0,n.jsx)(E,{level:c,active:l}),null!=t?t:r.external?(0,n.jsx)(a,{}):null,r.children]})}function C(e){let{defaultOpen:t=!1,...r}=e,[a,s]=(0,d.useState)(t);return(0,c.T)(t,e=>{e&&s(e)}),(0,n.jsx)(x.Nt,{open:a,onOpenChange:s,...r,children:(0,n.jsx)(j.Provider,{value:(0,d.useMemo)(()=>({open:a,setOpen:s}),[a]),children:r.children})})}function A(e){let{level:t}=_(),{open:r}=F();return(0,n.jsxs)(x.R6,{...e,className:(0,u.QP)(b({active:!1}),"w-full"),style:{paddingInlineStart:q(t),...e.style},children:[(0,n.jsx)(E,{level:t}),e.children,(0,n.jsx)(s.A,{"data-icon":!0,className:(0,u.QP)("ms-auto transition-transform",!r&&"-rotate-90")})]})}function T(e){let{open:t,setOpen:r}=F(),{prefetch:a,level:l}=_(),d=(0,i.a8)(),c=void 0!==e.href&&(0,h.$)(e.href,d,!1);return(0,n.jsxs)(o.default,{...e,"data-active":c,className:(0,u.QP)(b({active:c}),"w-full",e.className),onClick:e=>{e.target.hasAttribute("data-icon")?(r(e=>!e),e.preventDefault()):r(e=>!c||!e)},prefetch:a,style:{paddingInlineStart:q(l),...e.style},children:[(0,n.jsx)(E,{level:l,active:c}),e.children,(0,n.jsx)(s.A,{"data-icon":!0,className:(0,u.QP)("ms-auto transition-transform",!t&&"-rotate-90")})]})}function z(e){let t=_();return(0,n.jsx)(x.Ke,{...e,className:(0,u.QP)("relative",e.className),children:(0,n.jsxs)(g.Provider,{value:(0,d.useMemo)(()=>({...t,level:t.level+1}),[t]),children:[(0,n.jsx)("div",{className:"absolute w-px inset-y-0 bg-fd-border start-3"}),e.children]})})}function M(e){let{collapsed:t,setCollapsed:r}=(0,f.c)();return(0,n.jsx)("button",{type:"button","aria-label":"Collapse Sidebar","data-collapsed":t,...e,onClick:()=>{r(e=>!e)},children:e.children})}function F(){let e=(0,d.useContext)(j);if(!e)throw Error("Missing sidebar folder");return e}function _(){let e=(0,d.useContext)(g);if(!e)throw Error(" component required.");return e}function I(e){let{root:t}=(0,v.t)();return(0,d.useMemo)(()=>{var r;let{Separator:a,Item:s,Folder:l}=null!=(r=e.components)?r:{};return(0,n.jsx)(d.Fragment,{children:function e(t,r){return t.map((t,i)=>{if("separator"===t.type)return a?(0,n.jsx)(a,{item:t},i):(0,n.jsxs)(S,{className:(0,u.QP)(0!==i&&"mt-8"),children:[t.icon,t.name]},i);if("folder"===t.type){let a=e(t.children,r+1);return l?(0,n.jsx)(l,{item:t,level:r,children:a},i):(0,n.jsx)(O,{item:t,children:a},i)}return s?(0,n.jsx)(s,{item:t},t.url):(0,n.jsx)(Q,{href:t.url,external:t.external,icon:t.icon,children:t.name},t.url)})}(t.children,1)},t.$id)},[e.components,t])}function O(e){var t;let{item:r,...a}=e,{defaultOpenLevel:s,level:l}=_(),i=(0,v.L)();return(0,n.jsxs)(C,{defaultOpen:(null!=(t=r.defaultOpen)?t:s>=l)||i.includes(r),children:[r.index?(0,n.jsxs)(T,{href:r.index.url,external:r.index.external,...a,children:[r.icon,r.name]}):(0,n.jsxs)(A,{...a,children:[r.icon,r.name]}),(0,n.jsx)(z,{children:a.children})]})}function q(e){return"calc(var(--spacing) * ".concat((e>1?e:0)*2+2,")")}function E(e){let{level:t,active:r}=e;return t<=1?null:(0,n.jsx)("div",{className:(0,u.QP)("absolute w-px inset-y-2 z-[2] start-3",r&&"bg-fd-primary")})}},6827:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Accordion:()=>o,AccordionContent:()=>m,AccordionItem:()=>c,AccordionTrigger:()=>u});var n=r(5155);r(2115);var a=r(2292),s=r(3359),l=r(2596),i=r(9688);function d(){for(var e=arguments.length,t=Array(e),r=0;rsvg]:rotate-180",t),...l,children:[r,(0,n.jsx)(s.A,{className:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"})]})})}function m(e){let{className:t,children:r,...s}=e;return(0,n.jsx)(a.UC,{"data-slot":"accordion-content",className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",...s,children:(0,n.jsx)("div",{className:d("pt-0 pb-4",t),children:r})})}},7531:(e,t,r)=>{Promise.resolve().then(r.bind(r,6827)),Promise.resolve().then(r.bind(r,9949)),Promise.resolve().then(r.bind(r,1053)),Promise.resolve().then(r.bind(r,8870)),Promise.resolve().then(r.bind(r,5403)),Promise.resolve().then(r.bind(r,2397)),Promise.resolve().then(r.bind(r,910)),Promise.resolve().then(r.bind(r,1339)),Promise.resolve().then(r.bind(r,8693)),Promise.resolve().then(r.bind(r,9379)),Promise.resolve().then(r.bind(r,4657))},8870:(e,t,r)=>{"use strict";r.d(t,{RootToggle:()=>m});var n=r(5155);let a=(0,r(3536).A)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var s=r(2115),l=r(9949),i=r(344),d=r(9688),o=r(5455),c=r(263),u=r(408);function m(e){let{options:t,placeholder:r,...m}=e,[x,f]=(0,s.useState)(!1),{closeOnRedirect:p}=(0,c.c)(),v=(0,i.a8)(),b=(0,s.useMemo)(()=>t.findLast(e=>e.urls?e.urls.has(v.endsWith("/")?v.slice(0,-1):v):(0,o.$)(e.url,v,!0)),[t,v]),g=()=>{p.current=!1,f(!1)},j=b?(0,n.jsx)(h,{...b}):r;return(0,n.jsxs)(u.AM,{open:x,onOpenChange:f,children:[j?(0,n.jsxs)(u.Wv,{...m,className:(0,d.QP)("flex items-center gap-2.5 rounded-lg pe-2 hover:text-fd-accent-foreground",m.className),children:[j,(0,n.jsx)(a,{className:"size-4 text-fd-muted-foreground"})]}):null,(0,n.jsx)(u.hl,{className:"w-(--radix-popover-trigger-width) overflow-hidden p-0",children:t.map(e=>{var t;return(0,n.jsx)(l.default,{href:e.url,onClick:g,...e.props,className:(0,d.QP)("flex w-full flex-row items-center gap-2 px-2 py-1.5",b===e?"bg-fd-accent text-fd-accent-foreground":"hover:bg-fd-accent/50",null==(t=e.props)?void 0:t.className),children:(0,n.jsx)(h,{...e})},e.url)})})]})}function h(e){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(n.Fragment,{children:e.icon}),(0,n.jsxs)("div",{className:"flex-1 text-start",children:[(0,n.jsx)("p",{className:"text-sm font-medium",children:e.title}),e.description?(0,n.jsx)("p",{className:"text-xs text-fd-muted-foreground",children:e.description}):null]})]})}},9379:(e,t,r)=>{"use strict";r.d(t,{CollapsibleControl:()=>v,Navbar:()=>f,NavbarSidebarTrigger:()=>p});var n=r(5155),a=r(3536);let s=(0,a.A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),l=(0,a.A)("menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]),i=(0,a.A)("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);var d=r(9688),o=r(7936),c=r(263),u=r(1339),m=r(5547),h=r(2397),x=r(5403);function f(e){let{open:t}=(0,c.c)(),{isTransparent:r}=(0,u.h)();return(0,n.jsx)("header",{id:"nd-subnav",...e,className:(0,d.QP)("sticky top-(--fd-banner-height) z-30 flex h-14 items-center px-4 border-b border-fd-foreground/10 transition-colors backdrop-blur-sm md:px-6",(!r||t)&&"bg-fd-background/80",e.className),children:e.children})}function p(e){let{open:t}=(0,c.c)();return(0,n.jsx)(m.x2,{...e,className:(0,d.QP)((0,o.r)({color:"ghost",size:"icon"}),e.className),children:t?(0,n.jsx)(s,{}):(0,n.jsx)(l,{})})}function v(){let{collapsed:e}=(0,c.c)();if(e)return(0,n.jsxs)("div",{className:"fixed flex flex-row animate-fd-fade-in rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10 xl:start-4 max-xl:end-4",style:{top:"calc(var(--fd-banner-height) + var(--fd-tocnav-height) + var(--spacing) * 4)"},children:[(0,n.jsx)(h.SidebarCollapseTrigger,{className:(0,d.QP)((0,o.r)({color:"ghost",size:"icon-sm"}),"rounded-lg"),children:(0,n.jsx)(i,{})}),(0,n.jsx)(x.SearchToggle,{size:"icon-sm",className:"rounded-lg"})]})}}},e=>{var t=t=>e(e.s=t);e.O(0,[534,595,920,318,882,997,441,684,358],()=>t(7531)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/layout-c6241da76fad0b40.js b/docs/_next/static/chunks/app/layout-c6241da76fad0b40.js deleted file mode 100644 index ac576dbc..00000000 --- a/docs/_next/static/chunks/app/layout-c6241da76fad0b40.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{3905:()=>{},4311:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3905,23)),Promise.resolve().then(n.bind(n,3834)),Promise.resolve().then(n.t.bind(n,5299,23))}},e=>{var s=s=>e(e.s=s);e.O(0,[605,595,874,176,441,684,358],()=>s(4311)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/framework-f593a28cde54158e.js b/docs/_next/static/chunks/framework-f593a28cde54158e.js deleted file mode 100644 index 3467b3f9..00000000 --- a/docs/_next/static/chunks/framework-f593a28cde54158e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[593],{2167:(e,t,n)=>{var r=n(5364),l=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),c=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),h=Symbol.iterator,g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,v={};function b(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}function k(){}function w(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},k.prototype=b.prototype;var S=w.prototype=new k;S.constructor=w,y(S,b.prototype),S.isPureReactComponent=!0;var x=Array.isArray,E={H:null,A:null,T:null,S:null,V:null},C=Object.prototype.hasOwnProperty;function _(e,t,n,r,a,o){return{$$typeof:l,type:e,key:t,ref:void 0!==(n=o.ref)?n:null,props:o}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===l}var z=/\/+/g;function N(e,t){var n,r;return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36)}function T(){}function L(e,t,n){if(null==e)return e;var r=[],o=0;return!function e(t,n,r,o,i){var u,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case l:case a:d=!0;break;case m:return e((d=t._init)(t._payload),n,r,o,i)}}if(d)return i=i(t),d=""===o?"."+N(t,0):o,x(i)?(r="",null!=d&&(r=d.replace(z,"$&/")+"/"),e(i,n,r,"",function(e){return e})):null!=i&&(P(i)&&(u=i,s=r+(null==i.key||t&&t.key===i.key?"":(""+i.key).replace(z,"$&/")+"/")+d,i=_(u.type,s,void 0,void 0,void 0,u.props)),n.push(i)),1;d=0;var p=""===o?".":o+":";if(x(t))for(var g=0;g{e.exports=n(5919)},4232:(e,t,n)=>{e.exports=n(2167)},4279:(e,t,n)=>{var r,l=n(5364),a=n(2786),o=n(4232),i=n(8477);function u(e){var t="https://react.dev/errors/"+e;if(1I||(e.current=M[I],M[I]=null,I--)}function H(e,t){M[++I]=e.current,e.current=t}var $=U(null),V=U(null),B=U(null),Q=U(null);function W(e,t){switch(H(B,t),H(V,e),H($,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?si(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=su(t=si(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j($),H($,e)}function q(){j($),j(V),j(B)}function K(e){null!==e.memoizedState&&H(Q,e);var t=$.current,n=su(t,e.type);t!==n&&(H(V,e),H($,n))}function Y(e){V.current===e&&(j($),j(V)),Q.current===e&&(j(Q),sX._currentValue=F)}var G=Object.prototype.hasOwnProperty,X=a.unstable_scheduleCallback,Z=a.unstable_cancelCallback,J=a.unstable_shouldYield,ee=a.unstable_requestPaint,et=a.unstable_now,en=a.unstable_getCurrentPriorityLevel,er=a.unstable_ImmediatePriority,el=a.unstable_UserBlockingPriority,ea=a.unstable_NormalPriority,eo=a.unstable_LowPriority,ei=a.unstable_IdlePriority,eu=a.log,es=a.unstable_setDisableYieldValue,ec=null,ef=null;function ed(e){if("function"==typeof eu&&es(e),ef&&"function"==typeof ef.setStrictMode)try{ef.setStrictMode(ec,e)}catch(e){}}var ep=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(em(e)/eh|0)|0},em=Math.log,eh=Math.LN2,eg=256,ey=4194304;function ev(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function eb(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=0x7ffffff&r;return 0!==i?0!=(r=i&~a)?l=ev(r):0!=(o&=i)?l=ev(o):n||0!=(n=i&~e)&&(l=ev(n)):0!=(i=r&~a)?l=ev(i):0!==o?l=ev(o):n||0!=(n=r&~e)&&(l=ev(n)),0===l?0:0!==t&&t!==l&&0==(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:l}function ek(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function ew(){var e=eg;return 0==(4194048&(eg<<=1))&&(eg=256),e}function eS(){var e=ey;return 0==(0x3c00000&(ey<<=1))&&(ey=4194304),e}function ex(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function eE(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function eC(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-ep(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&n}function e_(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ep(n),l=1<)":-1l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{e2=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?e1(n):""}function e4(e){try{var t="";do t+=function(e){switch(e.tag){case 26:case 27:case 5:return e1(e.type);case 16:return e1("Lazy");case 13:return e1("Suspense");case 19:return e1("SuspenseList");case 0:case 15:return e3(e.type,!1);case 11:return e3(e.type.render,!1);case 1:return e3(e.type,!0);case 31:return e1("Activity");default:return""}}(e),e=e.return;while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function e8(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function e6(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function e5(e){e._valueTracker||(e._valueTracker=function(e){var t=e6(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var l=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function e9(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=e6(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function e7(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var te=/[\n"\\]/g;function tt(e){return e.replace(te,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function tn(e,t,n,r,l,a,o,i){e.name="",null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o?e.type=o:e.removeAttribute("type"),null!=t?"number"===o?(0===t&&""===e.value||e.value!=t)&&(e.value=""+e8(t)):e.value!==""+e8(t)&&(e.value=""+e8(t)):"submit"!==o&&"reset"!==o||e.removeAttribute("value"),null!=t?tl(e,o,e8(t)):null!=n?tl(e,o,e8(n)):null!=r&&e.removeAttribute("value"),null==l&&null!=a&&(e.defaultChecked=!!a),null!=l&&(e.checked=l&&"function"!=typeof l&&"symbol"!=typeof l),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+e8(i):e.removeAttribute("name")}function tr(e,t,n,r,l,a,o,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(("submit"===a||"reset"===a)&&null==t)return;n=null!=n?""+e8(n):"",t=null!=t?""+e8(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:l)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.name=o)}function tl(e,t,n){"number"===t&&e7(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function ta(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l=ne),nr=!1;function nl(e,t){switch(e){case"keyup":return -1!==t9.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function na(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var no=!1,ni={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function nu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!ni[e.type]:"textarea"===t}function ns(e,t,n,r){tv?tb?tb.push(r):tb=[r]:tv=r,0<(t=u3(t,"onChange")).length&&(n=new tH("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var nc=null,nf=null;function nd(e){uY(e,0)}function np(e){if(e9(e$(e)))return e}function nm(e,t){if("change"===e)return t}var nh=!1;if(tE){if(tE){var ng="oninput"in document;if(!ng){var ny=document.createElement("div");ny.setAttribute("oninput","return;"),ng="function"==typeof ny.oninput}r=ng}else r=!1;nh=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=n_(r)}}function nz(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nN(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nT=tE&&"documentMode"in document&&11>=document.documentMode,nL=null,nO=null,nR=null,nD=!1;function nA(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nD||null==nL||nL!==e7(r)||(r="selectionStart"in(r=nL)&&nN(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nR&&nC(nR,r)||(nR=r,0<(r=u3(nO,"onSelect")).length&&(t=new tH("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=nL)))}function nF(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var nM={animationend:nF("Animation","AnimationEnd"),animationiteration:nF("Animation","AnimationIteration"),animationstart:nF("Animation","AnimationStart"),transitionrun:nF("Transition","TransitionRun"),transitionstart:nF("Transition","TransitionStart"),transitioncancel:nF("Transition","TransitionCancel"),transitionend:nF("Transition","TransitionEnd")},nI={},nU={};function nj(e){if(nI[e])return nI[e];if(!nM[e])return e;var t,n=nM[e];for(t in n)if(n.hasOwnProperty(t)&&t in nU)return nI[e]=n[t];return e}tE&&(nU=document.createElement("div").style,"AnimationEvent"in window||(delete nM.animationend.animation,delete nM.animationiteration.animation,delete nM.animationstart.animation),"TransitionEvent"in window||delete nM.transitionend.transition);var nH=nj("animationend"),n$=nj("animationiteration"),nV=nj("animationstart"),nB=nj("transitionrun"),nQ=nj("transitionstart"),nW=nj("transitioncancel"),nq=nj("transitionend"),nK=new Map,nY="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function nG(e,t){nK.set(e,t),eq(t,[e])}nY.push("scrollEnd");var nX=new WeakMap;function nZ(e,t){if("object"==typeof e&&null!==e){var n=nX.get(e);return void 0!==n?n:(t={value:e,source:t,stack:e4(t)},nX.set(e,t),t)}return{value:e,source:t,stack:e4(t)}}var nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=o,l-=o,rh=1<<32-ep(t)+l|n<a?a:8;var o=D.T,i={};D.T=i,aj(e,!1,t,n);try{var u=l(),s=D.S;if(null!==s&&s(i,u),null!==u&&"object"==typeof u&&"function"==typeof u.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},u.then(function(){f.status="fulfilled",f.value=r;for(var e=0;eh?(g=f,f=null):g=f.sibling;var y=p(l,f,i[h],u);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(l,f),o=a(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===i.length)return n(l,f),rx&&ry(l,h),s;if(null===f){for(;hg?(y=h,h=null):y=h.sibling;var b=p(l,h,v.value,s);if(null===b){null===h&&(h=y);break}e&&h&&null===b.alternate&&t(l,h),o=a(b,o,g),null===f?c=b:f.sibling=b,f=b,h=y}if(v.done)return n(l,h),rx&&ry(l,g),c;if(null===h){for(;!v.done;g++,v=i.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return rx&&ry(l,g),c}for(h=r(h);!v.done;g++,v=i.next())null!==(v=m(h,l,g,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return t(l,e)}),rx&&ry(l,g),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return i(s,c,aG(f),v);if(f.$$typeof===S)return i(s,c,rQ(s,f),v);aZ(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(n(s,c.sibling),(v=l(c,f)).return=s):(n(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):n(s,c)}(i,s,c,f);return aK=null,v}catch(e){if(e===r7||e===lt)throw e;var b=re(29,e,null,i.mode);return b.lanes=f,b.return=i,b}finally{}}}var a1=a0(!0),a2=a0(!1),a3=U(null),a4=null;function a8(e){var t=e.alternate;H(a7,1&a7.current),H(a3,e),null===a4&&(null===t||null!==lw.current?a4=e:null!==t.memoizedState&&(a4=e))}function a6(e){if(22===e.tag){if(H(a7,a7.current),H(a3,e),null===a4){var t=e.alternate;null!==t&&null!==t.memoizedState&&(a4=e)}}else a5(e)}function a5(){H(a7,a7.current),H(a3,a3.current)}function a9(e){j(a3),a4===e&&(a4=null),j(a7)}var a7=U(0);function oe(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||sb(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function ot(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:p({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var on={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=i6(),l=ld(r);l.payload=t,null!=n&&(l.callback=n),null!==(t=lp(e,l,r))&&(i9(t,e,r),lm(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=i6(),l=ld(r);l.tag=1,l.payload=t,null!=n&&(l.callback=n),null!==(t=lp(e,l,r))&&(i9(t,e,r),lm(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=i6(),r=ld(n);r.tag=2,null!=t&&(r.callback=t),null!==(t=lp(e,r,n))&&(i9(t,e,n),lm(t,e,n))}};function or(e,t,n,r,l,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,o):!t.prototype||!t.prototype.isPureReactComponent||!nC(n,r)||!nC(l,a)}function ol(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&on.enqueueReplaceState(t,t.state,null)}function oa(e,t){var n=t;if("ref"in t)for(var r in n={},t)"ref"!==r&&(n[r]=t[r]);if(e=e.defaultProps)for(var l in n===t&&(n=p({},n)),e)void 0===n[l]&&(n[l]=e[l]);return n}var oo="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof l&&"function"==typeof l.emit)return void l.emit("uncaughtException",e);console.error(e)};function oi(e){oo(e)}function ou(e){console.error(e)}function os(e){oo(e)}function oc(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function of(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function od(e,t,n){return(n=ld(n)).tag=3,n.payload={element:null},n.callback=function(){oc(e,t)},n}function op(e){return(e=ld(e)).tag=3,e}function om(e,t,n,r){var l=n.type.getDerivedStateFromError;if("function"==typeof l){var a=r.value;e.payload=function(){return l(a)},e.callback=function(){of(t,n,r)}}var o=n.stateNode;null!==o&&"function"==typeof o.componentDidCatch&&(e.callback=function(){of(t,n,r),"function"!=typeof l&&(null===iG?iG=new Set([this]):iG.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var oh=Error(u(461)),og=!1;function oy(e,t,n,r){t.child=null===e?a2(t,null,n,r):a1(t,e.child,n,r)}function ov(e,t,n,r,l){n=n.render;var a=t.ref;if("ref"in r){var o={};for(var i in r)"ref"!==i&&(o[i]=r[i])}else o=r;return(rV(t),r=lU(e,t,n,o,a,l),i=lV(),null===e||og)?(rx&&i&&rb(t),t.flags|=1,oy(e,t,r,l),t.child):(lB(e,t,l),oI(e,t,l))}function ob(e,t,n,r,l){if(null===e){var a=n.type;return"function"!=typeof a||rt(a)||void 0!==a.defaultProps||null!==n.compare?((e=rl(n.type,null,r,t,t.mode,l)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,ok(e,t,a,r,l))}if(a=e.child,!oU(e,l)){var o=a.memoizedProps;if((n=null!==(n=n.compare)?n:nC)(o,r)&&e.ref===t.ref)return oI(e,t,l)}return t.flags|=1,(e=rn(a,r)).ref=t.ref,e.return=t,t.child=e}function ok(e,t,n,r,l){if(null!==e){var a=e.memoizedProps;if(nC(a,r)&&e.ref===t.ref)if(og=!1,t.pendingProps=r=a,!oU(e,l))return t.lanes=e.lanes,oI(e,t,l);else 0!=(131072&e.flags)&&(og=!0)}return oE(e,t,n,r,l)}function ow(e,t,n){var r=t.pendingProps,l=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode){if(0!=(128&t.flags)){if(r=null!==a?a.baseLanes|n:n,null!==e){for(a=0,l=t.child=e.child;null!==l;)a=a|l.lanes|l.childLanes,l=l.sibling;t.childLanes=a&~r}else t.childLanes=0,t.child=null;return oS(e,t,r,n)}if(0==(0x20000000&n))return t.lanes=t.childLanes=0x20000000,oS(e,t,null!==a?a.baseLanes|n:n,n);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&r5(t,null!==a?a.cachePool:null),null!==a?lx(t,a):lE(),a6(t)}else null!==a?(r5(t,a.cachePool),lx(t,a),a5(t),t.memoizedState=null):(null!==e&&r5(t,null),lE(),a5(t));return oy(e,t,l,n),t.child}function oS(e,t,n,r){var l=r6();return t.memoizedState={baseLanes:n,cachePool:l=null===l?null:{parent:rG._currentValue,pool:l}},null!==e&&r5(t,null),lE(),a6(t),null!==e&&rH(e,t,r,!0),null}function ox(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!=typeof n&&"object"!=typeof n)throw Error(u(284));(null===e||e.ref!==n)&&(t.flags|=4194816)}}function oE(e,t,n,r,l){return(rV(t),n=lU(e,t,n,r,void 0,l),r=lV(),null===e||og)?(rx&&r&&rb(t),t.flags|=1,oy(e,t,n,l),t.child):(lB(e,t,l),oI(e,t,l))}function oC(e,t,n,r,l,a){return(rV(t),t.updateQueue=null,n=lH(t,r,n,l),lj(e),r=lV(),null===e||og)?(rx&&r&&rb(t),t.flags|=1,oy(e,t,n,a),t.child):(lB(e,t,a),oI(e,t,a))}function o_(e,t,n,r,l){if(rV(t),null===t.stateNode){var a=n9,o=n.contextType;"object"==typeof o&&null!==o&&(a=rB(o)),t.memoizedState=null!==(a=new n(r,a)).state&&void 0!==a.state?a.state:null,a.updater=on,t.stateNode=a,a._reactInternals=t,(a=t.stateNode).props=r,a.state=t.memoizedState,a.refs={},lc(t),o=n.contextType,a.context="object"==typeof o&&null!==o?rB(o):n9,a.state=t.memoizedState,"function"==typeof(o=n.getDerivedStateFromProps)&&(ot(t,n,o,r),a.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(o=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),o!==a.state&&on.enqueueReplaceState(a,a.state,null),lv(t,r,a,l),ly(),a.state=t.memoizedState),"function"==typeof a.componentDidMount&&(t.flags|=4194308),r=!0}else if(null===e){a=t.stateNode;var i=t.memoizedProps,u=oa(n,i);a.props=u;var s=a.context,c=n.contextType;o=n9,"object"==typeof c&&null!==c&&(o=rB(c));var f=n.getDerivedStateFromProps;c="function"==typeof f||"function"==typeof a.getSnapshotBeforeUpdate,i=t.pendingProps!==i,c||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(i||s!==o)&&ol(t,a,r,o),ls=!1;var d=t.memoizedState;a.state=d,lv(t,r,a,l),ly(),s=t.memoizedState,i||d!==s||ls?("function"==typeof f&&(ot(t,n,f,r),s=t.memoizedState),(u=ls||or(t,n,u,r,d,s,o))?(c||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.flags|=4194308)):("function"==typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),a.props=r,a.state=s,a.context=o,r=u):("function"==typeof a.componentDidMount&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,lf(e,t),c=oa(n,o=t.memoizedProps),a.props=c,f=t.pendingProps,d=a.context,s=n.contextType,u=n9,"object"==typeof s&&null!==s&&(u=rB(s)),(s="function"==typeof(i=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(o!==f||d!==u)&&ol(t,a,r,u),ls=!1,d=t.memoizedState,a.state=d,lv(t,r,a,l),ly();var p=t.memoizedState;o!==f||d!==p||ls||null!==e&&null!==e.dependencies&&r$(e.dependencies)?("function"==typeof i&&(ot(t,n,i,r),p=t.memoizedState),(c=ls||or(t,n,c,r,d,p,u)||null!==e&&null!==e.dependencies&&r$(e.dependencies))?(s||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,u),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,u)),"function"==typeof a.componentDidUpdate&&(t.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof a.componentDidUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=u,r=c):("function"!=typeof a.componentDidUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,ox(e,t),r=0!=(128&t.flags),a||r?(a=t.stateNode,n=r&&"function"!=typeof n.getDerivedStateFromError?null:a.render(),t.flags|=1,null!==e&&r?(t.child=a1(t,e.child,null,l),t.child=a1(t,null,n,l)):oy(e,t,n,l),t.memoizedState=a.state,e=t.child):e=oI(e,t,l),e}function oP(e,t,n,r){return rL(),t.flags|=256,oy(e,t,n,r),t.child}var oz={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function oN(e){return{baseLanes:e,cachePool:r9()}}function oT(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=i$),e}function oL(e,t,n){var r,l=t.pendingProps,a=!1,o=0!=(128&t.flags);if((r=o)||(r=(null===e||null!==e.memoizedState)&&0!=(2&a7.current)),r&&(a=!0,t.flags&=-129),r=0!=(32&t.flags),t.flags&=-33,null===e){if(rx){if(a?a8(t):a5(t),rx){var i,s=rS;if(i=s){n:{for(i=s,s=rC;8!==i.nodeType;)if(!s||null===(i=sk(i.nextSibling))){s=null;break n}s=i}null!==s?(t.memoizedState={dehydrated:s,treeContext:null!==rm?{id:rh,overflow:rg}:null,retryLane:0x20000000,hydrationErrors:null},(i=re(18,null,null,0)).stateNode=s,i.return=t,t.child=i,rw=t,rS=null,i=!0):i=!1}i||rP(t)}if(null!==(s=t.memoizedState)&&null!==(s=s.dehydrated))return sb(s)?t.lanes=32:t.lanes=0x20000000,null;a9(t)}return(s=l.children,l=l.fallback,a)?(a5(t),s=oR({mode:"hidden",children:s},a=t.mode),l=ra(l,a,n,null),s.return=t,l.return=t,s.sibling=l,t.child=s,(a=t.child).memoizedState=oN(n),a.childLanes=oT(e,r,n),t.memoizedState=oz,l):(a8(t),oO(t,s))}if(null!==(i=e.memoizedState)&&null!==(s=i.dehydrated)){if(o)256&t.flags?(a8(t),t.flags&=-257,t=oD(e,t,n)):null!==t.memoizedState?(a5(t),t.child=e.child,t.flags|=128,t=null):(a5(t),a=l.fallback,s=t.mode,l=oR({mode:"visible",children:l.children},s),a=ra(a,s,n,null),a.flags|=2,l.return=t,a.return=t,l.sibling=a,t.child=l,a1(t,e.child,null,n),(l=t.child).memoizedState=oN(n),l.childLanes=oT(e,r,n),t.memoizedState=oz,t=a);else if(a8(t),sb(s)){if(r=s.nextSibling&&s.nextSibling.dataset)var c=r.dgst;r=c,(l=Error(u(419))).stack="",l.digest=r,rR({value:l,source:null,stack:null}),t=oD(e,t,n)}else if(og||rH(e,t,n,!1),r=0!=(n&e.childLanes),og||r){if(null!==(r=iN)&&0!==(l=0!=((l=0!=(42&(l=n&-n))?1:eP(l))&(r.suspendedLanes|n))?0:l)&&l!==i.retryLane)throw i.retryLane=l,n8(e,l),i9(r,e,l),oh;"$?"===s.data||uu(),t=oD(e,t,n)}else"$?"===s.data?(t.flags|=192,t.child=e.child,t=null):(e=i.treeContext,rS=sk(s.nextSibling),rw=t,rx=!0,rE=null,rC=!1,null!==e&&(rd[rp++]=rh,rd[rp++]=rg,rd[rp++]=rm,rh=e.id,rg=e.overflow,rm=t),t=oO(t,l.children),t.flags|=4096);return t}return a?(a5(t),a=l.fallback,s=t.mode,c=(i=e.child).sibling,(l=rn(i,{mode:"hidden",children:l.children})).subtreeFlags=0x3e00000&i.subtreeFlags,null!==c?a=rn(c,a):(a=ra(a,s,n,null),a.flags|=2),a.return=t,l.return=t,l.sibling=a,t.child=l,l=a,a=t.child,null===(s=e.child.memoizedState)?s=oN(n):(null!==(i=s.cachePool)?(c=rG._currentValue,i=i.parent!==c?{parent:c,pool:c}:i):i=r9(),s={baseLanes:s.baseLanes|n,cachePool:i}),a.memoizedState=s,a.childLanes=oT(e,r,n),t.memoizedState=oz,l):(a8(t),e=(n=e.child).sibling,(n=rn(n,{mode:"visible",children:l.children})).return=t,n.sibling=null,null!==e&&(null===(r=t.deletions)?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function oO(e,t){return(t=oR({mode:"visible",children:t},e.mode)).return=e,e.child=t}function oR(e,t){return(e=re(22,e,null,t)).lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function oD(e,t,n){return a1(t,e.child,null,n),e=oO(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function oA(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),rU(e.return,t,n)}function oF(e,t,n,r,l){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:l}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=l)}function oM(e,t,n){var r=t.pendingProps,l=r.revealOrder,a=r.tail;if(oy(e,t,r.children,n),0!=(2&(r=a7.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&oA(e,n,t);else if(19===e.tag)oA(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}switch(H(a7,r),l){case"forwards":for(l=null,n=t.child;null!==n;)null!==(e=n.alternate)&&null===oe(e)&&(l=n),n=n.sibling;null===(n=l)?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),oF(t,!1,l,n,a);break;case"backwards":for(n=null,l=t.child,t.child=null;null!==l;){if(null!==(e=l.alternate)&&null===oe(e)){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}oF(t,!0,n,null,a);break;case"together":oF(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function oI(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),iU|=t.lanes,0==(n&t.childLanes)){if(null===e)return null;else if(rH(e,t,n,!1),0==(n&t.childLanes))return null}if(null!==e&&t.child!==e.child)throw Error(u(153));if(null!==t.child){for(n=rn(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=rn(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function oU(e,t){return 0!=(e.lanes&t)||!!(null!==(e=e.dependencies)&&r$(e))}function oj(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)og=!0;else{if(!oU(e,n)&&0==(128&t.flags))return og=!1,function(e,t,n){switch(t.tag){case 3:W(t,t.stateNode.containerInfo),rM(t,rG,e.memoizedState.cache),rL();break;case 27:case 5:K(t);break;case 4:W(t,t.stateNode.containerInfo);break;case 10:rM(t,t.type,t.memoizedProps.value);break;case 13:var r=t.memoizedState;if(null!==r){if(null!==r.dehydrated)return a8(t),t.flags|=128,null;if(0!=(n&t.child.childLanes))return oL(e,t,n);return a8(t),null!==(e=oI(e,t,n))?e.sibling:null}a8(t);break;case 19:var l=0!=(128&e.flags);if((r=0!=(n&t.childLanes))||(rH(e,t,n,!1),r=0!=(n&t.childLanes)),l){if(r)return oM(e,t,n);t.flags|=128}if(null!==(l=t.memoizedState)&&(l.rendering=null,l.tail=null,l.lastEffect=null),H(a7,a7.current),!r)return null;break;case 22:case 23:return t.lanes=0,ow(e,t,n);case 24:rM(t,rG,e.memoizedState.cache)}return oI(e,t,n)}(e,t,n);og=0!=(131072&e.flags)}else og=!1,rx&&0!=(1048576&t.flags)&&rv(t,rf,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var r=t.elementType,l=r._init;if(r=l(r._payload),t.type=r,"function"==typeof r)rt(r)?(e=oa(r,e),t.tag=1,t=o_(null,t,r,e,n)):(t.tag=0,t=oE(null,t,r,e,n));else{if(null!=r){if((l=r.$$typeof)===x){t.tag=11,t=ov(null,t,r,e,n);break e}else if(l===_){t.tag=14,t=ob(null,t,r,e,n);break e}}throw Error(u(306,t=function e(t){if(null==t)return null;if("function"==typeof t)return t.$$typeof===O?null:t.displayName||t.name||null;if("string"==typeof t)return t;switch(t){case y:return"Fragment";case b:return"Profiler";case v:return"StrictMode";case E:return"Suspense";case C:return"SuspenseList";case z:return"Activity"}if("object"==typeof t)switch(t.$$typeof){case g:return"Portal";case S:return(t.displayName||"Context")+".Provider";case w:return(t._context.displayName||"Context")+".Consumer";case x:var n=t.render;return(t=t.displayName)||(t=""!==(t=n.displayName||n.name||"")?"ForwardRef("+t+")":"ForwardRef"),t;case _:return null!==(n=t.displayName||null)?n:e(t.type)||"Memo";case P:n=t._payload,t=t._init;try{return e(t(n))}catch(e){}}return null}(r)||r,""))}}return t;case 0:return oE(e,t,t.type,t.pendingProps,n);case 1:return l=oa(r=t.type,t.pendingProps),o_(e,t,r,l,n);case 3:e:{if(W(t,t.stateNode.containerInfo),null===e)throw Error(u(387));r=t.pendingProps;var a=t.memoizedState;l=a.element,lf(e,t),lv(t,r,null,n);var o=t.memoizedState;if(rM(t,rG,r=o.cache),r!==a.cache&&rj(t,[rG],n,!0),ly(),r=o.element,a.isDehydrated)if(a={element:r,isDehydrated:!1,cache:o.cache},t.updateQueue.baseState=a,t.memoizedState=a,256&t.flags){t=oP(e,t,r,n);break e}else if(r!==l){rR(l=nZ(Error(u(424)),t)),t=oP(e,t,r,n);break e}else for(rS=sk((e=9===(e=t.stateNode.containerInfo).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e).firstChild),rw=t,rx=!0,rE=null,rC=!0,n=a2(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling;else{if(rL(),r===l){t=oI(e,t,n);break e}oy(e,t,r,n)}t=t.child}return t;case 26:return ox(e,t),null===e?(n=sL(t.type,null,t.pendingProps,null))?t.memoizedState=n:rx||(n=t.type,e=t.pendingProps,(r=so(B.current).createElement(n))[eL]=t,r[eO]=e,sr(r,n,e),eB(r),t.stateNode=r):t.memoizedState=sL(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return K(t),null===e&&rx&&(r=t.stateNode=sx(t.type,t.pendingProps,B.current),rw=t,rC=!0,l=rS,sg(t.type)?(sw=l,rS=sk(r.firstChild)):rS=l),oy(e,t,t.pendingProps.children,n),ox(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&rx&&((l=r=rS)&&(null!==(r=function(e,t,n,r){for(;1===e.nodeType;){if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[eI])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(l=e.getAttribute("rel"))&&e.hasAttribute("data-precedence")||l!==n.rel||e.getAttribute("href")!==(null==n.href||""===n.href?null:n.href)||e.getAttribute("crossorigin")!==(null==n.crossOrigin?null:n.crossOrigin)||e.getAttribute("title")!==(null==n.title?null:n.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((l=e.getAttribute("src"))!==(null==n.src?null:n.src)||e.getAttribute("type")!==(null==n.type?null:n.type)||e.getAttribute("crossorigin")!==(null==n.crossOrigin?null:n.crossOrigin))&&l&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==t||"hidden"!==e.type)return e;var l=null==n.name?null:""+n.name;if("hidden"===n.type&&e.getAttribute("name")===l)return e}if(null===(e=sk(e.nextSibling)))break}return null}(r,t.type,t.pendingProps,rC))?(t.stateNode=r,rw=t,rS=sk(r.firstChild),rC=!1,l=!0):l=!1),l||rP(t)),K(t),l=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,r=a.children,ss(l,a)?r=null:null!==o&&ss(l,o)&&(t.flags|=32),null!==t.memoizedState&&(sX._currentValue=l=lU(e,t,l$,null,null,n)),ox(e,t),oy(e,t,r,n),t.child;case 6:return null===e&&rx&&((e=n=rS)&&(null!==(n=function(e,t,n){if(""===t)return null;for(;3!==e.nodeType;)if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!n||null===(e=sk(e.nextSibling)))return null;return e}(n,t.pendingProps,rC))?(t.stateNode=n,rw=t,rS=null,e=!0):e=!1),e||rP(t)),null;case 13:return oL(e,t,n);case 4:return W(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=a1(t,null,r,n):oy(e,t,r,n),t.child;case 11:return ov(e,t,t.type,t.pendingProps,n);case 7:return oy(e,t,t.pendingProps,n),t.child;case 8:case 12:return oy(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,rM(t,t.type,r.value),oy(e,t,r.children,n),t.child;case 9:return l=t.type._context,r=t.pendingProps.children,rV(t),r=r(l=rB(l)),t.flags|=1,oy(e,t,r,n),t.child;case 14:return ob(e,t,t.type,t.pendingProps,n);case 15:return ok(e,t,t.type,t.pendingProps,n);case 19:return oM(e,t,n);case 31:return r=t.pendingProps,n=t.mode,r={mode:r.mode,children:r.children},null===e?(n=oR(r,n)).ref=t.ref:(n=rn(e.child,r)).ref=t.ref,t.child=n,n.return=t,t=n;case 22:return ow(e,t,n);case 24:return rV(t),r=rB(rG),null===e?(null===(l=r6())&&(l=iN,a=rX(),l.pooledCache=a,a.refCount++,null!==a&&(l.pooledCacheLanes|=n),l=a),t.memoizedState={parent:r,cache:l},lc(t),rM(t,rG,l)):(0!=(e.lanes&n)&&(lf(e,t),lv(t,null,null,n),ly()),l=e.memoizedState,a=t.memoizedState,l.parent!==r?(l={parent:r,cache:r},t.memoizedState=l,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=l),rM(t,rG,r)):(rM(t,rG,r=a.cache),r!==l.cache&&rj(t,[rG],n,!0))),oy(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(u(156,t.tag))}function oH(e){e.flags|=4}function o$(e,t){if("stylesheet"!==t.type||0!=(4&t.state.loading))e.flags&=-0x1000001;else if(e.flags|=0x1000000,!sB(t)){if(null!==(t=a3.current)&&((4194048&iL)===iL?null!==a4:(0x3c00000&iL)!==iL&&0==(0x20000000&iL)||t!==a4))throw lo=ln,le;e.flags|=8192}}function oV(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?eS():0x20000000,e.lanes|=t,iV|=t)}function oB(e,t){if(!rx)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function oQ(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var l=e.child;null!==l;)n|=l.lanes|l.childLanes,r|=0x3e00000&l.subtreeFlags,r|=0x3e00000&l.flags,l.return=e,l=l.sibling;else for(l=e.child;null!==l;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function oW(e,t){switch(rk(t),t.tag){case 3:rI(rG),q();break;case 26:case 27:case 5:Y(t);break;case 4:q();break;case 13:a9(t);break;case 19:j(a7);break;case 10:rI(t.type);break;case 22:case 23:a9(t),lC(),null!==e&&j(r8);break;case 24:rI(rG)}}function oq(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var l=r.next;n=l;do{if((n.tag&e)===e){r=void 0;var a=n.create;n.inst.destroy=r=a()}n=n.next}while(n!==l)}}catch(e){ux(t,t.return,e)}}function oK(e,t,n){try{var r=t.updateQueue,l=null!==r?r.lastEffect:null;if(null!==l){var a=l.next;r=a;do{if((r.tag&e)===e){var o=r.inst,i=o.destroy;if(void 0!==i){o.destroy=void 0,l=t;try{i()}catch(e){ux(l,n,e)}}}r=r.next}while(r!==a)}}catch(e){ux(t,t.return,e)}}function oY(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{lk(t,n)}catch(t){ux(e,e.return,t)}}}function oG(e,t,n){n.props=oa(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){ux(e,t,n)}}function oX(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(n){ux(e,t,n)}}function oZ(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(n){ux(e,t,n)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(n){ux(e,t,n)}else n.current=null}function oJ(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){ux(e,e.return,t)}}function o0(e,t,n){try{var r=e.stateNode;(function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,a=null,o=null,i=null,s=null,c=null,f=null;for(m in n){var d=n[m];if(n.hasOwnProperty(m)&&null!=d)switch(m){case"checked":case"value":break;case"defaultValue":s=d;default:r.hasOwnProperty(m)||st(e,t,m,null,r,d)}}for(var p in r){var m=r[p];if(d=n[p],r.hasOwnProperty(p)&&(null!=m||null!=d))switch(p){case"type":a=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":f=m;break;case"value":o=m;break;case"defaultValue":i=m;break;case"children":case"dangerouslySetInnerHTML":if(null!=m)throw Error(u(137,t));break;default:m!==d&&st(e,t,p,m,r,d)}}tn(e,o,i,s,c,f,a,l);return;case"select":for(a in m=o=i=p=null,n)if(s=n[a],n.hasOwnProperty(a)&&null!=s)switch(a){case"value":break;case"multiple":m=s;default:r.hasOwnProperty(a)||st(e,t,a,null,r,s)}for(l in r)if(a=r[l],s=n[l],r.hasOwnProperty(l)&&(null!=a||null!=s))switch(l){case"value":p=a;break;case"defaultValue":i=a;break;case"multiple":o=a;default:a!==s&&st(e,t,l,a,r,s)}t=i,n=o,r=m,null!=p?ta(e,!!n,p,!1):!!r!=!!n&&(null!=t?ta(e,!!n,t,!0):ta(e,!!n,n?[]:"",!1));return;case"textarea":for(i in m=p=null,n)if(l=n[i],n.hasOwnProperty(i)&&null!=l&&!r.hasOwnProperty(i))switch(i){case"value":case"children":break;default:st(e,t,i,null,r,l)}for(o in r)if(l=r[o],a=n[o],r.hasOwnProperty(o)&&(null!=l||null!=a))switch(o){case"value":p=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=l)throw Error(u(91));break;default:l!==a&&st(e,t,o,l,r,a)}to(e,p,m);return;case"option":for(var h in n)p=n[h],n.hasOwnProperty(h)&&null!=p&&!r.hasOwnProperty(h)&&("selected"===h?e.selected=!1:st(e,t,h,null,r,p));for(s in r)p=r[s],m=n[s],r.hasOwnProperty(s)&&p!==m&&(null!=p||null!=m)&&("selected"===s?e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p:st(e,t,s,p,r,m));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g)&&st(e,t,g,null,r,p);for(c in r)if(p=r[c],m=n[c],r.hasOwnProperty(c)&&p!==m&&(null!=p||null!=m))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(u(137,t));break;default:st(e,t,c,p,r,m)}return;default:if(td(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&sn(e,t,y,void 0,r,p);for(f in r)p=r[f],m=n[f],r.hasOwnProperty(f)&&p!==m&&(void 0!==p||void 0!==m)&&sn(e,t,f,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&null!=p&&!r.hasOwnProperty(v)&&st(e,t,v,null,r,p);for(d in r)p=r[d],m=n[d],r.hasOwnProperty(d)&&p!==m&&(null!=p||null!=m)&&st(e,t,d,p,r,m)})(r,e.type,n,t),r[eO]=t}catch(t){ux(e,e.return,t)}}function o1(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&sg(e.type)||4===e.tag}function o2(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||o1(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&sg(e.type)||2&e.flags||null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function o3(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&sg(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(o3(e,t,n),e=e.sibling;null!==e;)o3(e,t,n),e=e.sibling}function o4(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);sr(t,r,n),t[eL]=e,t[eO]=n}catch(t){ux(e,e.return,t)}}var o8=!1,o6=!1,o5=!1,o9="function"==typeof WeakSet?WeakSet:Set,o7=null;function ie(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:ip(e,n),4&r&&oq(5,n);break;case 1:if(ip(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(e){ux(n,n.return,e)}else{var l=oa(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){ux(n,n.return,e)}}64&r&&oY(n),512&r&&oX(n,n.return);break;case 3:if(ip(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{lk(e,t)}catch(e){ux(n,n.return,e)}}break;case 27:null===t&&4&r&&o4(n);case 26:case 5:ip(e,n),null===t&&4&r&&oJ(n),512&r&&oX(n,n.return);break;case 12:default:ip(e,n);break;case 13:ip(e,n),4&r&&io(e,n),64&r&&null!==(e=n.memoizedState)&&null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$?"!==e.data||"complete"===n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=uP.bind(null,n));break;case 22:if(!(r=null!==n.memoizedState||o8)){t=null!==t&&null!==t.memoizedState||o6,l=o8;var a=o6;o8=r,(o6=t)&&!a?function e(t,n,r){for(r=r&&0!=(8772&n.subtreeFlags),n=n.child;null!==n;){var l=n.alternate,a=t,o=n,i=o.flags;switch(o.tag){case 0:case 11:case 15:e(a,o,r),oq(4,o);break;case 1:if(e(a,o,r),"function"==typeof(a=(l=o).stateNode).componentDidMount)try{a.componentDidMount()}catch(e){ux(l,l.return,e)}if(null!==(a=(l=o).updateQueue)){var u=l.stateNode;try{var s=a.shared.hiddenCallbacks;if(null!==s)for(a.shared.hiddenCallbacks=null,a=0;a title"))),sr(a,r,n),a[eL]=e,eB(a),r=a;break e;case"link":var o=s$("link","href",l).get(r+(n.href||""));if(o){for(var i=0;i<\/script>",e=e.removeChild(e.firstChild);break;case"select":e="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?e.multiple=!0:r.size&&(e.size=r.size);break;default:e="string"==typeof r.is?l.createElement(n,{is:r.is}):l.createElement(n)}}e[eL]=t,e[eO]=r;e:for(l=t.child;null!==l;){if(5===l.tag||6===l.tag)e.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===t)break;for(;null===l.sibling;){if(null===l.return||l.return===t)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}switch(t.stateNode=e,sr(e,n,r),n){case"button":case"input":case"select":case"textarea":e=!!r.autoFocus;break;case"img":e=!0;break;default:e=!1}e&&oH(t)}}return oQ(t),t.flags&=-0x1000001,null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&oH(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(u(166));if(e=B.current,rT(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=rw))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eL]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||u7(e.nodeValue,n)))||rP(t)}else(e=so(e).createTextNode(r))[eL]=t,t.stateNode=e}return oQ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rT(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(u(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(u(317));l[eL]=t}else rL(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oQ(t),l=!1}else l=rO(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&t.flags)return a9(t),t;return a9(t),null}}if(a9(t),0!=(128&t.flags))return t.lanes=n,t;if(n=null!==r,e=null!==e&&null!==e.memoizedState,n){r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool);var a=null;null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)}return n!==e&&n&&(t.child.flags|=8192),oV(t,t.updateQueue),oQ(t),null;case 4:return q(),null===e&&uJ(t.stateNode.containerInfo),oQ(t),null;case 10:return rI(t.type),oQ(t),null;case 19:if(j(a7),null===(l=t.memoizedState))return oQ(t),null;if(r=0!=(128&t.flags),null===(a=l.rendering))if(r)oB(l,!1);else{if(0!==iI||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=oe(e))){for(t.flags|=128,oB(l,!1),e=a.updateQueue,t.updateQueue=e,oV(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return H(a7,1&a7.current|2),t.child}e=e.sibling}null!==l.tail&&et()>iK&&(t.flags|=128,r=!0,oB(l,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=oe(a))){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,oV(t,e),oB(l,!0),null===l.tail&&"hidden"===l.tailMode&&!a.alternate&&!rx)return oQ(t),null}else 2*et()-l.renderingStartTime>iK&&0x20000000!==n&&(t.flags|=128,r=!0,oB(l,!1),t.lanes=4194304);l.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=l.last)?e.sibling=a:t.child=a,l.last=a)}if(null!==l.tail)return t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=et(),t.sibling=null,e=a7.current,H(a7,r?1&e|2:1&e),t;return oQ(t),null;case 22:case 23:return a9(t),lC(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(oQ(t),6&t.subtreeFlags&&(t.flags|=8192)):oQ(t),null!==(n=t.updateQueue)&&oV(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&j(r8),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rI(rG),oQ(t),null;case 25:case 30:return null}throw Error(u(156,t.tag))}(t.alternate,t,iM);if(null!==n){iT=n;return}if(null!==(t=t.sibling)){iT=t;return}iT=t=e}while(null!==t);0===iI&&(iI=5)}function um(e,t){do{var n=function(e,t){switch(rk(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rI(rG),q(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return Y(t),null;case 13:if(a9(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(u(340));rL()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return j(a7),null;case 4:return q(),null;case 10:return rI(t.type),null;case 22:case 23:return a9(t),lC(),null!==e&&j(r8),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rI(rG),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,iT=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){iT=e;return}iT=e=n}while(null!==e);iI=6,iT=null}function uh(e,t,n,r,l,a,o,i,s){e.cancelPendingCommit=null;do uk();while(0!==iX);if(0!=(6&iz))throw Error(u(327));if(null!==t){if(t===e.current)throw Error(u(177));if(!function(e,t,n,r,l,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(n=o&~n;0g&&(o=g,g=h,h=o);var y=nP(i,h),v=nP(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,D.T=null,n=i2,i2=null;var a=iZ,o=i0;if(iX=0,iJ=iZ=null,i0=0,0!=(6&iz))throw Error(u(331));var i=iz;if(iz|=4,iE(a.current),iy(a,a.current,o,n),iz=i,uF(0,!1),ef&&"function"==typeof ef.onPostCommitFiberRoot)try{ef.onPostCommitFiberRoot(ec,a)}catch(e){}return!0}finally{A.p=l,D.T=r,ub(e,t)}}function uS(e,t,n){t=nZ(n,t),t=od(e.stateNode,t,2),null!==(e=lp(e,t,2))&&(eE(e,2),uA(e))}function ux(e,t,n){if(3===e.tag)uS(e,e,n);else for(;null!==t;){if(3===t.tag){uS(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===iG||!iG.has(r))){e=nZ(n,e),null!==(r=lp(t,n=op(2),2))&&(om(n,r,t,e),eE(r,2),uA(r));break}}t=t.return}}function uE(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new iP;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(iF=!0,l.add(n),e=uC.bind(null,e,t,n),t.then(e,e))}function uC(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,iN===e&&(iL&n)===n&&(4===iI||3===iI&&(0x3c00000&iL)===iL&&300>et()-iq?0==(2&iz)&&ul(e,0):iH|=n,iV===iL&&(iV=0)),uA(e)}function u_(e,t){0===t&&(t=eS()),null!==(e=n8(e,t))&&(eE(e,t),uA(e))}function uP(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),u_(e,n)}function uz(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(u(314))}null!==r&&r.delete(t),u_(e,n)}var uN=null,uT=null,uL=!1,uO=!1,uR=!1,uD=0;function uA(e){e!==uT&&null===e.next&&(null===uT?uN=uT=e:uT=uT.next=e),uO=!0,uL||(uL=!0,sm(function(){0!=(6&iz)?X(er,uM):uI()}))}function uF(e,t){if(!uR&&uO){uR=!0;do for(var n=!1,r=uN;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-ep(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,uH(r,a))}else a=iL,0==(3&(a=eb(r,r===iN?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ek(r,a)||(n=!0,uH(r,a));r=r.next}while(n);uR=!1}}function uM(){uI()}function uI(){uO=uL=!1;var e,t=0;0!==uD&&(((e=window.event)&&"popstate"===e.type?e===sc||(sc=e,0):(sc=null,1))||(t=uD),uD=0);for(var n=et(),r=null,l=uN;null!==l;){var a=l.next,o=uU(l,n);0===o?(l.next=null,null===r?uN=a:r.next=a,null===a&&(uT=r)):(r=l,(0!==t||0!=(3&o))&&(uO=!0)),l=a}uF(t,!1)}function uU(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0r){n=r;var o=e.ownerDocument;if(1&n&&sE(o.documentElement),2&n&&sE(o.body),4&n)for(sE(n=o.head),o=n.firstChild;o;){var i=o.nextSibling,u=o.nodeName;o[eI]||"SCRIPT"===u||"STYLE"===u||"LINK"===u&&"stylesheet"===o.rel.toLowerCase()||n.removeChild(o),o=i}}if(0===l){e.removeChild(a),ck(t);return}l--}else"$"===n||"$?"===n||"$!"===n?l++:r=n.charCodeAt(0)-48;else r=0;n=a}while(n);ck(t)}function sv(e){var t=e.firstChild;for(t&&10===t.nodeType&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":sv(n),eU(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===n.rel.toLowerCase())continue}e.removeChild(n)}}function sb(e){return"$!"===e.data||"$?"===e.data&&"complete"===e.ownerDocument.readyState}function sk(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t||"F!"===t||"F"===t)break;if("/$"===t)return null}}return e}var sw=null;function sS(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}function sx(e,t,n){switch(t=so(n),e){case"html":if(!(e=t.documentElement))throw Error(u(452));return e;case"head":if(!(e=t.head))throw Error(u(453));return e;case"body":if(!(e=t.body))throw Error(u(454));return e;default:throw Error(u(451))}}function sE(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);eU(e)}var sC=new Map,s_=new Set;function sP(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var sz=A.d;A.d={f:function(){var e=sz.f(),t=un();return e||t},r:function(e){var t=eH(e);null!==t&&5===t.tag&&"form"===t.type?aO(t):sz.r(e)},D:function(e){sz.D(e),sT("dns-prefetch",e,null)},C:function(e,t){sz.C(e,t),sT("preconnect",e,t)},L:function(e,t,n){if(sz.L(e,t,n),sN&&e&&t){var r='link[rel="preload"][as="'+tt(t)+'"]';"image"===t&&n&&n.imageSrcSet?(r+='[imagesrcset="'+tt(n.imageSrcSet)+'"]',"string"==typeof n.imageSizes&&(r+='[imagesizes="'+tt(n.imageSizes)+'"]')):r+='[href="'+tt(e)+'"]';var l=r;switch(t){case"style":l=sO(e);break;case"script":l=sA(e)}sC.has(l)||(e=p({rel:"preload",href:"image"===t&&n&&n.imageSrcSet?void 0:e,as:t},n),sC.set(l,e),null!==sN.querySelector(r)||"style"===t&&sN.querySelector(sR(l))||"script"===t&&sN.querySelector(sF(l))||(sr(t=sN.createElement("link"),"link",e),eB(t),sN.head.appendChild(t)))}},m:function(e,t){if(sz.m(e,t),sN&&e){var n=t&&"string"==typeof t.as?t.as:"script",r='link[rel="modulepreload"][as="'+tt(n)+'"][href="'+tt(e)+'"]',l=r;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=sA(e)}if(!sC.has(l)&&(e=p({rel:"modulepreload",href:e},t),sC.set(l,e),null===sN.querySelector(r))){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(sN.querySelector(sF(l)))return}sr(n=sN.createElement("link"),"link",e),eB(n),sN.head.appendChild(n)}}},X:function(e,t){if(sz.X(e,t),sN&&e){var n=eV(sN).hoistableScripts,r=sA(e),l=n.get(r);l||((l=sN.querySelector(sF(r)))||(e=p({src:e,async:!0},t),(t=sC.get(r))&&sj(e,t),eB(l=sN.createElement("script")),sr(l,"link",e),sN.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},n.set(r,l))}},S:function(e,t,n){if(sz.S(e,t,n),sN&&e){var r=eV(sN).hoistableStyles,l=sO(e);t=t||"default";var a=r.get(l);if(!a){var o={loading:0,preload:null};if(a=sN.querySelector(sR(l)))o.loading=5;else{e=p({rel:"stylesheet",href:e,"data-precedence":t},n),(n=sC.get(l))&&sU(e,n);var i=a=sN.createElement("link");eB(i),sr(i,"link",e),i._p=new Promise(function(e,t){i.onload=e,i.onerror=t}),i.addEventListener("load",function(){o.loading|=1}),i.addEventListener("error",function(){o.loading|=2}),o.loading|=4,sI(a,t,sN)}a={type:"stylesheet",instance:a,count:1,state:o},r.set(l,a)}}},M:function(e,t){if(sz.M(e,t),sN&&e){var n=eV(sN).hoistableScripts,r=sA(e),l=n.get(r);l||((l=sN.querySelector(sF(r)))||(e=p({src:e,async:!0,type:"module"},t),(t=sC.get(r))&&sj(e,t),eB(l=sN.createElement("script")),sr(l,"link",e),sN.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},n.set(r,l))}}};var sN="undefined"==typeof document?null:document;function sT(e,t,n){if(sN&&"string"==typeof t&&t){var r=tt(t);r='link[rel="'+e+'"][href="'+r+'"]',"string"==typeof n&&(r+='[crossorigin="'+n+'"]'),s_.has(r)||(s_.add(r),e={rel:e,crossOrigin:n,href:t},null===sN.querySelector(r)&&(sr(t=sN.createElement("link"),"link",e),eB(t),sN.head.appendChild(t)))}}function sL(e,t,n,r){var l=(l=B.current)?sP(l):null;if(!l)throw Error(u(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof n.precedence&&"string"==typeof n.href?(t=sO(n.href),(r=(n=eV(l).hoistableStyles).get(t))||(r={type:"style",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===n.rel&&"string"==typeof n.href&&"string"==typeof n.precedence){e=sO(n.href);var a,o,i,s,c=eV(l).hoistableStyles,f=c.get(e);if(f||(l=l.ownerDocument||l,f={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,f),(c=l.querySelector(sR(e)))&&!c._p&&(f.instance=c,f.state.loading=5),sC.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},sC.set(e,n),c||(a=l,o=e,i=n,s=f.state,a.querySelector('link[rel="preload"][as="style"]['+o+"]")?s.loading=1:(s.preload=o=a.createElement("link"),o.addEventListener("load",function(){return s.loading|=1}),o.addEventListener("error",function(){return s.loading|=2}),sr(o,"link",i),eB(o),a.head.appendChild(o))))),t&&null===r)throw Error(u(528,""));return f}if(t&&null!==r)throw Error(u(529,""));return null;case"script":return t=n.async,"string"==typeof(n=n.src)&&t&&"function"!=typeof t&&"symbol"!=typeof t?(t=sA(n),(r=(n=eV(l).hoistableScripts).get(t))||(r={type:"script",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(u(444,e))}}function sO(e){return'href="'+tt(e)+'"'}function sR(e){return'link[rel="stylesheet"]['+e+"]"}function sD(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function sA(e){return'[src="'+tt(e)+'"]'}function sF(e){return"script[async]"+e}function sM(e,t,n){if(t.count++,null===t.instance)switch(t.type){case"style":var r=e.querySelector('style[data-href~="'+tt(n.href)+'"]');if(r)return t.instance=r,eB(r),r;var l=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return eB(r=(e.ownerDocument||e).createElement("style")),sr(r,"style",l),sI(r,n.precedence,e),t.instance=r;case"stylesheet":l=sO(n.href);var a=e.querySelector(sR(l));if(a)return t.state.loading|=4,t.instance=a,eB(a),a;r=sD(n),(l=sC.get(l))&&sU(r,l),eB(a=(e.ownerDocument||e).createElement("link"));var o=a;return o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),sr(a,"link",r),t.state.loading|=4,sI(a,n.precedence,e),t.instance=a;case"script":if(a=sA(n.src),l=e.querySelector(sF(a)))return t.instance=l,eB(l),l;return r=n,(l=sC.get(a))&&sj(r=p({},n),l),eB(l=(e=e.ownerDocument||e).createElement("script")),sr(l,"link",r),e.head.appendChild(l),t.instance=l;case"void":return null;default:throw Error(u(443,t.type))}return"stylesheet"===t.type&&0==(4&t.state.loading)&&(r=t.instance,t.state.loading|=4,sI(r,n.precedence,e)),t.instance}function sI(e,t,n){for(var r=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=r.length?r[r.length-1]:null,a=l,o=0;o title"):null)}function sB(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var sQ=null;function sW(){}function sq(){if(this.count--,0===this.count){if(this.stylesheets)sY(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var sK=null;function sY(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sK=new Map,t.forEach(sG,e),sK=null,sq.call(e))}function sG(e,t){if(!(4&t.state.loading)){var n=sK.get(e);if(n)var r=n.get(null);else{n=new Map,sK.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{var r=n(4232);function l(e){var t="https://react.dev/errors/"+e;if(1{function n(e,t){var n=e.length;for(e.push(t);0>>1,l=e[r];if(0>>1;ra(u,n))sa(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else if(sa(c,n))e[r]=c,e[s]=n,r=s;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,i=performance;t.unstable_now=function(){return i.now()}}else{var u=Date,s=u.now();t.unstable_now=function(){return u.now()-s}}var c=[],f=[],d=1,p=null,m=3,h=!1,g=!1,y=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,k="function"==typeof clearTimeout?clearTimeout:null,w="undefined"!=typeof setImmediate?setImmediate:null;function S(e){for(var t=r(f);null!==t;){if(null===t.callback)l(f);else if(t.startTime<=e)l(f),t.sortIndex=t.expirationTime,n(c,t);else break;t=r(f)}}function x(e){if(y=!1,S(e),!g)if(null!==r(c))g=!0,E||(E=!0,o());else{var t=r(f);null!==t&&O(x,t.startTime-e)}}var E=!1,C=-1,_=5,P=-1;function z(){return!!v||!(t.unstable_now()-P<_)}function N(){if(v=!1,E){var e=t.unstable_now();P=e;var n=!0;try{e:{g=!1,y&&(y=!1,k(C),C=-1),h=!0;var a=m;try{t:{for(S(e),p=r(c);null!==p&&!(p.expirationTime>e&&z());){var i=p.callback;if("function"==typeof i){p.callback=null,m=p.priorityLevel;var u=i(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof u){p.callback=u,S(e),n=!0;break t}p===r(c)&&l(c),S(e)}else l(c);p=r(c)}if(null!==p)n=!0;else{var s=r(f);null!==s&&O(x,s.startTime-e),n=!1}}break e}finally{p=null,m=a,h=!1}}}finally{n?o():E=!1}}}if("function"==typeof w)o=function(){w(N)};else if("undefined"!=typeof MessageChannel){var T=new MessageChannel,L=T.port2;T.port1.onmessage=N,o=function(){L.postMessage(null)}}else o=function(){b(N,0)};function O(e,n){C=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=a,n(f,e),null===r(c)&&e===r(f)&&(y?(k(C),C=-1):y=!0,O(x,a-i))):(e.sortIndex=u,n(c,e),g||h||(g=!0,E||(E=!0,o()))),e},t.unstable_shouldYield=z,t.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},7876:(e,t,n)=>{e.exports=n(8228)},8228:(e,t)=>{var n=Symbol.for("react.transitional.element");function r(e,t,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),"key"in t)for(var a in r={},t)"key"!==a&&(r[a]=t[a]);else r=t;return{$$typeof:n,type:e,key:l,ref:void 0!==(t=r.ref)?t:null,props:r}}t.Fragment=Symbol.for("react.fragment"),t.jsx=r,t.jsxs=r},8477:(e,t,n)=>{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(4655)},8944:(e,t,n)=>{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(4279)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/main-5ab622ad5f4fefa1.js b/docs/_next/static/chunks/main-5ab622ad5f4fefa1.js deleted file mode 100644 index e0880f9b..00000000 --- a/docs/_next/static/chunks/main-5ab622ad5f4fefa1.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[792],{303:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AmpStateContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext({})},472:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=r(4252),o=r(7876),a=n._(r(4232)),i=r(2746);async function l(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,i.loadGetInitialProps)(t,r)}}class u extends a.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}u.origGetInitialProps=l,u.getInitialProps=l,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},536:(e,t)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return r}})},541:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parseRelativeUrl",{enumerable:!0,get:function(){return a}});let n=r(2746),o=r(8040);function a(e,t,r){void 0===r&&(r=!0);let a=new URL((0,n.getLocationOrigin)()),i=t?new URL(t,a):e.startsWith(".")?new URL(window.location.href):a,{pathname:l,searchParams:u,search:s,hash:c,href:f,origin:d}=new URL(e,i);if(d!==a.origin)throw Object.defineProperty(Error("invariant: invalid relative URL, router received "+e),"__NEXT_ERROR_CODE",{value:"E159",enumerable:!1,configurable:!0});return{pathname:l,query:r?(0,o.searchParamsToUrlQuery)(u):void 0,search:s,hash:c,href:f.slice(d.length)}}},938:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},990:(e,t)=>{"use strict";function r(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)||(r[n]=e[n])}),r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return r}})},1017:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}});var r=function(e){return e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1025:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return o}}),r(6023);let n="/docs-site";function o(e){return 0===n.length||(e=e.slice(n.length)).startsWith("/")||(e="/"+e),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1226:()=>{},1291:()=>{"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},1318:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RouteAnnouncer:function(){return u},default:function(){return s}});let n=r(4252),o=r(7876),a=n._(r(4232)),i=r(4294),l={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",top:0,width:"1px",whiteSpace:"nowrap",wordWrap:"normal"},u=()=>{let{asPath:e}=(0,i.useRouter)(),[t,r]=a.default.useState(""),n=a.default.useRef(e);return a.default.useEffect(()=>{if(n.current!==e)if(n.current=e,document.title)r(document.title);else{var t;let n=document.querySelector("h1");r((null!=(t=null==n?void 0:n.innerText)?t:null==n?void 0:n.textContent)||e)}},[e]),(0,o.jsx)("p",{"aria-live":"assertive",id:"__next-route-announcer__",role:"alert",style:l,children:t})},s=u;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1533:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=r(2746),o=r(6023);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},1827:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=""),("/"===e?"/index":/^\/index(\/|$)/.test(e)?"/index"+e:e)+t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},1862:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizeLocalePath",{enumerable:!0,get:function(){return n}});let r=new WeakMap;function n(e,t){let n;if(!t)return{pathname:e};let o=r.get(t);o||(o=t.map(e=>e.toLowerCase()),r.set(t,o));let a=e.split("/",2);if(!a[1])return{pathname:e};let i=a[1].toLowerCase(),l=o.indexOf(i);return l<0?{pathname:e}:(n=t[l],{pathname:e=e.slice(n.length+1)||"/",detectedLocale:n})}},1921:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"resolveHref",{enumerable:!0,get:function(){return f}});let n=r(8040),o=r(8480),a=r(990),i=r(2746),l=r(8205),u=r(1533),s=r(3069),c=r(8069);function f(e,t,r){let f,d="string"==typeof t?t:(0,o.formatWithValidation)(t),p=d.match(/^[a-zA-Z]{1,}:\/\//),h=p?d.slice(p[0].length):d;if((h.split("?",1)[0]||"").match(/(\/\/|\\)/)){console.error("Invalid href '"+d+"' passed to next/router in page: '"+e.pathname+"'. Repeated forward-slashes (//) or backslashes \\ are not valid in the href.");let t=(0,i.normalizeRepeatedSlashes)(h);d=(p?p[0]:"")+t}if(!(0,u.isLocalURL)(d))return r?[d]:d;try{f=new URL(d.startsWith("#")?e.asPath:e.pathname,"http://n")}catch(e){f=new URL("/","http://n")}try{let e=new URL(d,f);e.pathname=(0,l.normalizePathTrailingSlash)(e.pathname);let t="";if((0,s.isDynamicRoute)(e.pathname)&&e.searchParams&&r){let r=(0,n.searchParamsToUrlQuery)(e.searchParams),{result:i,params:l}=(0,c.interpolateAs)(e.pathname,e.pathname,r);i&&(t=(0,o.formatWithValidation)({pathname:i,hash:e.hash,query:(0,a.omit)(r,l)}))}let i=e.origin===f.origin?e.href.slice(e.origin.length):e.href;return r?[i,t||i]:i}catch(e){return r?[d]:d}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1924:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"escapeStringRegexp",{enumerable:!0,get:function(){return o}});let r=/[|\\{}()[\]^$+*?.-]/,n=/[|\\{}()[\]^$+*?.-]/g;function o(e){return r.test(e)?e.replace(n,"\\$&"):e}},2092:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return a}});let n=r(2889),o=r(8205);function a(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,"/docs-site"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2326:(e,t)=>{"use strict";function r(e){return"/api"===e||!!(null==e?void 0:e.startsWith("/api/"))}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isAPIRoute",{enumerable:!0,get:function(){return r}})},2455:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTML_LIMITED_BOT_UA_RE",{enumerable:!0,get:function(){return r}});let r=/Mediapartners-Google|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti/i},2591:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{REDIRECT_ERROR_CODE:function(){return o},RedirectType:function(){return a},isRedirectError:function(){return i}});let n=r(1017),o="NEXT_REDIRECT";var a=function(e){return e.push="push",e.replace="replace",e}({});function i(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,a]=t,i=t.slice(2,-2).join(";"),l=Number(t.at(-2));return r===o&&("replace"===a||"push"===a)&&"string"==typeof i&&!isNaN(l)&&l in n.RedirectStatusCode}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2616:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"detectDomainLocale",{enumerable:!0,get:function(){return r}});let r=function(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return g},NormalizeError:function(){return _},PageNotFoundError:function(){return m},SP:function(){return d},ST:function(){return p},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return u},getLocationOrigin:function(){return i},getURL:function(){return l},isAbsoluteUrl:function(){return a},isResSent:function(){return s},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return E}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),a=0;ao.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function l(){let{href:e}=window.location,t=i();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function s(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&s(r))return n;if(!n)throw Object.defineProperty(Error('"'+u(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let d="undefined"!=typeof performance,p=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class _ extends Error{}class m extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class g extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function E(e){return JSON.stringify({message:e.message,stack:e.stack})}},2792:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let n=r(4252),o=r(2092),a=r(8069),i=n._(r(1827)),l=r(4591),u=r(9163),s=r(541),c=r(4902),f=r(7176);r(3802);class d{getPageList(){return(0,f.getClientBuildManifest)().then(e=>e.sortedPages)}getMiddleware(){return window.__MIDDLEWARE_MATCHERS=[],window.__MIDDLEWARE_MATCHERS}getDataHref(e){let{asPath:t,href:r,locale:n}=e,{pathname:f,query:d,search:p}=(0,s.parseRelativeUrl)(r),{pathname:h}=(0,s.parseRelativeUrl)(t),_=(0,c.removeTrailingSlash)(f);if("/"!==_[0])throw Object.defineProperty(Error('Route name should start with a "/", got "'+_+'"'),"__NEXT_ERROR_CODE",{value:"E303",enumerable:!1,configurable:!0});var m=e.skipInterpolation?h:(0,u.isDynamicRoute)(_)?(0,a.interpolateAs)(f,h,d).result:_;let g=(0,i.default)((0,c.removeTrailingSlash)((0,l.addLocale)(m,n)),".json");return(0,o.addBasePath)("/_next/data/"+this.buildId+g+p,!0)}_isSsg(e){return this.promisedSsgManifest.then(t=>t.has(e))}loadPage(e){return this.routeLoader.loadRoute(e).then(e=>{if("component"in e)return{page:e.component,mod:e.exports,styleSheets:e.styles.map(e=>({href:e.href,text:e.content}))};throw e.error})}prefetch(e){return this.routeLoader.prefetch(e)}constructor(e,t){this.routeLoader=(0,f.createRouteLoader)(t),this.buildId=e,this.assetPrefix=t,this.promisedSsgManifest=new Promise(e=>{window.__SSG_MANIFEST?e(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{e(window.__SSG_MANIFEST)}})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2850:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return i},LayoutRouterContext:function(){return a},MissingSlotContext:function(){return u},TemplateContext:function(){return l}});let n=r(4252)._(r(4232)),o=n.default.createContext(null),a=n.default.createContext(null),i=n.default.createContext(null),l=n.default.createContext(null),u=n.default.createContext(new Set)},2889:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(3670);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+t+r+o+a}},2917:(e,t)=>{"use strict";let r;Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return n},setConfig:function(){return o}});let n=()=>r;function o(e){r=e}},2959:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return a},normalizeRscURL:function(){return i}});let n=r(938),o=r(8714);function a(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function i(e){return e.replace(/\.rsc($|\?)/,"$1")}},3069:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getSortedRouteObjects:function(){return n.getSortedRouteObjects},getSortedRoutes:function(){return n.getSortedRoutes},isDynamicRoute:function(){return o.isDynamicRoute}});let n=r(3703),o=r(9163)},3090:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Portal",{enumerable:!0,get:function(){return a}});let n=r(4232),o=r(8477),a=e=>{let{children:t,type:r}=e,[a,i]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let e=document.createElement(r);return document.body.appendChild(e),i(e),()=>{document.body.removeChild(e)}},[r]),a?(0,o.createPortal)(t,a):null};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3123:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},3132:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange)return void e();let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},3407:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getNextPathnameInfo",{enumerable:!0,get:function(){return i}});let n=r(1862),o=r(6292),a=r(3716);function i(e,t){var r,i;let{basePath:l,i18n:u,trailingSlash:s}=null!=(r=t.nextConfig)?r:{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};l&&(0,a.pathHasPrefix)(c.pathname,l)&&(c.pathname=(0,o.removePathPrefix)(c.pathname,l),c.basePath=l);let f=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],f="index"!==e[1]?"/"+e.slice(1).join("/"):"/",!0===t.parseData&&(c.pathname=f)}if(u){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,u.locales);c.locale=e.detectedLocale,c.pathname=null!=(i=e.pathname)?i:c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(f):(0,n.normalizeLocalePath)(f,u.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},3575:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getReactStitchedError",{enumerable:!0,get:function(){return s}});let n=r(4252),o=n._(r(4232)),a=n._(r(6240)),i=r(8089),l="react-stack-bottom-frame",u=RegExp("(at "+l+" )|("+l+"\\@)");function s(e){let t=(0,a.default)(e),r=t&&e.stack||"",n=t?e.message:"",l=r.split("\n"),s=l.findIndex(e=>u.test(e)),c=s>=0?l.slice(0,s).join("\n"):r,f=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return Object.assign(f,e),(0,i.copyNextErrorCode)(e,f),f.stack=c,function(e){if(!o.default.captureOwnerStack)return;let t=e.stack||"",r=o.default.captureOwnerStack();r&&!1===t.endsWith(r)&&(e.stack=t+=r)}(f),f}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3670:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},3703:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getSortedRouteObjects:function(){return o},getSortedRoutes:function(){return n}});class r{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e){void 0===e&&(e="/");let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let r=t.map(t=>this.children.get(t)._smoosh(""+e+t+"/")).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&r.push(...this.children.get("[]")._smoosh(e+"["+this.slugName+"]/")),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error('You cannot define a route with the same specificity as a optional catch-all route ("'+t+'" and "'+t+"[[..."+this.optionalRestSlugName+']]").'),"__NEXT_ERROR_CODE",{value:"E458",enumerable:!1,configurable:!0});r.unshift(t)}return null!==this.restSlugName&&r.push(...this.children.get("[...]")._smoosh(e+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&r.push(...this.children.get("[[...]]")._smoosh(e+"[[..."+this.optionalRestSlugName+"]]/")),r}_insert(e,t,n){if(0===e.length){this.placeholder=!1;return}if(n)throw Object.defineProperty(Error("Catch-all must be the last part of the URL."),"__NEXT_ERROR_CODE",{value:"E392",enumerable:!1,configurable:!0});let o=e[0];if(o.startsWith("[")&&o.endsWith("]")){let r=o.slice(1,-1),i=!1;if(r.startsWith("[")&&r.endsWith("]")&&(r=r.slice(1,-1),i=!0),r.startsWith("…"))throw Object.defineProperty(Error("Detected a three-dot character ('…') at ('"+r+"'). Did you mean ('...')?"),"__NEXT_ERROR_CODE",{value:"E147",enumerable:!1,configurable:!0});if(r.startsWith("...")&&(r=r.substring(3),n=!0),r.startsWith("[")||r.endsWith("]"))throw Object.defineProperty(Error("Segment names may not start or end with extra brackets ('"+r+"')."),"__NEXT_ERROR_CODE",{value:"E421",enumerable:!1,configurable:!0});if(r.startsWith("."))throw Object.defineProperty(Error("Segment names may not start with erroneous periods ('"+r+"')."),"__NEXT_ERROR_CODE",{value:"E288",enumerable:!1,configurable:!0});function a(e,r){if(null!==e&&e!==r)throw Object.defineProperty(Error("You cannot use different slug names for the same dynamic path ('"+e+"' !== '"+r+"')."),"__NEXT_ERROR_CODE",{value:"E337",enumerable:!1,configurable:!0});t.forEach(e=>{if(e===r)throw Object.defineProperty(Error('You cannot have the same slug name "'+r+'" repeat within a single dynamic path'),"__NEXT_ERROR_CODE",{value:"E247",enumerable:!1,configurable:!0});if(e.replace(/\W/g,"")===o.replace(/\W/g,""))throw Object.defineProperty(Error('You cannot have the slug names "'+e+'" and "'+r+'" differ only by non-word symbols within a single dynamic path'),"__NEXT_ERROR_CODE",{value:"E499",enumerable:!1,configurable:!0})}),t.push(r)}if(n)if(i){if(null!=this.restSlugName)throw Object.defineProperty(Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+e[0]+'" ).'),"__NEXT_ERROR_CODE",{value:"E299",enumerable:!1,configurable:!0});a(this.optionalRestSlugName,r),this.optionalRestSlugName=r,o="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+e[0]+'").'),"__NEXT_ERROR_CODE",{value:"E300",enumerable:!1,configurable:!0});a(this.restSlugName,r),this.restSlugName=r,o="[...]"}else{if(i)throw Object.defineProperty(Error('Optional route parameters are not yet supported ("'+e[0]+'").'),"__NEXT_ERROR_CODE",{value:"E435",enumerable:!1,configurable:!0});a(this.slugName,r),this.slugName=r,o="[]"}}this.children.has(o)||this.children.set(o,new r),this.children.get(o)._insert(e.slice(1),t,n)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function n(e){let t=new r;return e.forEach(e=>t.insert(e)),t.smoosh()}function o(e,t){let r={},o=[];for(let n=0;ne[r[t]])}},3716:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(3670);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},3718:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(8757),self.__next_set_public_path__=e=>{r.p=e},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3776:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(4232),o=n.useLayoutEffect,a=n.useEffect;function i(e){let{headManager:t,reduceComponentsToState:r}=e;function i(){if(t&&t.mountedInstances){let o=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(o,e))}}return o(()=>{var r;return null==t||null==(r=t.mountedInstances)||r.add(e.children),()=>{var r;null==t||null==(r=t.mountedInstances)||r.delete(e.children)}}),o(()=>(t&&(t._pendingUpdate=i),()=>{t&&(t._pendingUpdate=i)})),a(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},3802:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{APP_BUILD_MANIFEST:function(){return E},APP_CLIENT_INTERNALS:function(){return Q},APP_PATHS_MANIFEST:function(){return m},APP_PATH_ROUTES_MANIFEST:function(){return g},BARREL_OPTIMIZATION_PREFIX:function(){return X},BLOCKED_PAGES:function(){return U},BUILD_ID_FILE:function(){return D},BUILD_MANIFEST:function(){return b},CLIENT_PUBLIC_FILES_PATH:function(){return k},CLIENT_REFERENCE_MANIFEST:function(){return W},CLIENT_STATIC_FILES_PATH:function(){return F},CLIENT_STATIC_FILES_RUNTIME_AMP:function(){return Z},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return K},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return $},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return et},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return er},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return J},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ee},COMPILER_INDEXES:function(){return a},COMPILER_NAMES:function(){return o},CONFIG_FILES:function(){return L},DEFAULT_RUNTIME_WEBPACK:function(){return en},DEFAULT_SANS_SERIF_FONT:function(){return eu},DEFAULT_SERIF_FONT:function(){return el},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return N},DEV_CLIENT_PAGES_MANIFEST:function(){return C},DYNAMIC_CSS_MANIFEST:function(){return Y},EDGE_RUNTIME_WEBPACK:function(){return eo},EDGE_UNSUPPORTED_NODE_APIS:function(){return ep},EXPORT_DETAIL:function(){return O},EXPORT_MARKER:function(){return R},FUNCTIONS_CONFIG_MANIFEST:function(){return y},IMAGES_MANIFEST:function(){return T},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return z},MIDDLEWARE_BUILD_MANIFEST:function(){return q},MIDDLEWARE_MANIFEST:function(){return w},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return V},MODERN_BROWSERSLIST_TARGET:function(){return n.default},NEXT_BUILTIN_DOCUMENT:function(){return H},NEXT_FONT_MANIFEST:function(){return v},PAGES_MANIFEST:function(){return h},PHASE_DEVELOPMENT_SERVER:function(){return f},PHASE_EXPORT:function(){return u},PHASE_INFO:function(){return p},PHASE_PRODUCTION_BUILD:function(){return s},PHASE_PRODUCTION_SERVER:function(){return c},PHASE_TEST:function(){return d},PRERENDER_MANIFEST:function(){return S},REACT_LOADABLE_MANIFEST:function(){return x},ROUTES_MANIFEST:function(){return j},RSC_MODULE_TYPES:function(){return ed},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return A},SERVER_PROPS_ID:function(){return ei},SERVER_REFERENCE_MANIFEST:function(){return G},STATIC_PROPS_ID:function(){return ea},STATIC_STATUS_PAGES:function(){return es},STRING_LITERAL_DROP_BUNDLE:function(){return B},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return P},SYSTEM_ENTRYPOINTS:function(){return eh},TRACE_OUTPUT_VERSION:function(){return ec},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ef},UNDERSCORE_NOT_FOUND_ROUTE:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return l},WEBPACK_STATS:function(){return _}});let n=r(4252)._(r(6582)),o={client:"client",server:"server",edgeServer:"edge-server"},a={[o.client]:0,[o.server]:1,[o.edgeServer]:2},i="/_not-found",l=""+i+"/page",u="phase-export",s="phase-production-build",c="phase-production-server",f="phase-development-server",d="phase-test",p="phase-info",h="pages-manifest.json",_="webpack-stats.json",m="app-paths-manifest.json",g="app-path-routes-manifest.json",b="build-manifest.json",E="app-build-manifest.json",y="functions-config-manifest.json",P="subresource-integrity-manifest",v="next-font-manifest",R="export-marker.json",O="export-detail.json",S="prerender-manifest.json",j="routes-manifest.json",T="images-manifest.json",A="required-server-files.json",C="_devPagesManifest.json",w="middleware-manifest.json",I="_clientMiddlewareManifest.json",N="_devMiddlewareManifest.json",x="react-loadable-manifest.json",M="server",L=["next.config.js","next.config.mjs","next.config.ts"],D="BUILD_ID",U=["/_document","/_app","/_error"],k="public",F="static",B="__NEXT_DROP_CLIENT_FILE__",H="__NEXT_BUILTIN_DOCUMENT__",X="__barrel_optimize__",W="client-reference-manifest",G="server-reference-manifest",q="middleware-build-manifest",V="middleware-react-loadable-manifest",z="interception-route-rewrite-manifest",Y="dynamic-css-manifest",K="main",$=""+K+"-app",Q="app-pages-internals",J="react-refresh",Z="amp",ee="webpack",et="polyfills",er=Symbol(et),en="webpack-runtime",eo="edge-runtime-webpack",ea="__N_SSG",ei="__N_SSP",el={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},eu={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},es=["/500"],ec=1,ef=6e3,ed={client:"client",server:"server"},ep=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eh=new Set([K,J,Z,$]);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3836:(e,t,r)=>{"use strict";function n(e,t){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeLocale",{enumerable:!0,get:function(){return n}}),r(3670),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3996:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return b},handleClientScriptLoad:function(){return _},initScriptLoader:function(){return m}});let n=r(4252),o=r(8365),a=r(7876),i=n._(r(8477)),l=o._(r(4232)),u=r(8831),s=r(9611),c=r(6959),f=new Map,d=new Set,p=e=>{if(i.default.preinit)return void e.forEach(e=>{i.default.preinit(e,{as:"style"})});{let t=document.head;e.forEach(e=>{let r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,t.appendChild(r)})}},h=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:o=null,dangerouslySetInnerHTML:a,children:i="",strategy:l="afterInteractive",onError:u,stylesheets:c}=e,h=r||t;if(h&&d.has(h))return;if(f.has(t)){d.add(h),f.get(t).then(n,u);return}let _=()=>{o&&o(),d.add(h)},m=document.createElement("script"),g=new Promise((e,t)=>{m.addEventListener("load",function(t){e(),n&&n.call(this,t),_()}),m.addEventListener("error",function(e){t(e)})}).catch(function(e){u&&u(e)});a?(m.innerHTML=a.__html||"",_()):i?(m.textContent="string"==typeof i?i:Array.isArray(i)?i.join(""):"",_()):t&&(m.src=t,f.set(t,g)),(0,s.setAttributesFromProps)(m,e),"worker"===l&&m.setAttribute("type","text/partytown"),m.setAttribute("data-nscript",l),c&&p(c),document.body.appendChild(m)};function _(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,c.requestIdleCallback)(()=>h(e))}):h(e)}function m(e){e.forEach(_),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");d.add(t)})}function g(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:o=null,strategy:s="afterInteractive",onError:f,stylesheets:p,..._}=e,{updateScripts:m,scripts:g,getIsSsr:b,appDir:E,nonce:y}=(0,l.useContext)(u.HeadManagerContext),P=(0,l.useRef)(!1);(0,l.useEffect)(()=>{let e=t||r;P.current||(o&&e&&d.has(e)&&o(),P.current=!0)},[o,t,r]);let v=(0,l.useRef)(!1);if((0,l.useEffect)(()=>{if(!v.current){if("afterInteractive"===s)h(e);else"lazyOnload"===s&&("complete"===document.readyState?(0,c.requestIdleCallback)(()=>h(e)):window.addEventListener("load",()=>{(0,c.requestIdleCallback)(()=>h(e))}));v.current=!0}},[e,s]),("beforeInteractive"===s||"worker"===s)&&(m?(g[s]=(g[s]||[]).concat([{id:t,src:r,onLoad:n,onReady:o,onError:f,..._}]),m(g)):b&&b()?d.add(t||r):b&&!b()&&h(e)),E){if(p&&p.forEach(e=>{i.default.preinit(e,{as:"style"})}),"beforeInteractive"===s)if(!r)return _.dangerouslySetInnerHTML&&(_.children=_.dangerouslySetInnerHTML.__html,delete _.dangerouslySetInnerHTML),(0,a.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([0,{..._,id:t}])+")"}});else return i.default.preload(r,_.integrity?{as:"script",integrity:_.integrity,nonce:y,crossOrigin:_.crossOrigin}:{as:"script",nonce:y,crossOrigin:_.crossOrigin}),(0,a.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([r,{..._,id:t}])+")"}});"afterInteractive"===s&&r&&i.default.preload(r,_.integrity?{as:"script",integrity:_.integrity,nonce:y,crossOrigin:_.crossOrigin}:{as:"script",nonce:y,crossOrigin:_.crossOrigin})}return null}Object.defineProperty(g,"__nextScript",{value:!0});let b=g;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4069:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BloomFilter",{enumerable:!0,get:function(){return r}});class r{static from(e,t){void 0===t&&(t=1e-4);let n=new r(e.length,t);for(let t of e)n.add(t);return n}export(){return{numItems:this.numItems,errorRate:this.errorRate,numBits:this.numBits,numHashes:this.numHashes,bitArray:this.bitArray}}import(e){this.numItems=e.numItems,this.errorRate=e.errorRate,this.numBits=e.numBits,this.numHashes=e.numHashes,this.bitArray=e.bitArray}add(e){this.getHashValues(e).forEach(e=>{this.bitArray[e]=1})}contains(e){return this.getHashValues(e).every(e=>this.bitArray[e])}getHashValues(e){let t=[];for(let r=1;r<=this.numHashes;r++){let n=function(e){let t=0;for(let r=0;r>>13,t=Math.imul(t,0x5bd1e995);return t>>>0}(""+e+r)%this.numBits;t.push(n)}return t}constructor(e,t=1e-4){this.numItems=e,this.errorRate=t,this.numBits=Math.ceil(-(e*Math.log(t))/(Math.log(2)*Math.log(2))),this.numHashes=Math.ceil(this.numBits/e*Math.log(2)),this.bitArray=Array(this.numBits).fill(0)}}},4181:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTTPAccessErrorStatus:function(){return r},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return o},getAccessFallbackErrorTypeByStatus:function(){return l},getAccessFallbackHTTPStatus:function(){return i},isHTTPAccessFallbackError:function(){return a}});let r={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},n=new Set(Object.values(r)),o="NEXT_HTTP_ERROR_FALLBACK";function a(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===o&&n.has(Number(r))}function i(e){return Number(e.digest.split(";")[1])}function l(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4252:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n})},4294:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Router:function(){return a.default},createRouter:function(){return _},default:function(){return p},makePublicRouterInstance:function(){return m},useRouter:function(){return h},withRouter:function(){return u.default}});let n=r(4252),o=n._(r(4232)),a=n._(r(8276)),i=r(9948),l=n._(r(6240)),u=n._(r(8147)),s={router:null,readyCallbacks:[],ready(e){if(this.router)return e();this.readyCallbacks.push(e)}},c=["pathname","route","query","asPath","components","isFallback","basePath","locale","locales","defaultLocale","isReady","isPreview","isLocaleDomain","domainLocales"],f=["push","replace","reload","back","prefetch","beforePopState"];function d(){if(!s.router)throw Object.defineProperty(Error('No router instance found.\nYou should only use "next/router" on the client side of your app.\n'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return s.router}Object.defineProperty(s,"events",{get:()=>a.default.events}),c.forEach(e=>{Object.defineProperty(s,e,{get:()=>d()[e]})}),f.forEach(e=>{s[e]=function(){for(var t=arguments.length,r=Array(t),n=0;n{s.ready(()=>{a.default.events.on(e,function(){for(var t=arguments.length,r=Array(t),n=0;ne()),s.readyCallbacks=[],s.router}function m(e){let t={};for(let r of c){if("object"==typeof e[r]){t[r]=Object.assign(Array.isArray(e[r])?[]:{},e[r]);continue}t[r]=e[r]}return t.events=a.default.events,f.forEach(r=>{t[r]=function(){for(var t=arguments.length,n=Array(t),o=0;o{"use strict";function r(e,t){let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n=r.length;n--;){let o=r[n];if("query"===o){let r=Object.keys(e.query);if(r.length!==Object.keys(t.query).length)return!1;for(let n=r.length;n--;){let o=r[n];if(!t.query.hasOwnProperty(o)||e.query[o]!==t.query[o])return!1}}else if(!t.hasOwnProperty(o)||e[o]!==t[o])return!1}return!0}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"compareRouterStates",{enumerable:!0,get:function(){return r}})},4547:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return i},isEqualNode:function(){return a}});let o=r(9611);function a(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){let r=t.getAttribute("nonce");if(r&&!e.getAttribute("nonce")){let n=t.cloneNode(!0);return n.setAttribute("nonce",""),n.nonce=r,r===e.nonce&&e.isEqualNode(n)}}return e.isEqualNode(t)}function i(){return{mountedInstances:new Set,updateHead:e=>{let t={};e.forEach(e=>{if("link"===e.type&&e.props["data-optimized-fonts"])if(document.querySelector('style[data-href="'+e.props["data-href"]+'"]'))return;else e.props.href=e.props["data-href"],e.props["data-href"]=void 0;let r=t[e.type]||[];r.push(e),t[e.type]=r});let r=t.title?t.title[0]:null,o="";if(r){let{children:e}=r.props;o="string"==typeof e?e:Array.isArray(e)?e.join(""):""}o!==document.title&&(document.title=o),["meta","base","link","style","script"].forEach(e=>{n(e,t[e]||[])})}}}n=(e,t)=>{let r=document.querySelector("head");if(!r)return;let n=new Set(r.querySelectorAll(""+e+"[data-next-head]"));if("meta"===e){let e=r.querySelector("meta[charset]");null!==e&&n.add(e)}let i=[];for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{globalThis.console.error(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4591:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return n}}),r(8205);let n=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(4252)._(r(9871));class o{end(e){if("ended"===this.state.state)throw Object.defineProperty(Error("Span has already ended"),"__NEXT_ERROR_CODE",{value:"E17",enumerable:!1,configurable:!0});this.state={state:"ended",endTime:null!=e?e:Date.now()},this.onSpanEnd(this)}constructor(e,t,r){var n,o;this.name=e,this.attributes=null!=(n=t.attributes)?n:{},this.startTime=null!=(o=t.startTime)?o:Date.now(),this.onSpanEnd=r,this.state={state:"inprogress"}}}class a{startSpan(e,t){return new o(e,t,this.handleSpanEnd)}onSpanEnd(e){return this._emitter.on("spanend",e),()=>{this._emitter.off("spanend",e)}}constructor(){this._emitter=(0,n.default)(),this.handleSpanEnd=e=>{this._emitter.emit("spanend",e)}}}let i=new a;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4902:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},4980:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"formatNextPathnameInfo",{enumerable:!0,get:function(){return l}});let n=r(4902),o=r(2889),a=r(7952),i=r(6711);function l(e){let t=(0,i.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,a.addPathSuffix)((0,o.addPathPrefix)(t,"/_next/data/"+e.buildId),"/"===e.pathname?"index.json":".json")),t=(0,o.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,a.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},5195:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"denormalizePagePath",{enumerable:!0,get:function(){return a}});let n=r(3069),o=r(5419);function a(e){let t=(0,o.normalizePathSep)(e);return t.startsWith("/index/")&&!(0,n.isDynamicRoute)(t)?t.slice(6):"/index"!==t?t:"/"}},5214:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getNamedMiddlewareRegex:function(){return _},getNamedRouteRegex:function(){return h},getRouteRegex:function(){return f},parseParameter:function(){return u}});let n=r(9308),o=r(7188),a=r(1924),i=r(4902),l=/^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;function u(e){let t=e.match(l);return t?s(t[2]):s(e)}function s(e){let t=e.startsWith("[")&&e.endsWith("]");t&&(e=e.slice(1,-1));let r=e.startsWith("...");return r&&(e=e.slice(3)),{key:e,repeat:r,optional:t}}function c(e,t,r){let n={},u=1,c=[];for(let f of(0,i.removeTrailingSlash)(e).slice(1).split("/")){let e=o.INTERCEPTION_ROUTE_MARKERS.find(e=>f.startsWith(e)),i=f.match(l);if(e&&i&&i[2]){let{key:t,optional:r,repeat:o}=s(i[2]);n[t]={pos:u++,repeat:o,optional:r},c.push("/"+(0,a.escapeStringRegexp)(e)+"([^/]+?)")}else if(i&&i[2]){let{key:e,repeat:t,optional:o}=s(i[2]);n[e]={pos:u++,repeat:t,optional:o},r&&i[1]&&c.push("/"+(0,a.escapeStringRegexp)(i[1]));let l=t?o?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)";r&&i[1]&&(l=l.substring(1)),c.push(l)}else c.push("/"+(0,a.escapeStringRegexp)(f));t&&i&&i[3]&&c.push((0,a.escapeStringRegexp)(i[3]))}return{parameterizedRoute:c.join(""),groups:n}}function f(e,t){let{includeSuffix:r=!1,includePrefix:n=!1,excludeOptionalTrailingSlash:o=!1}=void 0===t?{}:t,{parameterizedRoute:a,groups:i}=c(e,r,n),l=a;return o||(l+="(?:/)?"),{re:RegExp("^"+l+"$"),groups:i}}function d(e){let t,{interceptionMarker:r,getSafeRouteKey:n,segment:o,routeKeys:i,keyPrefix:l,backreferenceDuplicateKeys:u}=e,{key:c,optional:f,repeat:d}=s(o),p=c.replace(/\W/g,"");l&&(p=""+l+p);let h=!1;(0===p.length||p.length>30)&&(h=!0),isNaN(parseInt(p.slice(0,1)))||(h=!0),h&&(p=n());let _=p in i;l?i[p]=""+l+c:i[p]=c;let m=r?(0,a.escapeStringRegexp)(r):"";return t=_&&u?"\\k<"+p+">":d?"(?<"+p+">.+?)":"(?<"+p+">[^/]+?)",f?"(?:/"+m+t+")?":"/"+m+t}function p(e,t,r,u,s){let c,f=(c=0,()=>{let e="",t=++c;for(;t>0;)e+=String.fromCharCode(97+(t-1)%26),t=Math.floor((t-1)/26);return e}),p={},h=[];for(let c of(0,i.removeTrailingSlash)(e).slice(1).split("/")){let e=o.INTERCEPTION_ROUTE_MARKERS.some(e=>c.startsWith(e)),i=c.match(l);if(e&&i&&i[2])h.push(d({getSafeRouteKey:f,interceptionMarker:i[1],segment:i[2],routeKeys:p,keyPrefix:t?n.NEXT_INTERCEPTION_MARKER_PREFIX:void 0,backreferenceDuplicateKeys:s}));else if(i&&i[2]){u&&i[1]&&h.push("/"+(0,a.escapeStringRegexp)(i[1]));let e=d({getSafeRouteKey:f,segment:i[2],routeKeys:p,keyPrefix:t?n.NEXT_QUERY_PARAM_PREFIX:void 0,backreferenceDuplicateKeys:s});u&&i[1]&&(e=e.substring(1)),h.push(e)}else h.push("/"+(0,a.escapeStringRegexp)(c));r&&i&&i[3]&&h.push((0,a.escapeStringRegexp)(i[3]))}return{namedParameterizedRoute:h.join(""),routeKeys:p}}function h(e,t){var r,n,o;let a=p(e,t.prefixRouteKeys,null!=(r=t.includeSuffix)&&r,null!=(n=t.includePrefix)&&n,null!=(o=t.backreferenceDuplicateKeys)&&o),i=a.namedParameterizedRoute;return t.excludeOptionalTrailingSlash||(i+="(?:/)?"),{...f(e,t),namedRegex:"^"+i+"$",routeKeys:a.routeKeys}}function _(e,t){let{parameterizedRoute:r}=c(e,!1,!1),{catchAll:n=!0}=t;if("/"===r)return{namedRegex:"^/"+(n?".*":"")+"$"};let{namedParameterizedRoute:o}=p(e,!1,!1,!1,!1);return{namedRegex:"^"+o+(n?"(?:(/.*)?)":"")+"$"}}},5364:(e,t,r)=>{"use strict";var n,o;e.exports=(null==(n=r.g.process)?void 0:n.env)&&"object"==typeof(null==(o=r.g.process)?void 0:o.env)?r.g.process:r(5861)},5419:(e,t)=>{"use strict";function r(e){return e.replace(/\\/g,"/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathSep",{enumerable:!0,get:function(){return r}})},5519:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getRouteMatcher",{enumerable:!0,get:function(){return o}});let n=r(2746);function o(e){let{re:t,groups:r}=e;return e=>{let o=t.exec(e);if(!o)return!1;let a=e=>{try{return decodeURIComponent(e)}catch(e){throw Object.defineProperty(new n.DecodeError("failed to decode param"),"__NEXT_ERROR_CODE",{value:"E528",enumerable:!1,configurable:!0})}},i={};for(let[e,t]of Object.entries(r)){let r=o[t.pos];void 0!==r&&(t.repeat?i[e]=r.split("/").map(e=>a(e)):i[e]=a(r))}return i}}},5679:(e,t,r)=>{"use strict";var n=r(5364);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return m},defaultHead:function(){return d}});let o=r(4252),a=r(8365),i=r(7876),l=a._(r(4232)),u=o._(r(3776)),s=r(303),c=r(8831),f=r(6807);function d(e){void 0===e&&(e=!1);let t=[(0,i.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,i.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function p(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(6079);let h=["name","httpEquiv","charSet","itemProp"];function _(e,t){let{inAmpMode:r}=t;return e.reduce(p,[]).reverse().concat(d(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return o=>{let a=!0,i=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){i=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?a=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?a=!1:t.add(o.type);break;case"meta":for(let e=0,t=h.length;e{let o=e.key||t;if(n.env.__NEXT_OPTIMIZE_FONTS&&!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,l.default.cloneElement(e,t)}return l.default.cloneElement(e,{key:o})})}let m=function(e){let{children:t}=e,r=(0,l.useContext)(s.AmpStateContext),n=(0,l.useContext)(c.HeadManagerContext);return(0,i.jsx)(u.default,{reduceComponentsToState:_,headManager:n,inAmpMode:(0,f.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5842:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(3718),r(7647);let n=r(9525);window.next={version:n.version,get router(){return n.router},emitter:n.emitter},(0,n.initialize)({}).then(()=>(0,n.hydrate)()).catch(console.error),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5861:e=>{!function(){var t={229:function(e){var t,r,n,o=e.exports={};function a(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:a}catch(e){t=a}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function l(e){if(t===setTimeout)return setTimeout(e,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var u=[],s=!1,c=-1;function f(){s&&n&&(s=!1,n.length?u=n.concat(u):c=-1,u.length&&d())}function d(){if(!s){var e=l(f);s=!0;for(var t=u.length;t;){for(n=u,u=[];++c1)for(var r=1;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PathParamsContext:function(){return i},PathnameContext:function(){return a},SearchParamsContext:function(){return o}});let n=r(4232),o=(0,n.createContext)(null),a=(0,n.createContext)(null),i=(0,n.createContext)(null)},6023:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(3716);function o(e){return(0,n.pathHasPrefix)(e,"/docs-site")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6079:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},6240:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return o},getProperError:function(){return a}});let n=r(8096);function o(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function a(e){return o(e)?e:Object.defineProperty(Error((0,n.isPlainObject)(e)?function(e){let t=new WeakSet;return JSON.stringify(e,(e,r)=>{if("object"==typeof r&&null!==r){if(t.has(r))return"[Circular]";t.add(r)}return r})}(e):e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},6292:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removePathPrefix",{enumerable:!0,get:function(){return o}});let n=r(3716);function o(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:"/"+r}},6582:e=>{"use strict";e.exports=["chrome 64","edge 79","firefox 67","opera 51","safari 12"]},6711:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return a}});let n=r(2889),o=r(3716);function a(e,t,r,a){if(!t||t===r)return e;let i=e.toLowerCase();return!a&&((0,o.pathHasPrefix)(i,"/api")||(0,o.pathHasPrefix)(i,"/"+t.toLowerCase()))?e:(0,n.addPathPrefix)(e,"/"+t)}},6807:(e,t)=>{"use strict";function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},6818:(e,t)=>{"use strict";let r;function n(e){var t;return(null==(t=function(){if(void 0===r){var e;r=(null==(e=window.trustedTypes)?void 0:e.createPolicy("nextjs",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e}))||null}return r}())?void 0:t.createScriptURL(e))||e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"__unsafeCreateTrustedScriptURL",{enumerable:!0,get:function(){return n}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6959:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{cancelIdleCallback:function(){return n},requestIdleCallback:function(){return r}});let r="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},n="undefined"!=typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6999:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return a}});let n=r(4181),o=r(2591);function a(e){return(0,o.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7176:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createRouteLoader:function(){return m},getClientBuildManifest:function(){return h},isAssetError:function(){return c},markAssetError:function(){return s}}),r(4252),r(1827);let n=r(6818),o=r(6959),a=r(8757),i=r(536);function l(e,t,r){let n,o=t.get(e);if(o)return"future"in o?o.future:Promise.resolve(o);let a=new Promise(e=>{n=e});return t.set(e,{resolve:n,future:a}),r?r().then(e=>(n(e),e)).catch(r=>{throw t.delete(e),r}):a}let u=Symbol("ASSET_LOAD_ERROR");function s(e){return Object.defineProperty(e,u,{})}function c(e){return e&&u in e}let f=function(e){try{return e=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||e.relList.supports("prefetch")}catch(e){return!1}}(),d=()=>(0,a.getDeploymentIdQueryOrEmptyString)();function p(e,t,r){return new Promise((n,a)=>{let i=!1;e.then(e=>{i=!0,n(e)}).catch(a),(0,o.requestIdleCallback)(()=>setTimeout(()=>{i||a(r)},t))})}function h(){return self.__BUILD_MANIFEST?Promise.resolve(self.__BUILD_MANIFEST):p(new Promise(e=>{let t=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{e(self.__BUILD_MANIFEST),t&&t()}}),3800,s(Object.defineProperty(Error("Failed to load client build manifest"),"__NEXT_ERROR_CODE",{value:"E273",enumerable:!1,configurable:!0})))}function _(e,t){return h().then(r=>{if(!(t in r))throw s(Object.defineProperty(Error("Failed to lookup route: "+t),"__NEXT_ERROR_CODE",{value:"E446",enumerable:!1,configurable:!0}));let o=r[t].map(t=>e+"/_next/"+(0,i.encodeURIPath)(t));return{scripts:o.filter(e=>e.endsWith(".js")).map(e=>(0,n.__unsafeCreateTrustedScriptURL)(e)+d()),css:o.filter(e=>e.endsWith(".css")).map(e=>e+d())}})}function m(e){let t=new Map,r=new Map,n=new Map,a=new Map;function i(e){{var t;let n=r.get(e.toString());return n?n:document.querySelector('script[src^="'+e+'"]')?Promise.resolve():(r.set(e.toString(),n=new Promise((r,n)=>{(t=document.createElement("script")).onload=r,t.onerror=()=>n(s(Object.defineProperty(Error("Failed to load script: "+e),"__NEXT_ERROR_CODE",{value:"E74",enumerable:!1,configurable:!0}))),t.crossOrigin=void 0,t.src=e,document.body.appendChild(t)})),n)}}function u(e){let t=n.get(e);return t||n.set(e,t=fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw Object.defineProperty(Error("Failed to load stylesheet: "+e),"__NEXT_ERROR_CODE",{value:"E189",enumerable:!1,configurable:!0});return t.text().then(t=>({href:e,content:t}))}).catch(e=>{throw s(e)})),t}return{whenEntrypoint:e=>l(e,t),onEntrypoint(e,r){(r?Promise.resolve().then(()=>r()).then(e=>({component:e&&e.default||e,exports:e}),e=>({error:e})):Promise.resolve(void 0)).then(r=>{let n=t.get(e);n&&"resolve"in n?r&&(t.set(e,r),n.resolve(r)):(r?t.set(e,r):t.delete(e),a.delete(e))})},loadRoute(r,n){return l(r,a,()=>{let o;return p(_(e,r).then(e=>{let{scripts:n,css:o}=e;return Promise.all([t.has(r)?[]:Promise.all(n.map(i)),Promise.all(o.map(u))])}).then(e=>this.whenEntrypoint(r).then(t=>({entrypoint:t,styles:e[1]}))),3800,s(Object.defineProperty(Error("Route did not complete loading: "+r),"__NEXT_ERROR_CODE",{value:"E12",enumerable:!1,configurable:!0}))).then(e=>{let{entrypoint:t,styles:r}=e,n=Object.assign({styles:r},t);return"error"in t?t:n}).catch(e=>{if(n)throw e;return{error:e}}).finally(()=>null==o?void 0:o())})},prefetch(t){let r;return(r=navigator.connection)&&(r.saveData||/2g/.test(r.effectiveType))?Promise.resolve():_(e,t).then(e=>Promise.all(f?e.scripts.map(e=>{var t,r,n;return t=e.toString(),r="script",new Promise((e,o)=>{let a='\n link[rel="prefetch"][href^="'+t+'"],\n link[rel="preload"][href^="'+t+'"],\n script[src^="'+t+'"]';if(document.querySelector(a))return e();n=document.createElement("link"),r&&(n.as=r),n.rel="prefetch",n.crossOrigin=void 0,n.onload=e,n.onerror=()=>o(s(Object.defineProperty(Error("Failed to prefetch: "+t),"__NEXT_ERROR_CODE",{value:"E268",enumerable:!1,configurable:!0}))),n.href=t,document.head.appendChild(n)})}):[])).then(()=>{(0,o.requestIdleCallback)(()=>this.loadRoute(t,!0).catch(()=>{}))}).catch(()=>{})}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7188:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return i},isInterceptionRouteAppPath:function(){return a}});let n=r(2959),o=["(..)(..)","(.)","(..)","(...)"];function a(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function i(e){let t,r,a;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,a]=e.split(r,2);break}if(!t||!r||!a)throw Object.defineProperty(Error("Invalid interception route: "+e+". Must be in the format //(..|...|..)(..)/"),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":a="/"===t?"/"+a:t+"/"+a;break;case"(..)":if("/"===t)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..) marker at the root level, use (.) instead."),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});a=t.split("/").slice(0,-1).concat(a).join("/");break;case"(...)":a="/"+a;break;case"(..)(..)":let i=t.split("/");if(i.length<=2)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..)(..) marker at the root level or one level up."),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});a=i.slice(0,-2).concat(a).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:t,interceptedRoute:a}}},7207:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"onRecoverableError",{enumerable:!0,get:function(){return u}});let n=r(4252),o=r(3123),a=r(4569),i=r(3575),l=n._(r(6240)),u=(e,t)=>{let r=(0,l.default)(e)&&"cause"in e?e.cause:e,n=(0,i.getReactStitchedError)(r);(0,o.isBailoutToCSRError)(r)||(0,a.reportGlobalError)(n)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7407:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTML_LIMITED_BOT_UA_RE:function(){return n.HTML_LIMITED_BOT_UA_RE},HTML_LIMITED_BOT_UA_RE_STRING:function(){return a},getBotType:function(){return u},isBot:function(){return l}});let n=r(2455),o=/Googlebot|Google-PageRenderer|AdsBot-Google|googleweblight|Storebot-Google/i,a=n.HTML_LIMITED_BOT_UA_RE.source;function i(e){return n.HTML_LIMITED_BOT_UA_RE.test(e)}function l(e){return o.test(e)||i(e)}function u(e){return o.test(e)?"dom":i(e)?"html":void 0}},7539:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{VALID_LOADERS:function(){return r},imageConfigDefault:function(){return n}});let r=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:void 0,unoptimized:!1}},7647:(e,t,r)=>{"use strict";e.exports=r(9393)},7952:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathSuffix",{enumerable:!0,get:function(){return o}});let n=r(3670);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+r+t+o+a}},8040:(e,t)=>{"use strict";function r(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,n(e));else t.set(r,n(o));return t}function a(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"interpolateAs",{enumerable:!0,get:function(){return a}});let n=r(5519),o=r(5214);function a(e,t,r){let a="",i=(0,o.getRouteRegex)(e),l=i.groups,u=(t!==e?(0,n.getRouteMatcher)(i)(t):"")||r;a=e;let s=Object.keys(l);return s.every(e=>{let t=u[e]||"",{repeat:r,optional:n}=l[e],o="["+(r?"...":"")+e+"]";return n&&(o=(t?"":"/")+"["+o+"]"),r&&!Array.isArray(t)&&(t=[t]),(n||e in u)&&(a=a.replace(o,r?t.map(e=>encodeURIComponent(e)).join("/"):encodeURIComponent(t))||"/")})||(a=""),{params:s,result:a}}},8089:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{copyNextErrorCode:function(){return n},createDigestWithErrorCode:function(){return r},extractNextErrorCode:function(){return o}});let r=(e,t)=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e?`${t}@${e.__NEXT_ERROR_CODE}`:t,n=(e,t)=>{let r=o(e);r&&"object"==typeof t&&null!==t&&Object.defineProperty(t,"__NEXT_ERROR_CODE",{value:r,enumerable:!1,configurable:!0})},o=e=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e&&"string"==typeof e.__NEXT_ERROR_CODE?e.__NEXT_ERROR_CODE:"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest?e.digest.split("@").find(e=>e.startsWith("E")):void 0},8096:(e,t)=>{"use strict";function r(e){return Object.prototype.toString.call(e)}function n(e){if("[object Object]"!==r(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getObjectClassLabel:function(){return r},isPlainObject:function(){return n}})},8147:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}}),r(4252);let n=r(7876);r(4232);let o=r(4294);function a(e){function t(t){return(0,n.jsx)(e,{router:(0,o.useRouter)(),...t})}return t.getInitialProps=e.getInitialProps,t.origGetInitialProps=e.origGetInitialProps,t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8205:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return a}});let n=r(4902),o=r(3670),a=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:a}=(0,o.parsePath)(e);return""+(0,n.removeTrailingSlash)(t)+r+a};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8213:(e,t)=>{"use strict";function r(e){return new URL(e,"http://n").searchParams}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"asPathToSearchParams",{enumerable:!0,get:function(){return r}})},8276:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createKey:function(){return G},default:function(){return z},matchesMiddleware:function(){return D}});let n=r(4252),o=r(8365),a=r(4902),i=r(7176),l=r(3996),u=o._(r(6240)),s=r(5195),c=r(1862),f=n._(r(9871)),d=r(2746),p=r(9163),h=r(541);r(1226);let _=r(5519),m=r(5214),g=r(8480);r(2616);let b=r(3670),E=r(4591),y=r(3836),P=r(1025),v=r(2092),R=r(6023),O=r(1921),S=r(2326),j=r(3407),T=r(4980),A=r(4359),C=r(1533),w=r(7407),I=r(990),N=r(8069),x=r(3132),M=r(9308);function L(){return Object.assign(Object.defineProperty(Error("Route Cancelled"),"__NEXT_ERROR_CODE",{value:"E315",enumerable:!1,configurable:!0}),{cancelled:!0})}async function D(e){let t=await Promise.resolve(e.router.pageLoader.getMiddleware());if(!t)return!1;let{pathname:r}=(0,b.parsePath)(e.asPath),n=(0,R.hasBasePath)(r)?(0,P.removeBasePath)(r):r,o=(0,v.addBasePath)((0,E.addLocale)(n,e.locale));return t.some(e=>new RegExp(e.regexp).test(o))}function U(e){let t=(0,d.getLocationOrigin)();return e.startsWith(t)?e.substring(t.length):e}function k(e,t,r){let[n,o]=(0,O.resolveHref)(e,t,!0),a=(0,d.getLocationOrigin)(),i=n.startsWith(a),l=o&&o.startsWith(a);n=U(n),o=o?U(o):o;let u=i?n:(0,v.addBasePath)(n),s=r?U((0,O.resolveHref)(e,r)):o||n;return{url:u,as:l?s:(0,v.addBasePath)(s)}}function F(e,t){let r=(0,a.removeTrailingSlash)((0,s.denormalizePagePath)(e));return"/404"===r||"/_error"===r?e:(t.includes(r)||t.some(t=>{if((0,p.isDynamicRoute)(t)&&(0,m.getRouteRegex)(t).re.test(r))return e=t,!0}),(0,a.removeTrailingSlash)(e))}async function B(e){if(!await D(e)||!e.fetchData)return null;let t=await e.fetchData(),r=await function(e,t,r){let n={basePath:r.router.basePath,i18n:{locales:r.router.locales},trailingSlash:!1},o=t.headers.get("x-nextjs-rewrite"),l=o||t.headers.get("x-nextjs-matched-path"),u=t.headers.get(M.MATCHED_PATH_HEADER);if(!u||l||u.includes("__next_data_catchall")||u.includes("/_error")||u.includes("/404")||(l=u),l){if(l.startsWith("/")){let t=(0,h.parseRelativeUrl)(l),u=(0,j.getNextPathnameInfo)(t.pathname,{nextConfig:n,parseData:!0}),s=(0,a.removeTrailingSlash)(u.pathname);return Promise.all([r.router.pageLoader.getPageList(),(0,i.getClientBuildManifest)()]).then(a=>{let[i,{__rewrites:l}]=a,f=(0,E.addLocale)(u.pathname,u.locale);if((0,p.isDynamicRoute)(f)||!o&&i.includes((0,c.normalizeLocalePath)((0,P.removeBasePath)(f),r.router.locales).pathname)){let r=(0,j.getNextPathnameInfo)((0,h.parseRelativeUrl)(e).pathname,{nextConfig:n,parseData:!0});t.pathname=f=(0,v.addBasePath)(r.pathname)}if(!i.includes(s)){let e=F(s,i);e!==s&&(s=e)}let d=i.includes(s)?s:F((0,c.normalizeLocalePath)((0,P.removeBasePath)(t.pathname),r.router.locales).pathname,i);if((0,p.isDynamicRoute)(d)){let e=(0,_.getRouteMatcher)((0,m.getRouteRegex)(d))(f);Object.assign(t.query,e||{})}return{type:"rewrite",parsedAs:t,resolvedHref:d}})}let t=(0,b.parsePath)(e);return Promise.resolve({type:"redirect-external",destination:""+(0,T.formatNextPathnameInfo)({...(0,j.getNextPathnameInfo)(t.pathname,{nextConfig:n,parseData:!0}),defaultLocale:r.router.defaultLocale,buildId:""})+t.query+t.hash})}let s=t.headers.get("x-nextjs-redirect");if(s){if(s.startsWith("/")){let e=(0,b.parsePath)(s),t=(0,T.formatNextPathnameInfo)({...(0,j.getNextPathnameInfo)(e.pathname,{nextConfig:n,parseData:!0}),defaultLocale:r.router.defaultLocale,buildId:""});return Promise.resolve({type:"redirect-internal",newAs:""+t+e.query+e.hash,newUrl:""+t+e.query+e.hash})}return Promise.resolve({type:"redirect-external",destination:s})}return Promise.resolve({type:"next"})}(t.dataHref,t.response,e);return{dataHref:t.dataHref,json:t.json,response:t.response,text:t.text,cacheKey:t.cacheKey,effect:r}}let H=Symbol("SSG_DATA_NOT_FOUND");function X(e){try{return JSON.parse(e)}catch(e){return null}}function W(e){let{dataHref:t,inflightCache:r,isPrefetch:n,hasMiddleware:o,isServerRender:a,parseJSON:l,persistCache:u,isBackground:s,unstable_skipClientCache:c}=e,{href:f}=new URL(t,window.location.href),d=e=>{var s;return(function e(t,r,n){return fetch(t,{credentials:"same-origin",method:n.method||"GET",headers:Object.assign({},n.headers,{"x-nextjs-data":"1"})}).then(o=>!o.ok&&r>1&&o.status>=500?e(t,r-1,n):o)})(t,a?3:1,{headers:Object.assign({},n?{purpose:"prefetch"}:{},n&&o?{"x-middleware-prefetch":"1"}:{},{}),method:null!=(s=null==e?void 0:e.method)?s:"GET"}).then(r=>r.ok&&(null==e?void 0:e.method)==="HEAD"?{dataHref:t,response:r,text:"",json:{},cacheKey:f}:r.text().then(e=>{if(!r.ok){if(o&&[301,302,307,308].includes(r.status))return{dataHref:t,response:r,text:e,json:{},cacheKey:f};if(404===r.status){var n;if(null==(n=X(e))?void 0:n.notFound)return{dataHref:t,json:{notFound:H},response:r,text:e,cacheKey:f}}let l=Object.defineProperty(Error("Failed to load static props"),"__NEXT_ERROR_CODE",{value:"E124",enumerable:!1,configurable:!0});throw a||(0,i.markAssetError)(l),l}return{dataHref:t,json:l?X(e):null,response:r,text:e,cacheKey:f}})).then(e=>(u&&"no-cache"!==e.response.headers.get("x-middleware-cache")||delete r[f],e)).catch(e=>{throw c||delete r[f],("Failed to fetch"===e.message||"NetworkError when attempting to fetch resource."===e.message||"Load failed"===e.message)&&(0,i.markAssetError)(e),e})};return c&&u?d({}).then(e=>("no-cache"!==e.response.headers.get("x-middleware-cache")&&(r[f]=Promise.resolve(e)),e)):void 0!==r[f]?r[f]:r[f]=d(s?{method:"HEAD"}:{})}function G(){return Math.random().toString(36).slice(2,10)}function q(e){let{url:t,router:r}=e;if(t===(0,v.addBasePath)((0,E.addLocale)(r.asPath,r.locale)))throw Object.defineProperty(Error("Invariant: attempted to hard navigate to the same URL "+t+" "+location.href),"__NEXT_ERROR_CODE",{value:"E282",enumerable:!1,configurable:!0});window.location.href=t}let V=e=>{let{route:t,router:r}=e,n=!1,o=r.clc=()=>{n=!0};return()=>{if(n){let e=Object.defineProperty(Error('Abort fetching component for route: "'+t+'"'),"__NEXT_ERROR_CODE",{value:"E483",enumerable:!1,configurable:!0});throw e.cancelled=!0,e}o===r.clc&&(r.clc=null)}};class z{reload(){window.location.reload()}back(){window.history.back()}forward(){window.history.forward()}push(e,t,r){return void 0===r&&(r={}),{url:e,as:t}=k(this,e,t),this.change("pushState",e,t,r)}replace(e,t,r){return void 0===r&&(r={}),{url:e,as:t}=k(this,e,t),this.change("replaceState",e,t,r)}async _bfl(e,t,n,o){{if(!this._bfl_s&&!this._bfl_d){let t,a,{BloomFilter:l}=r(4069);try{({__routerFilterStatic:t,__routerFilterDynamic:a}=await (0,i.getClientBuildManifest)())}catch(t){if(console.error(t),o)return!0;return q({url:(0,v.addBasePath)((0,E.addLocale)(e,n||this.locale,this.defaultLocale)),router:this}),new Promise(()=>{})}(null==t?void 0:t.numHashes)&&(this._bfl_s=new l(t.numItems,t.errorRate),this._bfl_s.import(t)),(null==a?void 0:a.numHashes)&&(this._bfl_d=new l(a.numItems,a.errorRate),this._bfl_d.import(a))}let c=!1,f=!1;for(let{as:r,allowMatchCurrent:i}of[{as:e},{as:t}])if(r){let t=(0,a.removeTrailingSlash)(new URL(r,"http://n").pathname),d=(0,v.addBasePath)((0,E.addLocale)(t,n||this.locale));if(i||t!==(0,a.removeTrailingSlash)(new URL(this.asPath,"http://n").pathname)){var l,u,s;for(let e of(c=c||!!(null==(l=this._bfl_s)?void 0:l.contains(t))||!!(null==(u=this._bfl_s)?void 0:u.contains(d)),[t,d])){let t=e.split("/");for(let e=0;!f&&e{})}}}}return!1}async change(e,t,r,n,o){var s,c,f,O,S,j,T,w,x;let M,U;if(!(0,C.isLocalURL)(t))return q({url:t,router:this}),!1;let B=1===n._h;B||n.shallow||await this._bfl(r,void 0,n.locale);let X=B||n._shouldResolveHref||(0,b.parsePath)(t).pathname===(0,b.parsePath)(r).pathname,W={...this.state},G=!0!==this.isReady;this.isReady=!0;let V=this.isSsr;if(B||(this.isSsr=!1),B&&this.clc)return!1;let Y=W.locale;d.ST&&performance.mark("routeChange");let{shallow:K=!1,scroll:$=!0}=n,Q={shallow:K};this._inFlightRoute&&this.clc&&(V||z.events.emit("routeChangeError",L(),this._inFlightRoute,Q),this.clc(),this.clc=null),r=(0,v.addBasePath)((0,E.addLocale)((0,R.hasBasePath)(r)?(0,P.removeBasePath)(r):r,n.locale,this.defaultLocale));let J=(0,y.removeLocale)((0,R.hasBasePath)(r)?(0,P.removeBasePath)(r):r,W.locale);this._inFlightRoute=r;let Z=Y!==W.locale;if(!B&&this.onlyAHashChange(J)&&!Z){W.asPath=J,z.events.emit("hashChangeStart",r,Q),this.changeState(e,t,r,{...n,scroll:!1}),$&&this.scrollToHash(J);try{await this.set(W,this.components[W.route],null)}catch(e){throw(0,u.default)(e)&&e.cancelled&&z.events.emit("routeChangeError",e,J,Q),e}return z.events.emit("hashChangeComplete",r,Q),!0}let ee=(0,h.parseRelativeUrl)(t),{pathname:et,query:er}=ee;try{[M,{__rewrites:U}]=await Promise.all([this.pageLoader.getPageList(),(0,i.getClientBuildManifest)(),this.pageLoader.getMiddleware()])}catch(e){return q({url:r,router:this}),!1}this.urlIsNew(J)||Z||(e="replaceState");let en=r;et=et?(0,a.removeTrailingSlash)((0,P.removeBasePath)(et)):et;let eo=(0,a.removeTrailingSlash)(et),ea=r.startsWith("/")&&(0,h.parseRelativeUrl)(r).pathname;if(null==(s=this.components[et])?void 0:s.__appRouter)return q({url:r,router:this}),new Promise(()=>{});let ei=!!(ea&&eo!==ea&&(!(0,p.isDynamicRoute)(eo)||!(0,_.getRouteMatcher)((0,m.getRouteRegex)(eo))(ea))),el=!n.shallow&&await D({asPath:r,locale:W.locale,router:this});if(B&&el&&(X=!1),X&&"/_error"!==et&&(n._shouldResolveHref=!0,ee.pathname=F(et,M),ee.pathname!==et&&(et=ee.pathname,ee.pathname=(0,v.addBasePath)(et),el||(t=(0,g.formatWithValidation)(ee)))),!(0,C.isLocalURL)(r))return q({url:r,router:this}),!1;en=(0,y.removeLocale)((0,P.removeBasePath)(en),W.locale),eo=(0,a.removeTrailingSlash)(et);let eu=!1;if((0,p.isDynamicRoute)(eo)){let e=(0,h.parseRelativeUrl)(en),n=e.pathname,o=(0,m.getRouteRegex)(eo);eu=(0,_.getRouteMatcher)(o)(n);let a=eo===n,i=a?(0,N.interpolateAs)(eo,n,er):{};if(eu&&(!a||i.result))a?r=(0,g.formatWithValidation)(Object.assign({},e,{pathname:i.result,query:(0,I.omit)(er,i.params)})):Object.assign(er,eu);else{let e=Object.keys(o.groups).filter(e=>!er[e]&&!o.groups[e].optional);if(e.length>0&&!el)throw Object.defineProperty(Error((a?"The provided `href` ("+t+") value is missing query values ("+e.join(", ")+") to be interpolated properly. ":"The provided `as` value ("+n+") is incompatible with the `href` value ("+eo+"). ")+"Read more: https://nextjs.org/docs/messages/"+(a?"href-interpolation-failed":"incompatible-href-as")),"__NEXT_ERROR_CODE",{value:"E344",enumerable:!1,configurable:!0})}}B||z.events.emit("routeChangeStart",r,Q);let es="/404"===this.pathname||"/_error"===this.pathname;try{let a=await this.getRouteInfo({route:eo,pathname:et,query:er,as:r,resolvedAs:en,routeProps:Q,locale:W.locale,isPreview:W.isPreview,hasMiddleware:el,unstable_skipClientCache:n.unstable_skipClientCache,isQueryUpdating:B&&!this.isFallback,isMiddlewareRewrite:ei});if(B||n.shallow||await this._bfl(r,"resolvedAs"in a?a.resolvedAs:void 0,W.locale),"route"in a&&el){eo=et=a.route||eo,Q.shallow||(er=Object.assign({},a.query||{},er));let e=(0,R.hasBasePath)(ee.pathname)?(0,P.removeBasePath)(ee.pathname):ee.pathname;if(eu&&et!==e&&Object.keys(eu).forEach(e=>{eu&&er[e]===eu[e]&&delete er[e]}),(0,p.isDynamicRoute)(et)){let e=!Q.shallow&&a.resolvedAs?a.resolvedAs:(0,v.addBasePath)((0,E.addLocale)(new URL(r,location.href).pathname,W.locale),!0);(0,R.hasBasePath)(e)&&(e=(0,P.removeBasePath)(e));let t=(0,m.getRouteRegex)(et),n=(0,_.getRouteMatcher)(t)(new URL(e,location.href).pathname);n&&Object.assign(er,n)}}if("type"in a)if("redirect-internal"===a.type)return this.change(e,a.newUrl,a.newAs,n);else return q({url:a.destination,router:this}),new Promise(()=>{});let i=a.Component;if(i&&i.unstable_scriptLoader&&[].concat(i.unstable_scriptLoader()).forEach(e=>{(0,l.handleClientScriptLoad)(e.props)}),(a.__N_SSG||a.__N_SSP)&&a.props){if(a.props.pageProps&&a.props.pageProps.__N_REDIRECT){n.locale=!1;let t=a.props.pageProps.__N_REDIRECT;if(t.startsWith("/")&&!1!==a.props.pageProps.__N_REDIRECT_BASE_PATH){let r=(0,h.parseRelativeUrl)(t);r.pathname=F(r.pathname,M);let{url:o,as:a}=k(this,t,t);return this.change(e,o,a,n)}return q({url:t,router:this}),new Promise(()=>{})}if(W.isPreview=!!a.props.__N_PREVIEW,a.props.notFound===H){let e;try{await this.fetchComponent("/404"),e="/404"}catch(t){e="/_error"}if(a=await this.getRouteInfo({route:e,pathname:e,query:er,as:r,resolvedAs:en,routeProps:{shallow:!1},locale:W.locale,isPreview:W.isPreview,isNotFound:!0}),"type"in a)throw Object.defineProperty(Error("Unexpected middleware effect on /404"),"__NEXT_ERROR_CODE",{value:"E158",enumerable:!1,configurable:!0})}}B&&"/_error"===this.pathname&&(null==(f=self.__NEXT_DATA__.props)||null==(c=f.pageProps)?void 0:c.statusCode)===500&&(null==(O=a.props)?void 0:O.pageProps)&&(a.props.pageProps.statusCode=500);let s=n.shallow&&W.route===(null!=(S=a.route)?S:eo),d=null!=(j=n.scroll)?j:!B&&!s,g=null!=o?o:d?{x:0,y:0}:null,b={...W,route:eo,pathname:et,query:er,asPath:J,isFallback:!1};if(B&&es){if(a=await this.getRouteInfo({route:this.pathname,pathname:this.pathname,query:er,as:r,resolvedAs:en,routeProps:{shallow:!1},locale:W.locale,isPreview:W.isPreview,isQueryUpdating:B&&!this.isFallback}),"type"in a)throw Object.defineProperty(Error("Unexpected middleware effect on "+this.pathname),"__NEXT_ERROR_CODE",{value:"E225",enumerable:!1,configurable:!0});"/_error"===this.pathname&&(null==(w=self.__NEXT_DATA__.props)||null==(T=w.pageProps)?void 0:T.statusCode)===500&&(null==(x=a.props)?void 0:x.pageProps)&&(a.props.pageProps.statusCode=500);try{await this.set(b,a,g)}catch(e){throw(0,u.default)(e)&&e.cancelled&&z.events.emit("routeChangeError",e,J,Q),e}return!0}if(z.events.emit("beforeHistoryChange",r,Q),this.changeState(e,t,r,n),!(B&&!g&&!G&&!Z&&(0,A.compareRouterStates)(b,this.state))){try{await this.set(b,a,g)}catch(e){if(e.cancelled)a.error=a.error||e;else throw e}if(a.error)throw B||z.events.emit("routeChangeError",a.error,J,Q),a.error;B||z.events.emit("routeChangeComplete",r,Q),d&&/#.+$/.test(r)&&this.scrollToHash(r)}return!0}catch(e){if((0,u.default)(e)&&e.cancelled)return!1;throw e}}changeState(e,t,r,n){void 0===n&&(n={}),("pushState"!==e||(0,d.getURL)()!==r)&&(this._shallow=n.shallow,window.history[e]({url:t,as:r,options:n,__N:!0,key:this._key="pushState"!==e?this._key:G()},"",r))}async handleRouteInfoError(e,t,r,n,o,a){if(e.cancelled)throw e;if((0,i.isAssetError)(e)||a)throw z.events.emit("routeChangeError",e,n,o),q({url:n,router:this}),L();console.error(e);try{let n,{page:o,styleSheets:a}=await this.fetchComponent("/_error"),i={props:n,Component:o,styleSheets:a,err:e,error:e};if(!i.props)try{i.props=await this.getInitialProps(o,{err:e,pathname:t,query:r})}catch(e){console.error("Error in error page `getInitialProps`: ",e),i.props={}}return i}catch(e){return this.handleRouteInfoError((0,u.default)(e)?e:Object.defineProperty(Error(e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0}),t,r,n,o,!0)}}async getRouteInfo(e){let{route:t,pathname:r,query:n,as:o,resolvedAs:i,routeProps:l,locale:s,hasMiddleware:f,isPreview:d,unstable_skipClientCache:p,isQueryUpdating:h,isMiddlewareRewrite:_,isNotFound:m}=e,b=t;try{var E,y,v,R;let e=this.components[b];if(l.shallow&&e&&this.route===b)return e;let t=V({route:b,router:this});f&&(e=void 0);let u=!e||"initial"in e?void 0:e,O={dataHref:this.pageLoader.getDataHref({href:(0,g.formatWithValidation)({pathname:r,query:n}),skipInterpolation:!0,asPath:m?"/404":i,locale:s}),hasMiddleware:!0,isServerRender:this.isSsr,parseJSON:!0,inflightCache:h?this.sbc:this.sdc,persistCache:!d,isPrefetch:!1,unstable_skipClientCache:p,isBackground:h},j=h&&!_?null:await B({fetchData:()=>W(O),asPath:m?"/404":i,locale:s,router:this}).catch(e=>{if(h)return null;throw e});if(j&&("/_error"===r||"/404"===r)&&(j.effect=void 0),h&&(j?j.json=self.__NEXT_DATA__.props:j={json:self.__NEXT_DATA__.props}),t(),(null==j||null==(E=j.effect)?void 0:E.type)==="redirect-internal"||(null==j||null==(y=j.effect)?void 0:y.type)==="redirect-external")return j.effect;if((null==j||null==(v=j.effect)?void 0:v.type)==="rewrite"){let t=(0,a.removeTrailingSlash)(j.effect.resolvedHref),o=await this.pageLoader.getPageList();if((!h||o.includes(t))&&(b=t,r=j.effect.resolvedHref,n={...n,...j.effect.parsedAs.query},i=(0,P.removeBasePath)((0,c.normalizeLocalePath)(j.effect.parsedAs.pathname,this.locales).pathname),e=this.components[b],l.shallow&&e&&this.route===b&&!f))return{...e,route:b}}if((0,S.isAPIRoute)(b))return q({url:o,router:this}),new Promise(()=>{});let T=u||await this.fetchComponent(b).then(e=>({Component:e.page,styleSheets:e.styleSheets,__N_SSG:e.mod.__N_SSG,__N_SSP:e.mod.__N_SSP})),A=null==j||null==(R=j.response)?void 0:R.headers.get("x-middleware-skip"),C=T.__N_SSG||T.__N_SSP;A&&(null==j?void 0:j.dataHref)&&delete this.sdc[j.dataHref];let{props:w,cacheKey:I}=await this._getData(async()=>{if(C){if((null==j?void 0:j.json)&&!A)return{cacheKey:j.cacheKey,props:j.json};let e=(null==j?void 0:j.dataHref)?j.dataHref:this.pageLoader.getDataHref({href:(0,g.formatWithValidation)({pathname:r,query:n}),asPath:i,locale:s}),t=await W({dataHref:e,isServerRender:this.isSsr,parseJSON:!0,inflightCache:A?{}:this.sdc,persistCache:!d,isPrefetch:!1,unstable_skipClientCache:p});return{cacheKey:t.cacheKey,props:t.json||{}}}return{headers:{},props:await this.getInitialProps(T.Component,{pathname:r,query:n,asPath:o,locale:s,locales:this.locales,defaultLocale:this.defaultLocale})}});return T.__N_SSP&&O.dataHref&&I&&delete this.sdc[I],this.isPreview||!T.__N_SSG||h||W(Object.assign({},O,{isBackground:!0,persistCache:!1,inflightCache:this.sbc})).catch(()=>{}),w.pageProps=Object.assign({},w.pageProps),T.props=w,T.route=b,T.query=n,T.resolvedAs=i,this.components[b]=T,T}catch(e){return this.handleRouteInfoError((0,u.getProperError)(e),r,n,o,l)}}set(e,t,r){return this.state=e,this.sub(t,this.components["/_app"].Component,r)}beforePopState(e){this._bps=e}onlyAHashChange(e){if(!this.asPath)return!1;let[t,r]=this.asPath.split("#",2),[n,o]=e.split("#",2);return!!o&&t===n&&r===o||t===n&&r!==o}scrollToHash(e){let[,t=""]=e.split("#",2);(0,x.handleSmoothScroll)(()=>{if(""===t||"top"===t)return void window.scrollTo(0,0);let e=decodeURIComponent(t),r=document.getElementById(e);if(r)return void r.scrollIntoView();let n=document.getElementsByName(e)[0];n&&n.scrollIntoView()},{onlyHashChange:this.onlyAHashChange(e)})}urlIsNew(e){return this.asPath!==e}async prefetch(e,t,r){if(void 0===t&&(t=e),void 0===r&&(r={}),(0,w.isBot)(window.navigator.userAgent))return;let n=(0,h.parseRelativeUrl)(e),o=n.pathname,{pathname:i,query:l}=n,u=i,s=await this.pageLoader.getPageList(),c=t,f=void 0!==r.locale?r.locale||void 0:this.locale,d=await D({asPath:t,locale:f,router:this});n.pathname=F(n.pathname,s),(0,p.isDynamicRoute)(n.pathname)&&(i=n.pathname,n.pathname=i,Object.assign(l,(0,_.getRouteMatcher)((0,m.getRouteRegex)(n.pathname))((0,b.parsePath)(t).pathname)||{}),d||(e=(0,g.formatWithValidation)(n)));let E=await B({fetchData:()=>W({dataHref:this.pageLoader.getDataHref({href:(0,g.formatWithValidation)({pathname:u,query:l}),skipInterpolation:!0,asPath:c,locale:f}),hasMiddleware:!0,isServerRender:!1,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0}),asPath:t,locale:f,router:this});if((null==E?void 0:E.effect.type)==="rewrite"&&(n.pathname=E.effect.resolvedHref,i=E.effect.resolvedHref,l={...l,...E.effect.parsedAs.query},c=E.effect.parsedAs.pathname,e=(0,g.formatWithValidation)(n)),(null==E?void 0:E.effect.type)==="redirect-external")return;let y=(0,a.removeTrailingSlash)(i);await this._bfl(t,c,r.locale,!0)&&(this.components[o]={__appRouter:!0}),await Promise.all([this.pageLoader._isSsg(y).then(t=>!!t&&W({dataHref:(null==E?void 0:E.json)?null==E?void 0:E.dataHref:this.pageLoader.getDataHref({href:e,asPath:c,locale:f}),isServerRender:!1,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0,unstable_skipClientCache:r.unstable_skipClientCache||r.priority&&!0}).then(()=>!1).catch(()=>!1)),this.pageLoader[r.priority?"loadPage":"prefetch"](y)])}async fetchComponent(e){let t=V({route:e,router:this});try{let r=await this.pageLoader.loadPage(e);return t(),r}catch(e){throw t(),e}}_getData(e){let t=!1,r=()=>{t=!0};return this.clc=r,e().then(e=>{if(r===this.clc&&(this.clc=null),t){let e=Object.defineProperty(Error("Loading initial props cancelled"),"__NEXT_ERROR_CODE",{value:"E405",enumerable:!1,configurable:!0});throw e.cancelled=!0,e}return e})}getInitialProps(e,t){let{Component:r}=this.components["/_app"],n=this._wrapApp(r);return t.AppTree=n,(0,d.loadGetInitialProps)(r,{AppTree:n,Component:e,router:this,ctx:t})}get route(){return this.state.route}get pathname(){return this.state.pathname}get query(){return this.state.query}get asPath(){return this.state.asPath}get locale(){return this.state.locale}get isFallback(){return this.state.isFallback}get isPreview(){return this.state.isPreview}constructor(e,t,r,{initialProps:n,pageLoader:o,App:i,wrapApp:l,Component:u,err:s,subscription:c,isFallback:f,locale:_,locales:m,defaultLocale:b,domainLocales:E,isPreview:y}){this.sdc={},this.sbc={},this.isFirstPopStateEvent=!0,this._key=G(),this.onPopState=e=>{let t,{isFirstPopStateEvent:r}=this;this.isFirstPopStateEvent=!1;let n=e.state;if(!n){let{pathname:e,query:t}=this;this.changeState("replaceState",(0,g.formatWithValidation)({pathname:(0,v.addBasePath)(e),query:t}),(0,d.getURL)());return}if(n.__NA)return void window.location.reload();if(!n.__N||r&&this.locale===n.options.locale&&n.as===this.asPath)return;let{url:o,as:a,options:i,key:l}=n;this._key=l;let{pathname:u}=(0,h.parseRelativeUrl)(o);(!this.isSsr||a!==(0,v.addBasePath)(this.asPath)||u!==(0,v.addBasePath)(this.pathname))&&(!this._bps||this._bps(n))&&this.change("replaceState",o,a,Object.assign({},i,{shallow:i.shallow&&this._shallow,locale:i.locale||this.defaultLocale,_h:0}),t)};let P=(0,a.removeTrailingSlash)(e);this.components={},"/_error"!==e&&(this.components[P]={Component:u,initial:!0,props:n,err:s,__N_SSG:n&&n.__N_SSG,__N_SSP:n&&n.__N_SSP}),this.components["/_app"]={Component:i,styleSheets:[]},this.events=z.events,this.pageLoader=o;let R=(0,p.isDynamicRoute)(e)&&self.__NEXT_DATA__.autoExport;if(this.basePath="/docs-site",this.sub=c,this.clc=null,this._wrapApp=l,this.isSsr=!0,this.isLocaleDomain=!1,this.isReady=!!(self.__NEXT_DATA__.gssp||self.__NEXT_DATA__.gip||self.__NEXT_DATA__.isExperimentalCompile||self.__NEXT_DATA__.appGip&&!self.__NEXT_DATA__.gsp||!R&&!self.location.search),this.state={route:P,pathname:e,query:t,asPath:R?e:r,isPreview:!!y,locale:void 0,isFallback:f},this._initialMatchesMiddlewarePromise=Promise.resolve(!1),!r.startsWith("//")){let n={locale:_},o=(0,d.getURL)();this._initialMatchesMiddlewarePromise=D({router:this,locale:_,asPath:o}).then(a=>(n._shouldResolveHref=r!==e,this.changeState("replaceState",a?o:(0,g.formatWithValidation)({pathname:(0,v.addBasePath)(e),query:t}),o,n),a))}window.addEventListener("popstate",this.onPopState)}}z.events=(0,f.default)()},8365:(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(o,i,l):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o})},8480:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return a},formatWithValidation:function(){return l},urlObjectKeys:function(){return i}});let n=r(8365)._(r(8040)),o=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:r}=e,a=e.protocol||"",i=e.pathname||"",l=e.hash||"",u=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(s+=":"+e.port)),u&&"object"==typeof u&&(u=String(n.urlQueryToSearchParams(u)));let c=e.search||u&&"?"+u||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==s?(s="//"+(s||""),i&&"/"!==i[0]&&(i="/"+i)):s||(s=""),l&&"#"!==l[0]&&(l="#"+l),c&&"?"!==c[0]&&(c="?"+c),""+a+s+(i=i.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+l}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return a(e)}},8677:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let n=r(4252)._(r(4232)),o=r(7539),a=n.default.createContext(o.imageConfigDefault)},8714:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}function n(e){return e.startsWith("@")&&"@children"!==e}function o(e,t){if(e.includes(a)){let e=JSON.stringify(t);return"{}"!==e?a+"?"+e:a}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return i},PAGE_SEGMENT_KEY:function(){return a},addSearchParamsIfPageSegment:function(){return o},isGroupSegment:function(){return r},isParallelRouteSegment:function(){return n}});let a="__PAGE__",i="__DEFAULT__"},8757:(e,t)=>{"use strict";function r(){return""}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return r}})},8831:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext({})},9163:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return i}});let n=r(7188),o=/\/[^/]*\[[^/]+\][^/]*(?=\/|$)/,a=/\/\[[^/]+\](?=\/|$)/;function i(e,t){return(void 0===t&&(t=!0),(0,n.isInterceptionRouteAppPath)(e)&&(e=(0,n.extractInterceptionRouteInformation)(e).interceptedRoute),t)?a.test(e):o.test(e)}},9308:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_SUFFIX:function(){return f},APP_DIR_ALIAS:function(){return I},CACHE_ONE_YEAR:function(){return R},DOT_NEXT_ALIAS:function(){return C},ESLINT_DEFAULT_DIRS:function(){return $},GSP_NO_RETURNED_VALUE:function(){return G},GSSP_COMPONENT_MEMBER_ERROR:function(){return z},GSSP_NO_RETURNED_VALUE:function(){return q},INFINITE_CACHE:function(){return O},INSTRUMENTATION_HOOK_FILENAME:function(){return T},MATCHED_PATH_HEADER:function(){return o},MIDDLEWARE_FILENAME:function(){return S},MIDDLEWARE_LOCATION_REGEXP:function(){return j},NEXT_BODY_SUFFIX:function(){return h},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return m},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return g},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return P},NEXT_CACHE_TAGS_HEADER:function(){return _},NEXT_CACHE_TAG_MAX_ITEMS:function(){return E},NEXT_CACHE_TAG_MAX_LENGTH:function(){return y},NEXT_DATA_SUFFIX:function(){return d},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return n},NEXT_META_SUFFIX:function(){return p},NEXT_QUERY_PARAM_PREFIX:function(){return r},NEXT_RESUME_HEADER:function(){return b},NON_STANDARD_NODE_ENV:function(){return Y},PAGES_DIR_ALIAS:function(){return A},PRERENDER_REVALIDATE_HEADER:function(){return a},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return i},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return k},ROOT_DIR_ALIAS:function(){return w},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return U},RSC_ACTION_ENCRYPTION_ALIAS:function(){return D},RSC_ACTION_PROXY_ALIAS:function(){return M},RSC_ACTION_VALIDATE_ALIAS:function(){return x},RSC_CACHE_WRAPPER_ALIAS:function(){return L},RSC_MOD_REF_PROXY_ALIAS:function(){return N},RSC_PREFETCH_SUFFIX:function(){return l},RSC_SEGMENTS_DIR_SUFFIX:function(){return u},RSC_SEGMENT_SUFFIX:function(){return s},RSC_SUFFIX:function(){return c},SERVER_PROPS_EXPORT_ERROR:function(){return W},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return B},SERVER_PROPS_SSG_CONFLICT:function(){return H},SERVER_RUNTIME:function(){return Q},SSG_FALLBACK_EXPORT_ERROR:function(){return K},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return F},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return X},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return V},WEBPACK_LAYERS:function(){return Z},WEBPACK_RESOURCE_QUERIES:function(){return ee}});let r="nxtP",n="nxtI",o="x-matched-path",a="x-prerender-revalidate",i="x-prerender-revalidate-if-generated",l=".prefetch.rsc",u=".segments",s=".segment.rsc",c=".rsc",f=".action",d=".json",p=".meta",h=".body",_="x-next-cache-tags",m="x-next-revalidated-tags",g="x-next-revalidate-tag-token",b="next-resume",E=128,y=256,P=1024,v="_N_T_",R=31536e3,O=0xfffffffe,S="middleware",j=`(?:src/)?${S}`,T="instrumentation",A="private-next-pages",C="private-dot-next",w="private-next-root-dir",I="private-next-app-dir",N="private-next-rsc-mod-ref-proxy",x="private-next-rsc-action-validate",M="private-next-rsc-server-reference",L="private-next-rsc-cache-wrapper",D="private-next-rsc-action-encryption",U="private-next-rsc-action-client-wrapper",k="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",F="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",B="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",H="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",X="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",W="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",G="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",q="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",V="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",z="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",Y='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',K="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",$=["app","pages","components","lib","src"],Q={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},J={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},Z={...J,GROUP:{builtinReact:[J.reactServerComponents,J.actionBrowser],serverOnly:[J.reactServerComponents,J.actionBrowser,J.instrument,J.middleware],neutralTarget:[J.apiNode,J.apiEdge],clientOnly:[J.serverSideRendering,J.appPagesBrowser],bundled:[J.reactServerComponents,J.actionBrowser,J.serverSideRendering,J.appPagesBrowser,J.shared,J.instrument,J.middleware],appPages:[J.reactServerComponents,J.serverSideRendering,J.appPagesBrowser,J.actionBrowser]}},ee={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},9341:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return c}});let n=r(4252),o=r(7876),a=n._(r(4232)),i=n._(r(5679)),l={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function u(e){let{req:t,res:r,err:n}=e;return{statusCode:r&&r.statusCode?r.statusCode:n?n.statusCode:404,hostname:window.location.hostname}}let s={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};class c extends a.default.Component{render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||l[e]||"An unexpected error has occurred";return(0,o.jsxs)("div",{style:s.error,children:[(0,o.jsx)(i.default,{children:(0,o.jsx)("title",{children:e?e+": "+r:"Application error: a client-side exception has occurred"})}),(0,o.jsxs)("div",{style:s.desc,children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),e?(0,o.jsx)("h1",{className:"next-error-h1",style:s.h1,children:e}):null,(0,o.jsx)("div",{style:s.wrap,children:(0,o.jsxs)("h2",{style:s.h2,children:[this.props.title||e?r:(0,o.jsxs)(o.Fragment,{children:["Application error: a client-side exception has occurred"," ",!!this.props.hostname&&(0,o.jsxs)(o.Fragment,{children:["while loading ",this.props.hostname]})," ","(see the browser console for more information)"]}),"."]})})]})]})}}c.displayName="ErrorPage",c.getInitialProps=u,c.origGetInitialProps=u,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9393:()=>{},9525:(e,t,r)=>{"use strict";let n,o,a,i,l,u,s,c,f,d,p,h;Object.defineProperty(t,"__esModule",{value:!0});let _=r(8365);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{emitter:function(){return X},hydrate:function(){return eu},initialize:function(){return V},router:function(){return n},version:function(){return H}});let m=r(4252),g=r(7876);r(1291);let b=m._(r(4232)),E=m._(r(8944)),y=r(8831),P=m._(r(9871)),v=r(9948),R=r(3132),O=r(9163),S=r(8040),j=r(2917),T=r(2746),A=r(3090),C=m._(r(4547)),w=m._(r(2792)),I=r(1318),N=r(4294),x=r(6240),M=r(8677),L=r(1025),D=r(6023),U=r(2850),k=r(9609),F=r(5931),B=r(7207);r(4609),r(6999);let H="15.3.1",X=(0,P.default)(),W=e=>[].slice.call(e),G=!1;class q extends b.default.Component{componentDidCatch(e,t){this.props.fn(e,t)}componentDidMount(){this.scrollToHash(),n.isSsr&&(o.isFallback||o.nextExport&&((0,O.isDynamicRoute)(n.pathname)||location.search||G)||o.props&&o.props.__N_SSG&&(location.search||G))&&n.replace(n.pathname+"?"+String((0,S.assign)((0,S.urlQueryToSearchParams)(n.query),new URLSearchParams(location.search))),a,{_h:1,shallow:!o.isFallback&&!G}).catch(e=>{if(!e.cancelled)throw e})}componentDidUpdate(){this.scrollToHash()}scrollToHash(){let{hash:e}=location;if(!(e=e&&e.substring(1)))return;let t=document.getElementById(e);t&&setTimeout(()=>t.scrollIntoView(),0)}render(){return this.props.children}}async function V(e){void 0===e&&(e={}),o=JSON.parse(document.getElementById("__NEXT_DATA__").textContent),window.__NEXT_DATA__=o,h=o.defaultLocale;let t=o.assetPrefix||"";if(self.__next_set_public_path__(""+t+"/_next/"),(0,j.setConfig)({serverRuntimeConfig:{},publicRuntimeConfig:o.runtimeConfig||{}}),a=(0,T.getURL)(),(0,D.hasBasePath)(a)&&(a=(0,L.removeBasePath)(a)),o.scriptLoader){let{initScriptLoader:e}=r(3996);e(o.scriptLoader)}i=new w.default(o.buildId,t);let s=e=>{let[t,r]=e;return i.routeLoader.onEntrypoint(t,r)};return window.__NEXT_P&&window.__NEXT_P.map(e=>setTimeout(()=>s(e),0)),window.__NEXT_P=[],window.__NEXT_P.push=s,(u=(0,C.default)()).getIsSsr=()=>n.isSsr,l=document.getElementById("__next"),{assetPrefix:t}}function z(e,t){return(0,g.jsx)(e,{...t})}function Y(e){var t;let{children:r}=e,o=b.default.useMemo(()=>(0,k.adaptForAppRouterInstance)(n),[]);return(0,g.jsx)(q,{fn:e=>$({App:f,err:e}).catch(e=>console.error("Error rendering page: ",e)),children:(0,g.jsx)(U.AppRouterContext.Provider,{value:o,children:(0,g.jsx)(F.SearchParamsContext.Provider,{value:(0,k.adaptForSearchParams)(n),children:(0,g.jsx)(k.PathnameContextProviderAdapter,{router:n,isAutoExport:null!=(t=self.__NEXT_DATA__.autoExport)&&t,children:(0,g.jsx)(F.PathParamsContext.Provider,{value:(0,k.adaptForPathParams)(n),children:(0,g.jsx)(v.RouterContext.Provider,{value:(0,N.makePublicRouterInstance)(n),children:(0,g.jsx)(y.HeadManagerContext.Provider,{value:u,children:(0,g.jsx)(M.ImageConfigContext.Provider,{value:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs-site/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1},children:r})})})})})})})})}let K=e=>t=>{let r={...t,Component:p,err:o.err,router:n};return(0,g.jsx)(Y,{children:z(e,r)})};function $(e){let{App:t,err:l}=e;return console.error(l),console.error("A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred"),i.loadPage("/_error").then(n=>{let{page:o,styleSheets:a}=n;return(null==s?void 0:s.Component)===o?Promise.resolve().then(()=>_._(r(9341))).then(n=>Promise.resolve().then(()=>_._(r(472))).then(r=>(e.App=t=r.default,n))).then(e=>({ErrorComponent:e.default,styleSheets:[]})):{ErrorComponent:o,styleSheets:a}}).then(r=>{var i;let{ErrorComponent:u,styleSheets:s}=r,c=K(t),f={Component:u,AppTree:c,router:n,ctx:{err:l,pathname:o.page,query:o.query,asPath:a,AppTree:c}};return Promise.resolve((null==(i=e.props)?void 0:i.err)?e.props:(0,T.loadGetInitialProps)(t,f)).then(t=>ei({...e,err:l,Component:u,styleSheets:s,props:t}))})}function Q(e){let{callback:t}=e;return b.default.useLayoutEffect(()=>t(),[t]),null}let J={navigationStart:"navigationStart",beforeRender:"beforeRender",afterRender:"afterRender",afterHydrate:"afterHydrate",routeChange:"routeChange"},Z={hydration:"Next.js-hydration",beforeHydration:"Next.js-before-hydration",routeChangeToRender:"Next.js-route-change-to-render",render:"Next.js-render"},ee=null,et=!0;function er(){[J.beforeRender,J.afterHydrate,J.afterRender,J.routeChange].forEach(e=>performance.clearMarks(e))}function en(){T.ST&&(performance.mark(J.afterHydrate),performance.getEntriesByName(J.beforeRender,"mark").length&&(performance.measure(Z.beforeHydration,J.navigationStart,J.beforeRender),performance.measure(Z.hydration,J.beforeRender,J.afterHydrate)),d&&performance.getEntriesByName(Z.hydration).forEach(d),er())}function eo(){if(!T.ST)return;performance.mark(J.afterRender);let e=performance.getEntriesByName(J.routeChange,"mark");e.length&&(performance.getEntriesByName(J.beforeRender,"mark").length&&(performance.measure(Z.routeChangeToRender,e[0].name,J.beforeRender),performance.measure(Z.render,J.beforeRender,J.afterRender),d&&(performance.getEntriesByName(Z.render).forEach(d),performance.getEntriesByName(Z.routeChangeToRender).forEach(d))),er(),[Z.routeChangeToRender,Z.render].forEach(e=>performance.clearMeasures(e)))}function ea(e){let{callbacks:t,children:r}=e;return b.default.useLayoutEffect(()=>t.forEach(e=>e()),[t]),r}function ei(e){let t,r,{App:o,Component:a,props:i,err:u}=e,f="initial"in e?void 0:e.styleSheets;a=a||s.Component;let d={...i=i||s.props,Component:a,err:u,router:n};s=d;let p=!1,h=new Promise((e,t)=>{c&&c(),r=()=>{c=null,e()},c=()=>{p=!0,c=null;let e=Object.defineProperty(Error("Cancel rendering route"),"__NEXT_ERROR_CODE",{value:"E503",enumerable:!1,configurable:!0});e.cancelled=!0,t(e)}});function _(){r()}!function(){if(!f)return;let e=new Set(W(document.querySelectorAll("style[data-n-href]")).map(e=>e.getAttribute("data-n-href"))),t=document.querySelector("noscript[data-n-css]"),r=null==t?void 0:t.getAttribute("data-n-css");f.forEach(t=>{let{href:n,text:o}=t;if(!e.has(n)){let e=document.createElement("style");e.setAttribute("data-n-href",n),e.setAttribute("media","x"),r&&e.setAttribute("nonce",r),document.head.appendChild(e),e.appendChild(document.createTextNode(o))}})}();let m=(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(Q,{callback:function(){if(f&&!p){let e=new Set(f.map(e=>e.href)),t=W(document.querySelectorAll("style[data-n-href]")),r=t.map(e=>e.getAttribute("data-n-href"));for(let n=0;n{let{href:t}=e,r=document.querySelector('style[data-n-href="'+t+'"]');r&&(n.parentNode.insertBefore(r,n.nextSibling),n=r)}),W(document.querySelectorAll("link[data-n-p]")).forEach(e=>{e.parentNode.removeChild(e)})}if(e.scroll){let{x:t,y:r}=e.scroll;(0,R.handleSmoothScroll)(()=>{window.scrollTo(t,r)})}}}),(0,g.jsxs)(Y,{children:[z(o,d),(0,g.jsx)(A.Portal,{type:"next-route-announcer",children:(0,g.jsx)(I.RouteAnnouncer,{})})]})]});var y=l;T.ST&&performance.mark(J.beforeRender);let P=(t=et?en:eo,(0,g.jsx)(ea,{callbacks:[t,_],children:(0,g.jsx)(b.default.StrictMode,{children:m})}));return ee?(0,b.default.startTransition)(()=>{ee.render(P)}):(ee=E.default.hydrateRoot(y,P,{onRecoverableError:B.onRecoverableError}),et=!1),h}async function el(e){if(e.err&&(void 0===e.Component||!e.isHydratePass))return void await $(e);try{await ei(e)}catch(r){let t=(0,x.getProperError)(r);if(t.cancelled)throw t;await $({...e,err:t})}}async function eu(e){let t=o.err;try{let e=await i.routeLoader.whenEntrypoint("/_app");if("error"in e)throw e.error;let{component:t,exports:r}=e;f=t,r&&r.reportWebVitals&&(d=e=>{let t,{id:n,name:o,startTime:a,value:i,duration:l,entryType:u,entries:s,attribution:c}=e,f=Date.now()+"-"+(Math.floor(Math.random()*(9e12-1))+1e12);s&&s.length&&(t=s[0].startTime);let d={id:n||f,name:o,startTime:a||t,value:null==i?l:i,label:"mark"===u||"measure"===u?"custom":"web-vital"};c&&(d.attribution=c),r.reportWebVitals(d)});let n=await i.routeLoader.whenEntrypoint(o.page);if("error"in n)throw n.error;p=n.component}catch(e){t=(0,x.getProperError)(e)}window.__NEXT_PRELOADREADY&&await window.__NEXT_PRELOADREADY(o.dynamicIds),n=(0,N.createRouter)(o.page,o.query,a,{initialProps:o.props,pageLoader:i,App:f,Component:p,wrapApp:K,err:t,isFallback:!!o.isFallback,subscription:(e,t,r)=>el(Object.assign({},e,{App:t,scroll:r})),locale:o.locale,locales:o.locales,defaultLocale:h,domainLocales:o.domainLocales,isPreview:o.isPreview}),G=await n._initialMatchesMiddlewarePromise;let r={App:f,initial:!0,Component:p,props:o.props,err:t,isHydratePass:!0};(null==e?void 0:e.beforeRender)&&await e.beforeRender(),el(r)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9609:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PathnameContextProviderAdapter:function(){return p},adaptForAppRouterInstance:function(){return c},adaptForPathParams:function(){return d},adaptForSearchParams:function(){return f}});let n=r(8365),o=r(7876),a=n._(r(4232)),i=r(5931),l=r(3069),u=r(8213),s=r(5214);function c(e){return{back(){e.back()},forward(){e.forward()},refresh(){e.reload()},hmrRefresh(){},push(t,r){let{scroll:n}=void 0===r?{}:r;e.push(t,void 0,{scroll:n})},replace(t,r){let{scroll:n}=void 0===r?{}:r;e.replace(t,void 0,{scroll:n})},prefetch(t){e.prefetch(t)}}}function f(e){return e.isReady&&e.query?(0,u.asPathToSearchParams)(e.asPath):new URLSearchParams}function d(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys((0,s.getRouteRegex)(e.pathname).groups))t[r]=e.query[r];return t}function p(e){let{children:t,router:r,...n}=e,u=(0,a.useRef)(n.isAutoExport),s=(0,a.useMemo)(()=>{let e,t=u.current;if(t&&(u.current=!1),(0,l.isDynamicRoute)(r.pathname)&&(r.isFallback||t&&!r.isReady))return null;try{e=new URL(r.asPath,"http://f")}catch(e){return"/"}return e.pathname},[r.asPath,r.isFallback,r.isReady,r.pathname]);return(0,o.jsx)(i.PathnameContext.Provider,{value:s,children:t})}},9611:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"setAttributesFromProps",{enumerable:!0,get:function(){return a}});let r={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv",noModule:"noModule"},n=["onLoad","onReady","dangerouslySetInnerHTML","children","onError","strategy","stylesheets"];function o(e){return["async","defer","noModule"].includes(e)}function a(e,t){for(let[a,i]of Object.entries(t)){if(!t.hasOwnProperty(a)||n.includes(a)||void 0===i)continue;let l=r[a]||a.toLowerCase();"SCRIPT"===e.tagName&&o(l)?e[l]=!!i:e.setAttribute(l,String(i)),(!1===i||"SCRIPT"===e.tagName&&o(l)&&(!i||"false"===i))&&(e.setAttribute(l,""),e.removeAttribute(l))}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9871:(e,t)=>{"use strict";function r(){let e=Object.create(null);return{on(t,r){(e[t]||(e[t]=[])).push(r)},off(t,r){e[t]&&e[t].splice(e[t].indexOf(r)>>>0,1)},emit(t){for(var r=arguments.length,n=Array(r>1?r-1:0),o=1;o{e(...n)})}}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},9948:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext(null)}},e=>{var t=t=>e(e.s=t);e.O(0,[593],()=>t(5842)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/main-app-d5ad76d309db59c9.js b/docs/_next/static/chunks/main-app-d5ad76d309db59c9.js deleted file mode 100644 index 2becdd35..00000000 --- a/docs/_next/static/chunks/main-app-d5ad76d309db59c9.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{5715:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,894,23)),Promise.resolve().then(n.t.bind(n,4970,23)),Promise.resolve().then(n.t.bind(n,6614,23)),Promise.resolve().then(n.t.bind(n,6975,23)),Promise.resolve().then(n.t.bind(n,7555,23)),Promise.resolve().then(n.t.bind(n,4911,23)),Promise.resolve().then(n.t.bind(n,9665,23)),Promise.resolve().then(n.t.bind(n,1295,23))},9393:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[441,684],()=>(s(5415),s(5715))),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/_app-da15c11dea942c36.js b/docs/_next/static/chunks/pages/_app-da15c11dea942c36.js deleted file mode 100644 index 5c39d7be..00000000 --- a/docs/_next/static/chunks/pages/_app-da15c11dea942c36.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{326:(_,n,p)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return p(472)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[593,792],()=>(n(326),n(4294))),_N_E=_.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js b/docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js deleted file mode 100644 index 554b197b..00000000 --- a/docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[731],{2164:(_,n,e)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return e(9341)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[636,593,792],()=>n(2164)),_N_E=_.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/polyfills-42372ed130431b0a.js b/docs/_next/static/chunks/polyfills-42372ed130431b0a.js deleted file mode 100644 index ab422b94..00000000 --- a/docs/_next/static/chunks/polyfills-42372ed130431b0a.js +++ /dev/null @@ -1 +0,0 @@ -!function(){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r,n,o=function(t){return t&&t.Math===Math&&t},i=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof t&&t)||o("object"==typeof t&&t)||function(){return this}()||Function("return this")(),a=function(t){try{return!!t()}catch(t){return!0}},u=!a(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}),s=!a(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}),c=Function.prototype.call,f=s?c.bind(c):function(){return c.apply(c,arguments)},l={}.propertyIsEnumerable,h=Object.getOwnPropertyDescriptor,p=h&&!l.call({1:2},1)?function(t){var e=h(this,t);return!!e&&e.enumerable}:l,v={f:p},d=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},g=Function.prototype,y=g.call,m=s&&g.bind.bind(y,y),b=s?m:function(t){return function(){return y.apply(t,arguments)}},w=b({}.toString),S=b("".slice),E=function(t){return S(w(t),8,-1)},O=Object,x=b("".split),R=a(function(){return!O("z").propertyIsEnumerable(0)})?function(t){return"String"===E(t)?x(t,""):O(t)}:O,P=function(t){return null==t},A=TypeError,j=function(t){if(P(t))throw new A("Can't call method on "+t);return t},k=function(t){return R(j(t))},I="object"==typeof document&&document.all,T=void 0===I&&void 0!==I?function(t){return"function"==typeof t||t===I}:function(t){return"function"==typeof t},M=function(t){return"object"==typeof t?null!==t:T(t)},L=function(t,e){return arguments.length<2?T(r=i[t])?r:void 0:i[t]&&i[t][e];var r},U=b({}.isPrototypeOf),N=i.navigator,C=N&&N.userAgent,_=C?String(C):"",F=i.process,B=i.Deno,D=F&&F.versions||B&&B.version,z=D&&D.v8;z&&(n=(r=z.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!n&&_&&(!(r=_.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=_.match(/Chrome\/(\d+)/))&&(n=+r[1]);var W=n,q=i.String,H=!!Object.getOwnPropertySymbols&&!a(function(){var t=Symbol("symbol detection");return!q(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&W&&W<41}),$=H&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,K=Object,G=$?function(t){return"symbol"==typeof t}:function(t){var e=L("Symbol");return T(e)&&U(e.prototype,K(t))},V=String,Y=function(t){try{return V(t)}catch(t){return"Object"}},X=TypeError,J=function(t){if(T(t))return t;throw new X(Y(t)+" is not a function")},Q=function(t,e){var r=t[e];return P(r)?void 0:J(r)},Z=TypeError,tt=Object.defineProperty,et=function(t,e){try{tt(i,t,{value:e,configurable:!0,writable:!0})}catch(r){i[t]=e}return e},rt=e(function(t){var e="__core-js_shared__",r=t.exports=i[e]||et(e,{});(r.versions||(r.versions=[])).push({version:"3.38.1",mode:"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})}),nt=function(t,e){return rt[t]||(rt[t]=e||{})},ot=Object,it=function(t){return ot(j(t))},at=b({}.hasOwnProperty),ut=Object.hasOwn||function(t,e){return at(it(t),e)},st=0,ct=Math.random(),ft=b(1..toString),lt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+ft(++st+ct,36)},ht=i.Symbol,pt=nt("wks"),vt=$?ht.for||ht:ht&&ht.withoutSetter||lt,dt=function(t){return ut(pt,t)||(pt[t]=H&&ut(ht,t)?ht[t]:vt("Symbol."+t)),pt[t]},gt=TypeError,yt=dt("toPrimitive"),mt=function(t,e){if(!M(t)||G(t))return t;var r,n=Q(t,yt);if(n){if(void 0===e&&(e="default"),r=f(n,t,e),!M(r)||G(r))return r;throw new gt("Can't convert object to primitive value")}return void 0===e&&(e="number"),function(t,e){var r,n;if("string"===e&&T(r=t.toString)&&!M(n=f(r,t)))return n;if(T(r=t.valueOf)&&!M(n=f(r,t)))return n;if("string"!==e&&T(r=t.toString)&&!M(n=f(r,t)))return n;throw new Z("Can't convert object to primitive value")}(t,e)},bt=function(t){var e=mt(t,"string");return G(e)?e:e+""},wt=i.document,St=M(wt)&&M(wt.createElement),Et=function(t){return St?wt.createElement(t):{}},Ot=!u&&!a(function(){return 7!==Object.defineProperty(Et("div"),"a",{get:function(){return 7}}).a}),xt=Object.getOwnPropertyDescriptor,Rt={f:u?xt:function(t,e){if(t=k(t),e=bt(e),Ot)try{return xt(t,e)}catch(t){}if(ut(t,e))return d(!f(v.f,t,e),t[e])}},Pt=u&&a(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype}),At=String,jt=TypeError,kt=function(t){if(M(t))return t;throw new jt(At(t)+" is not an object")},It=TypeError,Tt=Object.defineProperty,Mt=Object.getOwnPropertyDescriptor,Lt="enumerable",Ut="configurable",Nt="writable",Ct={f:u?Pt?function(t,e,r){if(kt(t),e=bt(e),kt(r),"function"==typeof t&&"prototype"===e&&"value"in r&&Nt in r&&!r[Nt]){var n=Mt(t,e);n&&n[Nt]&&(t[e]=r.value,r={configurable:Ut in r?r[Ut]:n[Ut],enumerable:Lt in r?r[Lt]:n[Lt],writable:!1})}return Tt(t,e,r)}:Tt:function(t,e,r){if(kt(t),e=bt(e),kt(r),Ot)try{return Tt(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new It("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},_t=u?function(t,e,r){return Ct.f(t,e,d(1,r))}:function(t,e,r){return t[e]=r,t},Ft=Function.prototype,Bt=u&&Object.getOwnPropertyDescriptor,Dt=ut(Ft,"name"),zt={EXISTS:Dt,PROPER:Dt&&"something"===function(){}.name,CONFIGURABLE:Dt&&(!u||u&&Bt(Ft,"name").configurable)},Wt=b(Function.toString);T(rt.inspectSource)||(rt.inspectSource=function(t){return Wt(t)});var qt,Ht,$t,Kt=rt.inspectSource,Gt=i.WeakMap,Vt=T(Gt)&&/native code/.test(String(Gt)),Yt=nt("keys"),Xt=function(t){return Yt[t]||(Yt[t]=lt(t))},Jt={},Qt="Object already initialized",Zt=i.TypeError;if(Vt||rt.state){var te=rt.state||(rt.state=new(0,i.WeakMap));te.get=te.get,te.has=te.has,te.set=te.set,qt=function(t,e){if(te.has(t))throw new Zt(Qt);return e.facade=t,te.set(t,e),e},Ht=function(t){return te.get(t)||{}},$t=function(t){return te.has(t)}}else{var ee=Xt("state");Jt[ee]=!0,qt=function(t,e){if(ut(t,ee))throw new Zt(Qt);return e.facade=t,_t(t,ee,e),e},Ht=function(t){return ut(t,ee)?t[ee]:{}},$t=function(t){return ut(t,ee)}}var re,ne={set:qt,get:Ht,has:$t,enforce:function(t){return $t(t)?Ht(t):qt(t,{})},getterFor:function(t){return function(e){var r;if(!M(e)||(r=Ht(e)).type!==t)throw new Zt("Incompatible receiver, "+t+" required");return r}}},oe=e(function(t){var e=zt.CONFIGURABLE,r=ne.enforce,n=ne.get,o=String,i=Object.defineProperty,s=b("".slice),c=b("".replace),f=b([].join),l=u&&!a(function(){return 8!==i(function(){},"length",{value:8}).length}),h=String(String).split("String"),p=t.exports=function(t,n,a){"Symbol("===s(o(n),0,7)&&(n="["+c(o(n),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),a&&a.getter&&(n="get "+n),a&&a.setter&&(n="set "+n),(!ut(t,"name")||e&&t.name!==n)&&(u?i(t,"name",{value:n,configurable:!0}):t.name=n),l&&a&&ut(a,"arity")&&t.length!==a.arity&&i(t,"length",{value:a.arity});try{a&&ut(a,"constructor")&&a.constructor?u&&i(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var p=r(t);return ut(p,"source")||(p.source=f(h,"string"==typeof n?n:"")),t};Function.prototype.toString=p(function(){return T(this)&&n(this).source||Kt(this)},"toString")}),ie=function(t,e,r,n){n||(n={});var o=n.enumerable,i=void 0!==n.name?n.name:e;if(T(r)&&oe(r,i,n),n.global)o?t[e]=r:et(e,r);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=r:Ct.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},ae=Math.ceil,ue=Math.floor,se=Math.trunc||function(t){var e=+t;return(e>0?ue:ae)(e)},ce=function(t){var e=+t;return e!=e||0===e?0:se(e)},fe=Math.max,le=Math.min,he=function(t,e){var r=ce(t);return r<0?fe(r+e,0):le(r,e)},pe=Math.min,ve=function(t){var e=ce(t);return e>0?pe(e,9007199254740991):0},de=function(t){return ve(t.length)},ge=function(t){return function(e,r,n){var o=k(e),i=de(o);if(0===i)return!t&&-1;var a,u=he(n,i);if(t&&r!=r){for(;i>u;)if((a=o[u++])!=a)return!0}else for(;i>u;u++)if((t||u in o)&&o[u]===r)return t||u||0;return!t&&-1}},ye={includes:ge(!0),indexOf:ge(!1)},me=ye.indexOf,be=b([].push),we=function(t,e){var r,n=k(t),o=0,i=[];for(r in n)!ut(Jt,r)&&ut(n,r)&&be(i,r);for(;e.length>o;)ut(n,r=e[o++])&&(~me(i,r)||be(i,r));return i},Se=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ee=Se.concat("length","prototype"),Oe={f:Object.getOwnPropertyNames||function(t){return we(t,Ee)}},xe={f:Object.getOwnPropertySymbols},Re=b([].concat),Pe=L("Reflect","ownKeys")||function(t){var e=Oe.f(kt(t)),r=xe.f;return r?Re(e,r(t)):e},Ae=function(t,e,r){for(var n=Pe(e),o=Ct.f,i=Rt.f,a=0;aa;)Ct.f(t,r=o[a++],n[r]);return t},Be={f:Fe},De=L("document","documentElement"),ze="prototype",We="script",qe=Xt("IE_PROTO"),He=function(){},$e=function(t){return"<"+We+">"+t+""},Ke=function(t){t.write($e("")),t.close();var e=t.parentWindow.Object;return t=null,e},Ge=function(){try{re=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;Ge="undefined"!=typeof document?document.domain&&re?Ke(re):(e=Et("iframe"),r="java"+We+":",e.style.display="none",De.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write($e("document.F=Object")),t.close(),t.F):Ke(re);for(var n=Se.length;n--;)delete Ge[ze][Se[n]];return Ge()};Jt[qe]=!0;var Ve=Object.create||function(t,e){var r;return null!==t?(He[ze]=kt(t),r=new He,He[ze]=null,r[qe]=t):r=Ge(),void 0===e?r:Be.f(r,e)},Ye=Ct.f,Xe=dt("unscopables"),Je=Array.prototype;void 0===Je[Xe]&&Ye(Je,Xe,{configurable:!0,value:Ve(null)});var Qe=function(t){Je[Xe][t]=!0};Ce({target:"Array",proto:!0},{at:function(t){var e=it(this),r=de(e),n=ce(t),o=n>=0?n:r+n;return o<0||o>=r?void 0:e[o]}}),Qe("at");var Ze=function(t,e){return b(i[t].prototype[e])},tr=(Ze("Array","at"),TypeError),er=function(t,e){if(!delete t[e])throw new tr("Cannot delete property "+Y(e)+" of "+Y(t))},rr=Math.min,nr=[].copyWithin||function(t,e){var r=it(this),n=de(r),o=he(t,n),i=he(e,n),a=arguments.length>2?arguments[2]:void 0,u=rr((void 0===a?n:he(a,n))-i,n-o),s=1;for(i0;)i in r?r[o]=r[i]:er(r,o),o+=s,i+=s;return r};Ce({target:"Array",proto:!0},{copyWithin:nr}),Qe("copyWithin"),Ze("Array","copyWithin"),Ce({target:"Array",proto:!0},{fill:function(t){for(var e=it(this),r=de(e),n=arguments.length,o=he(n>1?arguments[1]:void 0,r),i=n>2?arguments[2]:void 0,a=void 0===i?r:he(i,r);a>o;)e[o++]=t;return e}}),Qe("fill"),Ze("Array","fill");var or=function(t){if("Function"===E(t))return b(t)},ir=or(or.bind),ar=function(t,e){return J(t),void 0===e?t:s?ir(t,e):function(){return t.apply(e,arguments)}},ur=Array.isArray||function(t){return"Array"===E(t)},sr={};sr[dt("toStringTag")]="z";var cr="[object z]"===String(sr),fr=dt("toStringTag"),lr=Object,hr="Arguments"===E(function(){return arguments}()),pr=cr?E:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=lr(t),fr))?r:hr?E(e):"Object"===(n=E(e))&&T(e.callee)?"Arguments":n},vr=function(){},dr=L("Reflect","construct"),gr=/^\s*(?:class|function)\b/,yr=b(gr.exec),mr=!gr.test(vr),br=function(t){if(!T(t))return!1;try{return dr(vr,[],t),!0}catch(t){return!1}},wr=function(t){if(!T(t))return!1;switch(pr(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return mr||!!yr(gr,Kt(t))}catch(t){return!0}};wr.sham=!0;var Sr=!dr||a(function(){var t;return br(br.call)||!br(Object)||!br(function(){t=!0})||t})?wr:br,Er=dt("species"),Or=Array,xr=function(t,e){return new(function(t){var e;return ur(t)&&(Sr(e=t.constructor)&&(e===Or||ur(e.prototype))||M(e)&&null===(e=e[Er]))&&(e=void 0),void 0===e?Or:e}(t))(0===e?0:e)},Rr=b([].push),Pr=function(t){var e=1===t,r=2===t,n=3===t,o=4===t,i=6===t,a=7===t,u=5===t||i;return function(s,c,f,l){for(var h,p,v=it(s),d=R(v),g=de(d),y=ar(c,f),m=0,b=l||xr,w=e?b(s,g):r||a?b(s,0):void 0;g>m;m++)if((u||m in d)&&(p=y(h=d[m],m,v),t))if(e)w[m]=p;else if(p)switch(t){case 3:return!0;case 5:return h;case 6:return m;case 2:Rr(w,h)}else switch(t){case 4:return!1;case 7:Rr(w,h)}return i?-1:n||o?o:w}},Ar={forEach:Pr(0),map:Pr(1),filter:Pr(2),some:Pr(3),every:Pr(4),find:Pr(5),findIndex:Pr(6),filterReject:Pr(7)},jr=Ar.find,kr="find",Ir=!0;kr in[]&&Array(1)[kr](function(){Ir=!1}),Ce({target:"Array",proto:!0,forced:Ir},{find:function(t){return jr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(kr),Ze("Array","find");var Tr=Ar.findIndex,Mr="findIndex",Lr=!0;Mr in[]&&Array(1)[Mr](function(){Lr=!1}),Ce({target:"Array",proto:!0,forced:Lr},{findIndex:function(t){return Tr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(Mr),Ze("Array","findIndex");var Ur=TypeError,Nr=function(t){if(t>9007199254740991)throw Ur("Maximum allowed index exceeded");return t},Cr=function(t,e,r,n,o,i,a,u){for(var s,c,f=o,l=0,h=!!a&&ar(a,u);l0&&ur(s)?(c=de(s),f=Cr(t,e,s,c,f,i-1)-1):(Nr(f+1),t[f]=s),f++),l++;return f},_r=Cr;Ce({target:"Array",proto:!0},{flatMap:function(t){var e,r=it(this),n=de(r);return J(t),(e=xr(r,0)).length=_r(e,r,r,n,0,1,t,arguments.length>1?arguments[1]:void 0),e}}),Qe("flatMap"),Ze("Array","flatMap"),Ce({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=it(this),r=de(e),n=xr(e,0);return n.length=_r(n,e,e,r,0,void 0===t?1:ce(t)),n}}),Qe("flat"),Ze("Array","flat");var Fr,Br,Dr,zr=String,Wr=function(t){if("Symbol"===pr(t))throw new TypeError("Cannot convert a Symbol value to a string");return zr(t)},qr=b("".charAt),Hr=b("".charCodeAt),$r=b("".slice),Kr=function(t){return function(e,r){var n,o,i=Wr(j(e)),a=ce(r),u=i.length;return a<0||a>=u?t?"":void 0:(n=Hr(i,a))<55296||n>56319||a+1===u||(o=Hr(i,a+1))<56320||o>57343?t?qr(i,a):n:t?$r(i,a,a+2):o-56320+(n-55296<<10)+65536}},Gr={codeAt:Kr(!1),charAt:Kr(!0)},Vr=!a(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}),Yr=Xt("IE_PROTO"),Xr=Object,Jr=Xr.prototype,Qr=Vr?Xr.getPrototypeOf:function(t){var e=it(t);if(ut(e,Yr))return e[Yr];var r=e.constructor;return T(r)&&e instanceof r?r.prototype:e instanceof Xr?Jr:null},Zr=dt("iterator"),tn=!1;[].keys&&("next"in(Dr=[].keys())?(Br=Qr(Qr(Dr)))!==Object.prototype&&(Fr=Br):tn=!0);var en=!M(Fr)||a(function(){var t={};return Fr[Zr].call(t)!==t});en&&(Fr={}),T(Fr[Zr])||ie(Fr,Zr,function(){return this});var rn={IteratorPrototype:Fr,BUGGY_SAFARI_ITERATORS:tn},nn=Ct.f,on=dt("toStringTag"),an=function(t,e,r){t&&!r&&(t=t.prototype),t&&!ut(t,on)&&nn(t,on,{configurable:!0,value:e})},un={},sn=rn.IteratorPrototype,cn=function(){return this},fn=function(t,e,r,n){var o=e+" Iterator";return t.prototype=Ve(sn,{next:d(+!n,r)}),an(t,o,!1),un[o]=cn,t},ln=function(t,e,r){try{return b(J(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}},hn=String,pn=TypeError,vn=function(t){if(function(t){return M(t)||null===t}(t))return t;throw new pn("Can't set "+hn(t)+" as a prototype")},dn=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=ln(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return j(r),vn(n),M(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0),gn=zt.PROPER,yn=zt.CONFIGURABLE,mn=rn.IteratorPrototype,bn=rn.BUGGY_SAFARI_ITERATORS,wn=dt("iterator"),Sn="keys",En="values",On="entries",xn=function(){return this},Rn=function(t,e,r,n,o,i,a){fn(r,e,n);var u,s,c,l=function(t){if(t===o&&g)return g;if(!bn&&t&&t in v)return v[t];switch(t){case Sn:case En:case On:return function(){return new r(this,t)}}return function(){return new r(this)}},h=e+" Iterator",p=!1,v=t.prototype,d=v[wn]||v["@@iterator"]||o&&v[o],g=!bn&&d||l(o),y="Array"===e&&v.entries||d;if(y&&(u=Qr(y.call(new t)))!==Object.prototype&&u.next&&(Qr(u)!==mn&&(dn?dn(u,mn):T(u[wn])||ie(u,wn,xn)),an(u,h,!0)),gn&&o===En&&d&&d.name!==En&&(yn?_t(v,"name",En):(p=!0,g=function(){return f(d,this)})),o)if(s={values:l(En),keys:i?g:l(Sn),entries:l(On)},a)for(c in s)(bn||p||!(c in v))&&ie(v,c,s[c]);else Ce({target:e,proto:!0,forced:bn||p},s);return v[wn]!==g&&ie(v,wn,g,{name:o}),un[e]=g,s},Pn=function(t,e){return{value:t,done:e}},An=Gr.charAt,jn="String Iterator",kn=ne.set,In=ne.getterFor(jn);Rn(String,"String",function(t){kn(this,{type:jn,string:Wr(t),index:0})},function(){var t,e=In(this),r=e.string,n=e.index;return n>=r.length?Pn(void 0,!0):(t=An(r,n),e.index+=t.length,Pn(t,!1))});var Tn=function(t,e,r){var n,o;kt(t);try{if(!(n=Q(t,"return"))){if("throw"===e)throw r;return r}n=f(n,t)}catch(t){o=!0,n=t}if("throw"===e)throw r;if(o)throw n;return kt(n),r},Mn=function(t,e,r,n){try{return n?e(kt(r)[0],r[1]):e(r)}catch(e){Tn(t,"throw",e)}},Ln=dt("iterator"),Un=Array.prototype,Nn=function(t){return void 0!==t&&(un.Array===t||Un[Ln]===t)},Cn=function(t,e,r){u?Ct.f(t,e,d(0,r)):t[e]=r},_n=dt("iterator"),Fn=function(t){if(!P(t))return Q(t,_n)||Q(t,"@@iterator")||un[pr(t)]},Bn=TypeError,Dn=function(t,e){var r=arguments.length<2?Fn(t):e;if(J(r))return kt(f(r,t));throw new Bn(Y(t)+" is not iterable")},zn=Array,Wn=function(t){var e=it(t),r=Sr(this),n=arguments.length,o=n>1?arguments[1]:void 0,i=void 0!==o;i&&(o=ar(o,n>2?arguments[2]:void 0));var a,u,s,c,l,h,p=Fn(e),v=0;if(!p||this===zn&&Nn(p))for(a=de(e),u=r?new this(a):zn(a);a>v;v++)h=i?o(e[v],v):e[v],Cn(u,v,h);else for(u=r?new this:[],l=(c=Dn(e,p)).next;!(s=f(l,c)).done;v++)h=i?Mn(c,o,[s.value,v],!0):s.value,Cn(u,v,h);return u.length=v,u},qn=dt("iterator"),Hn=!1;try{var $n=0,Kn={next:function(){return{done:!!$n++}},return:function(){Hn=!0}};Kn[qn]=function(){return this},Array.from(Kn,function(){throw 2})}catch(t){}var Gn=function(t,e){try{if(!e&&!Hn)return!1}catch(t){return!1}var r=!1;try{var n={};n[qn]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(t){}return r},Vn=!Gn(function(t){Array.from(t)});Ce({target:"Array",stat:!0,forced:Vn},{from:Wn});var Yn=i,Xn=ye.includes,Jn=a(function(){return!Array(1).includes()});Ce({target:"Array",proto:!0,forced:Jn},{includes:function(t){return Xn(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe("includes"),Ze("Array","includes");var Qn=Ct.f,Zn="Array Iterator",to=ne.set,eo=ne.getterFor(Zn),ro=Rn(Array,"Array",function(t,e){to(this,{type:Zn,target:k(t),index:0,kind:e})},function(){var t=eo(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);switch(t.kind){case"keys":return Pn(r,!1);case"values":return Pn(e[r],!1)}return Pn([r,e[r]],!1)},"values"),no=un.Arguments=un.Array;if(Qe("keys"),Qe("values"),Qe("entries"),u&&"values"!==no.name)try{Qn(no,"name",{value:"values"})}catch(t){}cr||ie(Object.prototype,"toString",cr?{}.toString:function(){return"[object "+pr(this)+"]"},{unsafe:!0}),Ze("Array","values");var oo=Array,io=a(function(){function t(){}return!(oo.of.call(t)instanceof t)});Ce({target:"Array",stat:!0,forced:io},{of:function(){for(var t=0,e=arguments.length,r=new(Sr(this)?this:oo)(e);e>t;)Cn(r,t,arguments[t++]);return r.length=e,r}});var ao=dt("hasInstance"),uo=Function.prototype;ao in uo||Ct.f(uo,ao,{value:oe(function(t){if(!T(this)||!M(t))return!1;var e=this.prototype;return M(e)?U(e,t):t instanceof this},ao)}),dt("hasInstance");var so=function(t,e,r){return r.get&&oe(r.get,e,{getter:!0}),r.set&&oe(r.set,e,{setter:!0}),Ct.f(t,e,r)},co=zt.EXISTS,fo=Function.prototype,lo=b(fo.toString),ho=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,po=b(ho.exec);u&&!co&&so(fo,"name",{configurable:!0,get:function(){try{return po(ho,lo(this))[1]}catch(t){return""}}});var vo=b([].slice),go=Oe.f,yo="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],mo={f:function(t){return yo&&"Window"===E(t)?function(t){try{return go(t)}catch(t){return vo(yo)}}(t):go(k(t))}},bo=a(function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}),wo=Object.isExtensible,So=a(function(){wo(1)})||bo?function(t){return!!M(t)&&(!bo||"ArrayBuffer"!==E(t))&&(!wo||wo(t))}:wo,Eo=!a(function(){return Object.isExtensible(Object.preventExtensions({}))}),Oo=e(function(t){var e=Ct.f,r=!1,n=lt("meta"),o=0,i=function(t){e(t,n,{value:{objectID:"O"+o++,weakData:{}}})},a=t.exports={enable:function(){a.enable=function(){},r=!0;var t=Oe.f,e=b([].splice),o={};o[n]=1,t(o).length&&(Oe.f=function(r){for(var o=t(r),i=0,a=o.length;ii;i++)if((u=y(t[i]))&&U(Po,u))return u;return new Ro(!1)}n=Dn(t,o)}for(s=h?t.next:n.next;!(c=f(s,n)).done;){try{u=y(c.value)}catch(t){Tn(n,"throw",t)}if("object"==typeof u&&u&&U(Po,u))return u}return new Ro(!1)},jo=TypeError,ko=function(t,e){if(U(e,t))return t;throw new jo("Incorrect invocation")},Io=function(t,e,r){var n,o;return dn&&T(n=e.constructor)&&n!==r&&M(o=n.prototype)&&o!==r.prototype&&dn(t,o),t},To=function(t,e,r){var n=-1!==t.indexOf("Map"),o=-1!==t.indexOf("Weak"),u=n?"set":"add",s=i[t],c=s&&s.prototype,f=s,l={},h=function(t){var e=b(c[t]);ie(c,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return o&&!M(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(Ue(t,!T(s)||!(o||c.forEach&&!a(function(){(new s).entries().next()}))))f=r.getConstructor(e,t,n,u),Oo.enable();else if(Ue(t,!0)){var p=new f,v=p[u](o?{}:-0,1)!==p,d=a(function(){p.has(1)}),g=Gn(function(t){new s(t)}),y=!o&&a(function(){for(var t=new s,e=5;e--;)t[u](e,e);return!t.has(-0)});g||((f=e(function(t,e){ko(t,c);var r=Io(new s,t,f);return P(e)||Ao(e,r[u],{that:r,AS_ENTRIES:n}),r})).prototype=c,c.constructor=f),(d||y)&&(h("delete"),h("has"),n&&h("get")),(y||v)&&h(u),o&&c.clear&&delete c.clear}return l[t]=f,Ce({global:!0,constructor:!0,forced:f!==s},l),an(f,t),o||r.setStrong(f,t,n),f},Mo=function(t,e,r){for(var n in e)ie(t,n,e[n],r);return t},Lo=dt("species"),Uo=function(t){var e=L(t);u&&e&&!e[Lo]&&so(e,Lo,{configurable:!0,get:function(){return this}})},No=Oo.fastKey,Co=ne.set,_o=ne.getterFor,Fo={getConstructor:function(t,e,r,n){var o=t(function(t,o){ko(t,i),Co(t,{type:e,index:Ve(null),first:null,last:null,size:0}),u||(t.size=0),P(o)||Ao(o,t[n],{that:t,AS_ENTRIES:r})}),i=o.prototype,a=_o(e),s=function(t,e,r){var n,o,i=a(t),s=c(t,e);return s?s.value=r:(i.last=s={index:o=No(e,!0),key:e,value:r,previous:n=i.last,next:null,removed:!1},i.first||(i.first=s),n&&(n.next=s),u?i.size++:t.size++,"F"!==o&&(i.index[o]=s)),t},c=function(t,e){var r,n=a(t),o=No(e);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key===e)return r};return Mo(i,{clear:function(){for(var t=a(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=null),e=e.next;t.first=t.last=null,t.index=Ve(null),u?t.size=0:this.size=0},delete:function(t){var e=this,r=a(e),n=c(e,t);if(n){var o=n.next,i=n.previous;delete r.index[n.index],n.removed=!0,i&&(i.next=o),o&&(o.previous=i),r.first===n&&(r.first=o),r.last===n&&(r.last=i),u?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=a(this),n=ar(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!c(this,t)}}),Mo(i,r?{get:function(t){var e=c(this,t);return e&&e.value},set:function(t,e){return s(this,0===t?0:t,e)}}:{add:function(t){return s(this,t=0===t?0:t,t)}}),u&&so(i,"size",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(t,e,r){var n=e+" Iterator",o=_o(e),i=_o(n);Rn(t,e,function(t,e){Co(this,{type:n,target:t,state:o(t),kind:e,last:null})},function(){for(var t=i(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?Pn("keys"===e?r.key:"values"===e?r.value:[r.key,r.value],!1):(t.target=null,Pn(void 0,!0))},r?"entries":"values",!r,!0),Uo(e)}};To("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var Bo=Map.prototype,Do={Map:Map,set:b(Bo.set),get:b(Bo.get),has:b(Bo.has),remove:b(Bo.delete),proto:Bo},zo=Do.Map,Wo=Do.has,qo=Do.get,Ho=Do.set,$o=b([].push),Ko=a(function(){return 1!==zo.groupBy("ab",function(t){return t}).get("a").length});Ce({target:"Map",stat:!0,forced:Ko},{groupBy:function(t,e){j(t),J(e);var r=new zo,n=0;return Ao(t,function(t){var o=e(t,n++);Wo(r,o)?$o(qo(r,o),t):Ho(r,o,[t])}),r}});var Go={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Vo=Et("span").classList,Yo=Vo&&Vo.constructor&&Vo.constructor.prototype,Xo=Yo===Object.prototype?void 0:Yo,Jo=dt("iterator"),Qo=ro.values,Zo=function(t,e){if(t){if(t[Jo]!==Qo)try{_t(t,Jo,Qo)}catch(e){t[Jo]=Qo}if(an(t,e,!0),Go[e])for(var r in ro)if(t[r]!==ro[r])try{_t(t,r,ro[r])}catch(e){t[r]=ro[r]}}};for(var ti in Go)Zo(i[ti]&&i[ti].prototype,ti);Zo(Xo,"DOMTokenList");var ei=function(t,e,r){return function(n){var o=it(n),i=arguments.length,a=i>1?arguments[1]:void 0,u=void 0!==a,s=u?ar(a,i>2?arguments[2]:void 0):void 0,c=new t,f=0;return Ao(o,function(t){var n=u?s(t,f++):t;r?e(c,kt(n)[0],n[1]):e(c,n)}),c}};Ce({target:"Map",stat:!0,forced:!0},{from:ei(Do.Map,Do.set,!0)});var ri=function(t,e,r){return function(){for(var n=new t,o=arguments.length,i=0;i1?arguments[1]:void 0);return!1!==di(e,function(t,n){if(!r(t,n,e))return!1},!0)}});var gi=Do.Map,yi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new gi;return di(e,function(t,o){r(t,o,e)&&yi(n,o,t)}),n}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{find:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{key:n}},!0);return n&&n.key}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(t){return!0===di(oi(this),function(e){if((r=e)===(n=t)||r!=r&&n!=n)return!0;var r,n},!0)}});var mi=Do.Map;Ce({target:"Map",stat:!0,forced:!0},{keyBy:function(t,e){var r=new(T(this)?this:mi);J(e);var n=J(r.set);return Ao(t,function(t){f(n,r,e(t),t)}),r}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(t){var e=di(oi(this),function(e,r){if(e===t)return{key:r}},!0);return e&&e.key}});var bi=Do.Map,wi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new bi;return di(e,function(t,o){wi(n,r(t,o,e),t)}),n}});var Si=Do.Map,Ei=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new Si;return di(e,function(t,o){Ei(n,o,r(t,o,e))}),n}});var Oi=Do.set;Ce({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(t){for(var e=oi(this),r=arguments.length,n=0;n1?arguments[1]:void 0);return!0===di(e,function(t,n){if(r(t,n,e))return!0},!0)}});var Ri=TypeError,Pi=Do.get,Ai=Do.has,ji=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{update:function(t,e){var r=oi(this),n=arguments.length;J(e);var o=Ai(r,t);if(!o&&n<3)throw new Ri("Updating absent value");var i=o?Pi(r,t):J(n>2?arguments[2]:void 0)(t,r);return ji(r,t,e(i,t,r)),r}});var ki=TypeError,Ii=function(t,e){var r,n=kt(this),o=J(n.get),i=J(n.has),a=J(n.set),u=arguments.length>2?arguments[2]:void 0;if(!T(e)&&!T(u))throw new ki("At least one callback required");return f(i,n,t)?(r=f(o,n,t),T(e)&&(r=e(r),f(a,n,t,r))):T(u)&&(r=u(),f(a,n,t,r)),r};Ce({target:"Map",proto:!0,real:!0,forced:!0},{upsert:Ii}),Ce({target:"Map",proto:!0,real:!0,name:"upsert",forced:!0},{updateOrInsert:Ii});var Ti=b(1..valueOf),Mi="\t\n\v\f\r                 \u2028\u2029\ufeff",Li=b("".replace),Ui=RegExp("^["+Mi+"]+"),Ni=RegExp("(^|[^"+Mi+"])["+Mi+"]+$"),Ci=function(t){return function(e){var r=Wr(j(e));return 1&t&&(r=Li(r,Ui,"")),2&t&&(r=Li(r,Ni,"$1")),r}},_i={start:Ci(1),end:Ci(2),trim:Ci(3)},Fi=Oe.f,Bi=Rt.f,Di=Ct.f,zi=_i.trim,Wi="Number",qi=i[Wi],Hi=qi.prototype,$i=i.TypeError,Ki=b("".slice),Gi=b("".charCodeAt),Vi=Ue(Wi,!qi(" 0o1")||!qi("0b1")||qi("+0x1")),Yi=function(t){var e,r=arguments.length<1?0:qi(function(t){var e=mt(t,"number");return"bigint"==typeof e?e:function(t){var e,r,n,o,i,a,u,s,c=mt(t,"number");if(G(c))throw new $i("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(c=zi(c),43===(e=Gi(c,0))||45===e){if(88===(r=Gi(c,2))||120===r)return NaN}else if(48===e){switch(Gi(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(i=Ki(c,2)).length,u=0;uo)return NaN;return parseInt(i,n)}return+c}(e)}(t));return U(Hi,e=this)&&a(function(){Ti(e)})?Io(Object(r),this,Yi):r};Yi.prototype=Hi,Vi&&(Hi.constructor=Yi),Ce({global:!0,constructor:!0,wrap:!0,forced:Vi},{Number:Yi}),Vi&&function(t,e){for(var r,n=u?Fi(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;n.length>o;o++)ut(e,r=n[o])&&!ut(t,r)&&Di(t,r,Bi(e,r))}(Yn[Wi],qi),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)});var Xi=i.isFinite;Ce({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&Xi(t)}});var Ji=Math.floor,Qi=Number.isInteger||function(t){return!M(t)&&isFinite(t)&&Ji(t)===t};Ce({target:"Number",stat:!0},{isInteger:Qi}),Ce({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var Zi=Math.abs;Ce({target:"Number",stat:!0},{isSafeInteger:function(t){return Qi(t)&&Zi(t)<=9007199254740991}}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991});var ta=_i.trim,ea=b("".charAt),ra=i.parseFloat,na=i.Symbol,oa=na&&na.iterator,ia=1/ra(Mi+"-0")!=-Infinity||oa&&!a(function(){ra(Object(oa))})?function(t){var e=ta(Wr(t)),r=ra(e);return 0===r&&"-"===ea(e,0)?-0:r}:ra;Ce({target:"Number",stat:!0,forced:Number.parseFloat!==ia},{parseFloat:ia});var aa=_i.trim,ua=i.parseInt,sa=i.Symbol,ca=sa&&sa.iterator,fa=/^[+-]?0x/i,la=b(fa.exec),ha=8!==ua(Mi+"08")||22!==ua(Mi+"0x16")||ca&&!a(function(){ua(Object(ca))})?function(t,e){var r=aa(Wr(t));return ua(r,e>>>0||(la(fa,r)?16:10))}:ua;Ce({target:"Number",stat:!0,forced:Number.parseInt!==ha},{parseInt:ha});var pa=b(v.f),va=b([].push),da=u&&a(function(){var t=Object.create(null);return t[2]=2,!pa(t,2)}),ga=function(t){return function(e){for(var r,n=k(e),o=_e(n),i=da&&null===Qr(n),a=o.length,s=0,c=[];a>s;)r=o[s++],u&&!(i?r in n:pa(n,r))||va(c,t?[r,n[r]]:n[r]);return c}},ya={entries:ga(!0),values:ga(!1)},ma=ya.entries;Ce({target:"Object",stat:!0},{entries:function(t){return ma(t)}}),Ce({target:"Object",stat:!0,sham:!u},{getOwnPropertyDescriptors:function(t){for(var e,r,n=k(t),o=Rt.f,i=Pe(n),a={},u=0;i.length>u;)void 0!==(r=o(n,e=i[u++]))&&Cn(a,e,r);return a}});var ba=a(function(){_e(1)});Ce({target:"Object",stat:!0,forced:ba},{keys:function(t){return _e(it(t))}});var wa=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ce({target:"Object",stat:!0},{is:wa});var Sa=ya.values;Ce({target:"Object",stat:!0},{values:function(t){return Sa(t)}}),Ce({target:"Object",stat:!0},{hasOwn:ut});var Ea=Function.prototype,Oa=Ea.apply,xa=Ea.call,Ra="object"==typeof Reflect&&Reflect.apply||(s?xa.bind(Oa):function(){return xa.apply(Oa,arguments)}),Pa=!a(function(){Reflect.apply(function(){})});Ce({target:"Reflect",stat:!0,forced:Pa},{apply:function(t,e,r){return Ra(J(t),e,kt(r))}});var Aa=Function,ja=b([].concat),ka=b([].join),Ia={},Ta=s?Aa.bind:function(t){var e=J(this),r=e.prototype,n=vo(arguments,1),o=function(){var r=ja(n,vo(arguments));return this instanceof o?function(t,e,r){if(!ut(Ia,e)){for(var n=[],o=0;ob)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}),gs=Oe.f,ys=ne.enforce,ms=dt("match"),bs=i.RegExp,ws=bs.prototype,Ss=i.SyntaxError,Es=b(ws.exec),Os=b("".charAt),xs=b("".replace),Rs=b("".indexOf),Ps=b("".slice),As=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,js=/a/g,ks=/a/g,Is=new bs(js)!==js,Ts=cs.MISSED_STICKY,Ms=cs.UNSUPPORTED_Y,Ls=u&&(!Is||Ts||ps||ds||a(function(){return ks[ms]=!1,bs(js)!==js||bs(ks)===ks||"/a/i"!==String(bs(js,"i"))}));if(Ue("RegExp",Ls)){for(var Us=function(t,e){var r,n,o,i,a,u,s=U(ws,this),c=es(t),f=void 0===e,l=[],h=t;if(!s&&c&&f&&t.constructor===Us)return t;if((c||U(ws,t))&&(t=t.source,f&&(e=os(h))),t=void 0===t?"":Wr(t),e=void 0===e?"":Wr(e),h=t,ps&&"dotAll"in js&&(n=!!e&&Rs(e,"s")>-1)&&(e=xs(e,/s/g,"")),r=e,Ts&&"sticky"in js&&(o=!!e&&Rs(e,"y")>-1)&&Ms&&(e=xs(e,/y/g,"")),ds&&(i=function(t){for(var e,r=t.length,n=0,o="",i=[],a=Ve(null),u=!1,s=!1,c=0,f="";n<=r;n++){if("\\"===(e=Os(t,n)))e+=Os(t,++n);else if("]"===e)u=!1;else if(!u)switch(!0){case"["===e:u=!0;break;case"("===e:if(o+=e,"?:"===Ps(t,n+1,n+3))continue;Es(As,Ps(t,n+1))&&(n+=2,s=!0),c++;continue;case">"===e&&s:if(""===f||ut(a,f))throw new Ss("Invalid capture group name");a[f]=!0,i[i.length]=[f,c],s=!1,f="";continue}s?f+=e:o+=e}return[o,i]}(t),t=i[0],l=i[1]),a=Io(bs(t,e),s?this:ws,Us),(n||o||l.length)&&(u=ys(a),n&&(u.dotAll=!0,u.raw=Us(function(t){for(var e,r=t.length,n=0,o="",i=!1;n<=r;n++)"\\"!==(e=Os(t,n))?i||"."!==e?("["===e?i=!0:"]"===e&&(i=!1),o+=e):o+="[\\s\\S]":o+=e+Os(t,++n);return o}(t),r)),o&&(u.sticky=!0),l.length&&(u.groups=l)),t!==h)try{_t(a,"source",""===h?"(?:)":h)}catch(t){}return a},Ns=gs(bs),Cs=0;Ns.length>Cs;)ls(Us,bs,Ns[Cs++]);ws.constructor=Us,Us.prototype=ws,ie(i,"RegExp",Us,{constructor:!0})}Uo("RegExp");var _s=zt.PROPER,Fs="toString",Bs=RegExp.prototype,Ds=Bs[Fs];(a(function(){return"/a/b"!==Ds.call({source:"a",flags:"b"})})||_s&&Ds.name!==Fs)&&ie(Bs,Fs,function(){var t=kt(this);return"/"+Wr(t.source)+"/"+Wr(os(t))},{unsafe:!0});var zs=ne.get,Ws=RegExp.prototype,qs=TypeError;u&&ps&&so(Ws,"dotAll",{configurable:!0,get:function(){if(this!==Ws){if("RegExp"===E(this))return!!zs(this).dotAll;throw new qs("Incompatible receiver, RegExp required")}}});var Hs=ne.get,$s=nt("native-string-replace",String.prototype.replace),Ks=RegExp.prototype.exec,Gs=Ks,Vs=b("".charAt),Ys=b("".indexOf),Xs=b("".replace),Js=b("".slice),Qs=function(){var t=/a/,e=/b*/g;return f(Ks,t,"a"),f(Ks,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),Zs=cs.BROKEN_CARET,tc=void 0!==/()??/.exec("")[1];(Qs||tc||Zs||ps||ds)&&(Gs=function(t){var e,r,n,o,i,a,u,s=this,c=Hs(s),l=Wr(t),h=c.raw;if(h)return h.lastIndex=s.lastIndex,e=f(Gs,h,l),s.lastIndex=h.lastIndex,e;var p=c.groups,v=Zs&&s.sticky,d=f(rs,s),g=s.source,y=0,m=l;if(v&&(d=Xs(d,"y",""),-1===Ys(d,"g")&&(d+="g"),m=Js(l,s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==Vs(l,s.lastIndex-1))&&(g="(?: "+g+")",m=" "+m,y++),r=new RegExp("^(?:"+g+")",d)),tc&&(r=new RegExp("^"+g+"$(?!\\s)",d)),Qs&&(n=s.lastIndex),o=f(Ks,v?r:s,m),v?o?(o.input=Js(o.input,y),o[0]=Js(o[0],y),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:Qs&&o&&(s.lastIndex=s.global?o.index+o[0].length:n),tc&&o&&o.length>1&&f($s,o[0],r,function(){for(i=1;i]*>)/g,Oc=/\$([$&'`]|\d{1,2})/g,xc=function(t,e,r,n,o,i){var a=r+t.length,u=n.length,s=Oc;return void 0!==o&&(o=it(o),s=Ec),wc(i,s,function(i,s){var c;switch(bc(s,0)){case"$":return"$";case"&":return t;case"`":return Sc(e,0,r);case"'":return Sc(e,a);case"<":c=o[Sc(s,1,-1)];break;default:var f=+s;if(0===f)return i;if(f>u){var l=mc(f/10);return 0===l?i:l<=u?void 0===n[l-1]?bc(s,1):n[l-1]+bc(s,1):i}c=n[f-1]}return void 0===c?"":c})},Rc=dt("replace"),Pc=Math.max,Ac=Math.min,jc=b([].concat),kc=b([].push),Ic=b("".indexOf),Tc=b("".slice),Mc="$0"==="a".replace(/./,"$0"),Lc=!!/./[Rc]&&""===/./[Rc]("a","$0"),Uc=!a(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")});pc("replace",function(t,e,r){var n=Lc?"$":"$0";return[function(t,r){var n=j(this),o=P(t)?void 0:Q(t,Rc);return o?f(o,t,n,r):f(e,Wr(n),t,r)},function(t,o){var i=kt(this),a=Wr(t);if("string"==typeof o&&-1===Ic(o,n)&&-1===Ic(o,"$<")){var u=r(e,i,a,o);if(u.done)return u.value}var s=T(o);s||(o=Wr(o));var c,f=i.global;f&&(c=i.unicode,i.lastIndex=0);for(var l,h=[];null!==(l=yc(i,a))&&(kc(h,l),f);)""===Wr(l[0])&&(i.lastIndex=dc(a,ve(i.lastIndex),c));for(var p,v="",d=0,g=0;g=d&&(v+=Tc(a,d,b)+y,d=b+m.length)}return v+Tc(a,d)}]},!Uc||!Mc||Lc),pc("search",function(t,e,r){return[function(e){var r=j(this),n=P(e)?void 0:Q(e,t);return n?f(n,e,r):new RegExp(e)[t](Wr(r))},function(t){var n=kt(this),o=Wr(t),i=r(e,n,o);if(i.done)return i.value;var a=n.lastIndex;wa(a,0)||(n.lastIndex=0);var u=yc(n,o);return wa(n.lastIndex,a)||(n.lastIndex=a),null===u?-1:u.index}]});var Nc=dt("species"),Cc=function(t,e){var r,n=kt(t).constructor;return void 0===n||P(r=kt(n)[Nc])?e:La(r)},_c=cs.UNSUPPORTED_Y,Fc=Math.min,Bc=b([].push),Dc=b("".slice),zc=!a(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}),Wc="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;pc("split",function(t,e,r){var n="0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:f(e,this,t,r)}:e;return[function(e,r){var o=j(this),i=P(e)?void 0:Q(e,t);return i?f(i,e,o,r):f(n,Wr(o),e,r)},function(t,o){var i=kt(this),a=Wr(t);if(!Wc){var u=r(n,i,a,o,n!==e);if(u.done)return u.value}var s=Cc(i,RegExp),c=i.unicode,f=new s(_c?"^(?:"+i.source+")":i,(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(_c?"g":"y")),l=void 0===o?4294967295:o>>>0;if(0===l)return[];if(0===a.length)return null===yc(f,a)?[a]:[];for(var h=0,p=0,v=[];p0;(n>>>=1)&&(e+=e))1&n&&(r+=e);return r},Kc=b($c),Gc=b("".slice),Vc=Math.ceil,Yc=function(t){return function(e,r,n){var o,i,a=Wr(j(e)),u=ve(r),s=a.length,c=void 0===n?" ":Wr(n);return u<=s||""===c?a:((i=Kc(c,Vc((o=u-s)/c.length))).length>o&&(i=Gc(i,0,o)),t?a+i:i+a)}},Xc={start:Yc(!1),end:Yc(!0)},Jc=Xc.start,Qc=Array,Zc=RegExp.escape,tf=b("".charAt),ef=b("".charCodeAt),rf=b(1.1.toString),nf=b([].join),of=/^[0-9a-z]/i,af=/^[$()*+./?[\\\]^{|}]/,uf=RegExp("^[!\"#%&',\\-:;<=>@`~"+Mi+"]"),sf=b(of.exec),cf={"\t":"t","\n":"n","\v":"v","\f":"f","\r":"r"},ff=function(t){var e=rf(ef(t,0),16);return e.length<3?"\\x"+Jc(e,2,"0"):"\\u"+Jc(e,4,"0")},lf=!Zc||"\\x61b"!==Zc("ab");Ce({target:"RegExp",stat:!0,forced:lf},{escape:function(t){!function(t){if("string"==typeof t)return t;throw new qc("Argument is not a string")}(t);for(var e=t.length,r=Qc(e),n=0;n=56320||n+1>=e||56320!=(64512&ef(t,n+1))?r[n]=ff(o):(r[n]=o,r[++n]=tf(t,n))}}return nf(r,"")}}),To("Set",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var hf=Set.prototype,pf={Set:Set,add:b(hf.add),has:b(hf.has),remove:b(hf.delete),proto:hf},vf=pf.has,df=function(t){return vf(t),t},gf=pf.Set,yf=pf.proto,mf=b(yf.forEach),bf=b(yf.keys),wf=bf(new gf).next,Sf=function(t,e,r){return r?ci({iterator:bf(t),next:wf},e):mf(t,e)},Ef=pf.Set,Of=pf.add,xf=function(t){var e=new Ef;return Sf(t,function(t){Of(e,t)}),e},Rf=ln(pf.proto,"size","get")||function(t){return t.size},Pf="Invalid size",Af=RangeError,jf=TypeError,kf=Math.max,If=function(t,e){this.set=t,this.size=kf(e,0),this.has=J(t.has),this.keys=J(t.keys)};If.prototype={getIterator:function(){return{iterator:t=kt(f(this.keys,this.set)),next:t.next,done:!1};var t},includes:function(t){return f(this.has,this.set,t)}};var Tf=function(t){kt(t);var e=+t.size;if(e!=e)throw new jf(Pf);var r=ce(e);if(r<0)throw new Af(Pf);return new If(t,r)},Mf=pf.has,Lf=pf.remove,Uf=function(t){var e=df(this),r=Tf(t),n=xf(e);return Rf(e)<=r.size?Sf(e,function(t){r.includes(t)&&Lf(n,t)}):ci(r.getIterator(),function(t){Mf(e,t)&&Lf(n,t)}),n},Nf=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},Cf=function(t){var e=L("Set");try{(new e)[t](Nf(0));try{return(new e)[t](Nf(-1)),!1}catch(t){return!0}}catch(t){return!1}};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("difference")},{difference:Uf});var _f=pf.Set,Ff=pf.add,Bf=pf.has,Df=function(t){var e=df(this),r=Tf(t),n=new _f;return Rf(e)>r.size?ci(r.getIterator(),function(t){Bf(e,t)&&Ff(n,t)}):Sf(e,function(t){r.includes(t)&&Ff(n,t)}),n},zf=!Cf("intersection")||a(function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))});Ce({target:"Set",proto:!0,real:!0,forced:zf},{intersection:Df});var Wf=pf.has,qf=function(t){var e=df(this),r=Tf(t);if(Rf(e)<=r.size)return!1!==Sf(e,function(t){if(r.includes(t))return!1},!0);var n=r.getIterator();return!1!==ci(n,function(t){if(Wf(e,t))return Tn(n,"normal",!1)})};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isDisjointFrom")},{isDisjointFrom:qf});var Hf=function(t){var e=df(this),r=Tf(t);return!(Rf(e)>r.size)&&!1!==Sf(e,function(t){if(!r.includes(t))return!1},!0)};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isSubsetOf")},{isSubsetOf:Hf});var $f=pf.has,Kf=function(t){var e=df(this),r=Tf(t);if(Rf(e)1?arguments[1]:void 0);return!1!==Sf(e,function(t){if(!r(t,t,e))return!1},!0)}});var el=dt("iterator"),rl=Object,nl=L("Set"),ol=function(t){return function(t){return M(t)&&"number"==typeof t.size&&T(t.has)&&T(t.keys)}(t)?t:function(t){if(P(t))return!1;var e=rl(t);return void 0!==e[el]||"@@iterator"in e||ut(un,pr(e))}(t)?new nl(t):t};Ce({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(t){return f(Uf,this,ol(t))}});var il=pf.Set,al=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new il;return Sf(e,function(t){r(t,t,e)&&al(n,t)}),n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{find:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=Sf(e,function(t){if(r(t,t,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(t){return f(Df,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(t){return f(qf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(t){return f(Hf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(t){return f(Kf,this,ol(t))}});var ul=b([].join),sl=b([].push);Ce({target:"Set",proto:!0,real:!0,forced:!0},{join:function(t){var e=df(this),r=void 0===t?",":Wr(t),n=[];return Sf(e,function(t){sl(n,t)}),ul(n,r)}});var cl=pf.Set,fl=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{map:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new cl;return Sf(e,function(t){fl(n,r(t,t,e))}),n}});var ll=TypeError;Ce({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=df(this),r=arguments.length<2,n=r?void 0:arguments[1];if(J(t),Sf(e,function(o){r?(r=!1,n=o):n=t(n,o,o,e)}),r)throw new ll("Reduce of empty set with no initial value");return n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{some:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0);return!0===Sf(e,function(t){if(r(t,t,e))return!0},!0)}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(t){return f(Xf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{union:function(t){return f(Qf,this,ol(t))}});var hl=dt("species"),pl=dt("isConcatSpreadable"),vl=W>=51||!a(function(){var t=[];return t[pl]=!1,t.concat()[0]!==t}),dl=function(t){if(!M(t))return!1;var e=t[pl];return void 0!==e?!!e:ur(t)},gl=!(vl&&(W>=51||!a(function(){var t=[];return(t.constructor={})[hl]=function(){return{foo:1}},1!==t.concat(Boolean).foo})));Ce({target:"Array",proto:!0,arity:1,forced:gl},{concat:function(t){var e,r,n,o,i,a=it(this),u=xr(a,0),s=0;for(e=-1,n=arguments.length;e1?arguments[1]:void 0,n=e.length,o=void 0===r?n:ip(ve(r),n),i=Wr(t);return op(e,o-i.length,o)===i}}),Ze("String","endsWith");var sp=RangeError,cp=String.fromCharCode,fp=String.fromCodePoint,lp=b([].join);Ce({target:"String",stat:!0,arity:1,forced:!!fp&&1!==fp.length},{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,o=0;n>o;){if(e=+arguments[o++],he(e,1114111)!==e)throw new sp(e+" is not a valid code point");r[o]=e<65536?cp(e):cp(55296+((e-=65536)>>10),e%1024+56320)}return lp(r,"")}});var hp=b("".indexOf);Ce({target:"String",proto:!0,forced:!rp("includes")},{includes:function(t){return!!~hp(Wr(j(this)),Wr(tp(t)),arguments.length>1?arguments[1]:void 0)}}),Ze("String","includes"),b(un.String);var pp=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(_),vp=Xc.start;Ce({target:"String",proto:!0,forced:pp},{padStart:function(t){return vp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padStart");var dp=Xc.end;Ce({target:"String",proto:!0,forced:pp},{padEnd:function(t){return dp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padEnd");var gp=b([].push),yp=b([].join);Ce({target:"String",stat:!0},{raw:function(t){var e=k(it(t).raw),r=de(e);if(!r)return"";for(var n=arguments.length,o=[],i=0;;){if(gp(o,Wr(e[i++])),i===r)return yp(o,"");i1?arguments[1]:void 0,e.length)),n=Wr(t);return bp(e,r,r+n.length)===n}}),Ze("String","startsWith");var Op=zt.PROPER,xp=function(t){return a(function(){return!!Mi[t]()||"​…᠎"!=="​…᠎"[t]()||Op&&Mi[t].name!==t})},Rp=_i.start,Pp=xp("trimStart")?function(){return Rp(this)}:"".trimStart;Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Pp},{trimLeft:Pp}),Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Pp},{trimStart:Pp}),Ze("String","trimLeft");var Ap=_i.end,jp=xp("trimEnd")?function(){return Ap(this)}:"".trimEnd;Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==jp},{trimRight:jp}),Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==jp},{trimEnd:jp}),Ze("String","trimRight");var kp=Object.getOwnPropertyDescriptor,Ip=function(t){if(!u)return i[t];var e=kp(i,t);return e&&e.value},Tp=dt("iterator"),Mp=!a(function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return t.pathname="c%20d",e.forEach(function(t,r){e.delete("b"),n+=r+t}),r.delete("a",2),r.delete("b",void 0),!e.size&&!u||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[Tp]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}),Lp=TypeError,Up=function(t,e){if(t0;)t[o]=t[--o];o!==i++&&(t[o]=n)}else for(var a=Np(r/2),u=Cp(vo(t,0,a),e),s=Cp(vo(t,a),e),c=u.length,f=s.length,l=0,h=0;l0&&0!=(t&r);r>>=1)e++;return e},pv=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},vv=function(t){for(var e=(t=nv(t,cv," ")).length,r="",n=0;ne){r+="%",n++;continue}var i=lv(t,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=hv(i);if(0===a)o=Jp(i);else{if(1===a||a>4){r+="�",n++;continue}for(var u=[i],s=1;se||"%"!==tv(t,n));){var c=lv(t,n+1);if(c!=c){n+=3;break}if(c>191||c<128)break;rv(u,c),n+=2,s++}if(u.length!==a){r+="�";continue}var f=pv(u);null===f?r+="�":o=Qp(f)}}r+=o,n++}return r},dv=/[!'()~]|%20/g,gv={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},yv=function(t){return gv[t]},mv=function(t){return nv(Xp(t),dv,yv)},bv=fn(function(t,e){zp(this,{type:Dp,target:Wp(t).entries,index:0,kind:e})},Bp,function(){var t=qp(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);var n=e[r];switch(t.kind){case"keys":return Pn(n.key,!1);case"values":return Pn(n.value,!1)}return Pn([n.key,n.value],!1)},!0),wv=function(t){this.entries=[],this.url=null,void 0!==t&&(M(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===tv(t,0)?uv(t,1):t:Wr(t)))};wv.prototype={type:Bp,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,r,n,o,i,a,u,s=this.entries,c=Fn(t);if(c)for(r=(e=Dn(t,c)).next;!(n=f(r,e)).done;){if(o=Dn(kt(n.value)),(a=f(i=o.next,o)).done||(u=f(i,o)).done||!f(i,o).done)throw new Yp("Expected sequence with length 2");rv(s,{key:Wr(a.value),value:Wr(u.value)})}else for(var l in t)ut(t,l)&&rv(s,{key:l,value:Wr(t[l])})},parseQuery:function(t){if(t)for(var e,r,n=this.entries,o=av(t,"&"),i=0;i0?arguments[0]:void 0));u||(this.size=t.entries.length)},Ev=Sv.prototype;if(Mo(Ev,{append:function(t,e){var r=Wp(this);Up(arguments.length,2),rv(r.entries,{key:Wr(t),value:Wr(e)}),u||this.length++,r.updateURL()},delete:function(t){for(var e=Wp(this),r=Up(arguments.length,1),n=e.entries,o=Wr(t),i=r<2?void 0:arguments[1],a=void 0===i?i:Wr(i),s=0;se.key?1:-1}),t.updateURL()},forEach:function(t){for(var e,r=Wp(this).entries,n=ar(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Rv(arguments[1]):{})}}),T($p)){var Pv=function(t){return ko(this,Gp),new $p(t,arguments.length>1?Rv(arguments[1]):{})};Gp.constructor=Pv,Pv.prototype=Gp,Ce({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Pv})}}var Av={URLSearchParams:Sv,getState:Wp},jv=URLSearchParams,kv=jv.prototype,Iv=b(kv.append),Tv=b(kv.delete),Mv=b(kv.forEach),Lv=b([].push),Uv=new jv("a=1&a=2&b=3");Uv.delete("a",1),Uv.delete("b",void 0),Uv+""!="a=2"&&ie(kv,"delete",function(t){var e=arguments.length,r=e<2?void 0:arguments[1];if(e&&void 0===r)return Tv(this,t);var n=[];Mv(this,function(t,e){Lv(n,{key:e,value:t})}),Up(e,1);for(var o,i=Wr(t),a=Wr(r),u=0,s=0,c=!1,f=n.length;uo;)for(var s,c=R(arguments[o++]),l=i?$v(_e(c),i(c)):_e(c),h=l.length,p=0;h>p;)s=l[p++],u&&!f(a,c,s)||(r[s]=c[s]);return r}:qv,Gv=2147483647,Vv=/[^\0-\u007E]/,Yv=/[.\u3002\uFF0E\uFF61]/g,Xv="Overflow: input needs wider integers to process",Jv=RangeError,Qv=b(Yv.exec),Zv=Math.floor,td=String.fromCharCode,ed=b("".charCodeAt),rd=b([].join),nd=b([].push),od=b("".replace),id=b("".split),ad=b("".toLowerCase),ud=function(t){return t+22+75*(t<26)},sd=function(t,e,r){var n=0;for(t=r?Zv(t/700):t>>1,t+=Zv(t/e);t>455;)t=Zv(t/35),n+=36;return Zv(n+36*t/(t+38))},cd=function(t){var e=[];t=function(t){for(var e=[],r=0,n=t.length;r=55296&&o<=56319&&r=i&&nZv((Gv-a)/l))throw new Jv(Xv);for(a+=(f-i)*l,i=f,r=0;rGv)throw new Jv(Xv);if(n===i){for(var h=a,p=36;;){var v=p<=u?1:p>=u+26?26:p-u;if(h?@[\\\]^|]/,qd=/[\0\t\n\r #/:<>?@[\\\]^|]/,Hd=/^[\u0000-\u0020]+/,$d=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,Kd=/[\t\n\r]/g,Gd=function(t){var e,r,n,o;if("number"==typeof t){for(e=[],r=0;r<4;r++)Td(e,t%256),t=md(t/256);return Ed(e,".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,r=1,n=null,o=0,i=0;i<8;i++)0!==t[i]?(o>r&&(e=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:e}(t),r=0;r<8;r++)o&&0===t[r]||(o&&(o=!1),n===r?(e+=r?":":"::",o=!0):(e+=Od(t[r],16),r<7&&(e+=":")));return"["+e+"]"}return t},Vd={},Yd=Kv({},Vd,{" ":1,'"':1,"<":1,">":1,"`":1}),Xd=Kv({},Yd,{"#":1,"?":1,"{":1,"}":1}),Jd=Kv({},Xd,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Qd=function(t,e){var r=fd(t,0);return r>32&&r<127&&!ut(e,t)?t:encodeURIComponent(t)},Zd={ftp:21,file:null,http:80,https:443,ws:80,wss:443},tg=function(t,e){var r;return 2===t.length&&Sd(Nd,wd(t,0))&&(":"===(r=wd(t,1))||!e&&"|"===r)},eg=function(t){var e;return t.length>1&&tg(kd(t,0,2))&&(2===t.length||"/"===(e=wd(t,2))||"\\"===e||"?"===e||"#"===e)},rg=function(t){return"."===t||"%2e"===Id(t)},ng={},og={},ig={},ag={},ug={},sg={},cg={},fg={},lg={},hg={},pg={},vg={},dg={},gg={},yg={},mg={},bg={},wg={},Sg={},Eg={},Og={},xg=function(t,e,r){var n,o,i,a=Wr(t);if(e){if(o=this.parse(a))throw new gd(o);this.searchParams=null}else{if(void 0!==r&&(n=new xg(r,!0)),o=this.parse(a,null,n))throw new gd(o);(i=vd(new pd)).bindURL(this),this.searchParams=i}};xg.prototype={type:"URL",parse:function(t,e,r){var n,o,i,a,u,s=this,c=e||ng,f=0,l="",h=!1,p=!1,v=!1;for(t=Wr(t),e||(s.scheme="",s.username="",s.password="",s.host=null,s.port=null,s.path=[],s.query=null,s.fragment=null,s.cannotBeABaseURL=!1,t=Pd(t,Hd,""),t=Pd(t,$d,"$1")),t=Pd(t,Kd,""),n=Wn(t);f<=n.length;){switch(o=n[f],c){case ng:if(!o||!Sd(Nd,o)){if(e)return Md;c=ig;continue}l+=Id(o),c=og;break;case og:if(o&&(Sd(Cd,o)||"+"===o||"-"===o||"."===o))l+=Id(o);else{if(":"!==o){if(e)return Md;l="",c=ig,f=0;continue}if(e&&(s.isSpecial()!==ut(Zd,l)||"file"===l&&(s.includesCredentials()||null!==s.port)||"file"===s.scheme&&!s.host))return;if(s.scheme=l,e)return void(s.isSpecial()&&Zd[s.scheme]===s.port&&(s.port=null));l="","file"===s.scheme?c=gg:s.isSpecial()&&r&&r.scheme===s.scheme?c=ag:s.isSpecial()?c=fg:"/"===n[f+1]?(c=ug,f++):(s.cannotBeABaseURL=!0,Rd(s.path,""),c=Sg)}break;case ig:if(!r||r.cannotBeABaseURL&&"#"!==o)return Md;if(r.cannotBeABaseURL&&"#"===o){s.scheme=r.scheme,s.path=vo(r.path),s.query=r.query,s.fragment="",s.cannotBeABaseURL=!0,c=Og;break}c="file"===r.scheme?gg:sg;continue;case ag:if("/"!==o||"/"!==n[f+1]){c=sg;continue}c=lg,f++;break;case ug:if("/"===o){c=hg;break}c=wg;continue;case sg:if(s.scheme=r.scheme,o===Wv)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query;else if("/"===o||"\\"===o&&s.isSpecial())c=cg;else if("?"===o)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query="",c=Eg;else{if("#"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.path.length--,c=wg;continue}s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og}break;case cg:if(!s.isSpecial()||"/"!==o&&"\\"!==o){if("/"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,c=wg;continue}c=hg}else c=lg;break;case fg:if(c=lg,"/"!==o||"/"!==wd(l,f+1))continue;f++;break;case lg:if("/"!==o&&"\\"!==o){c=hg;continue}break;case hg:if("@"===o){h&&(l="%40"+l),h=!0,i=Wn(l);for(var d=0;d65535)return Ud;s.port=s.isSpecial()&&m===Zd[s.scheme]?null:m,l=""}if(e)return;c=bg;continue}return Ud}l+=o;break;case gg:if(s.scheme="file","/"===o||"\\"===o)c=yg;else{if(!r||"file"!==r.scheme){c=wg;continue}switch(o){case Wv:s.host=r.host,s.path=vo(r.path),s.query=r.query;break;case"?":s.host=r.host,s.path=vo(r.path),s.query="",c=Eg;break;case"#":s.host=r.host,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og;break;default:eg(Ed(vo(n,f),""))||(s.host=r.host,s.path=vo(r.path),s.shortenPath()),c=wg;continue}}break;case yg:if("/"===o||"\\"===o){c=mg;break}r&&"file"===r.scheme&&!eg(Ed(vo(n,f),""))&&(tg(r.path[0],!0)?Rd(s.path,r.path[0]):s.host=r.host),c=wg;continue;case mg:if(o===Wv||"/"===o||"\\"===o||"?"===o||"#"===o){if(!e&&tg(l))c=wg;else if(""===l){if(s.host="",e)return;c=bg}else{if(a=s.parseHost(l))return a;if("localhost"===s.host&&(s.host=""),e)return;l="",c=bg}continue}l+=o;break;case bg:if(s.isSpecial()){if(c=wg,"/"!==o&&"\\"!==o)continue}else if(e||"?"!==o)if(e||"#"!==o){if(o!==Wv&&(c=wg,"/"!==o))continue}else s.fragment="",c=Og;else s.query="",c=Eg;break;case wg:if(o===Wv||"/"===o||"\\"===o&&s.isSpecial()||!e&&("?"===o||"#"===o)){if(".."===(u=Id(u=l))||"%2e."===u||".%2e"===u||"%2e%2e"===u?(s.shortenPath(),"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,"")):rg(l)?"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,""):("file"===s.scheme&&!s.path.length&&tg(l)&&(s.host&&(s.host=""),l=wd(l,0)+":"),Rd(s.path,l)),l="","file"===s.scheme&&(o===Wv||"?"===o||"#"===o))for(;s.path.length>1&&""===s.path[0];)Ad(s.path);"?"===o?(s.query="",c=Eg):"#"===o&&(s.fragment="",c=Og)}else l+=Qd(o,Xd);break;case Sg:"?"===o?(s.query="",c=Eg):"#"===o?(s.fragment="",c=Og):o!==Wv&&(s.path[0]+=Qd(o,Vd));break;case Eg:e||"#"!==o?o!==Wv&&("'"===o&&s.isSpecial()?s.query+="%27":s.query+="#"===o?"%23":Qd(o,Vd)):(s.fragment="",c=Og);break;case Og:o!==Wv&&(s.fragment+=Qd(o,Yd))}f++}},parseHost:function(t){var e,r,n;if("["===wd(t,0)){if("]"!==wd(t,t.length-1))return Ld;if(e=function(t){var e,r,n,o,i,a,u,s=[0,0,0,0,0,0,0,0],c=0,f=null,l=0,h=function(){return wd(t,l)};if(":"===h()){if(":"!==wd(t,1))return;l+=2,f=++c}for(;h();){if(8===c)return;if(":"!==h()){for(e=r=0;r<4&&Sd(zd,h());)e=16*e+yd(h(),16),l++,r++;if("."===h()){if(0===r)return;if(l-=r,c>6)return;for(n=0;h();){if(o=null,n>0){if(!("."===h()&&n<4))return;l++}if(!Sd(_d,h()))return;for(;Sd(_d,h());){if(i=yd(h(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;l++}s[c]=256*s[c]+o,2!=++n&&4!==n||c++}if(4!==n)return;break}if(":"===h()){if(l++,!h())return}else if(h())return;s[c++]=e}else{if(null!==f)return;l++,f=++c}}if(null!==f)for(a=c-f,c=7;0!==c&&a>0;)u=s[c],s[c--]=s[f+a-1],s[f+--a]=u;else if(8!==c)return;return s}(kd(t,1,-1)),!e)return Ld;this.host=e}else if(this.isSpecial()){if(t=function(t){var e,r,n=[],o=id(od(ad(t),Yv,"."),".");for(e=0;e4)return t;for(r=[],n=0;n1&&"0"===wd(o,0)&&(i=Sd(Fd,o)?16:8,o=kd(o,8===i?1:2)),""===o)a=0;else{if(!Sd(10===i?Dd:8===i?Bd:zd,o))return t;a=yd(o,i)}Rd(r,a)}for(n=0;n=bd(256,5-e))return null}else if(a>255)return null;for(u=xd(r),n=0;n1?arguments[1]:void 0,n=ld(e,new xg(t,!1,r));u||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},Pg=Rg.prototype,Ag=function(t,e){return{get:function(){return hd(this)[t]()},set:e&&function(t){return hd(this)[e](t)},configurable:!0,enumerable:!0}};if(u&&(so(Pg,"href",Ag("serialize","setHref")),so(Pg,"origin",Ag("getOrigin")),so(Pg,"protocol",Ag("getProtocol","setProtocol")),so(Pg,"username",Ag("getUsername","setUsername")),so(Pg,"password",Ag("getPassword","setPassword")),so(Pg,"host",Ag("getHost","setHost")),so(Pg,"hostname",Ag("getHostname","setHostname")),so(Pg,"port",Ag("getPort","setPort")),so(Pg,"pathname",Ag("getPathname","setPathname")),so(Pg,"search",Ag("getSearch","setSearch")),so(Pg,"searchParams",Ag("getSearchParams")),so(Pg,"hash",Ag("getHash","setHash"))),ie(Pg,"toJSON",function(){return hd(this).serialize()},{enumerable:!0}),ie(Pg,"toString",function(){return hd(this).serialize()},{enumerable:!0}),dd){var jg=dd.createObjectURL,kg=dd.revokeObjectURL;jg&&ie(Rg,"createObjectURL",ar(jg,dd)),kg&&ie(Rg,"revokeObjectURL",ar(kg,dd))}an(Rg,"URL"),Ce({global:!0,constructor:!0,forced:!Mp,sham:!u},{URL:Rg});var Ig=L("URL"),Tg=Mp&&a(function(){Ig.canParse()}),Mg=a(function(){return 1!==Ig.canParse.length});Ce({target:"URL",stat:!0,forced:!Tg||Mg},{canParse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return!!new Ig(r,n)}catch(t){return!1}}});var Lg=L("URL");Ce({target:"URL",stat:!0,forced:!Mp},{parse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return new Lg(r,n)}catch(t){return null}}}),Ce({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return f(URL.prototype.toString,this)}});var Ug=WeakMap.prototype,Ng={WeakMap:WeakMap,set:b(Ug.set),get:b(Ug.get),has:b(Ug.has),remove:b(Ug.delete)},Cg=Ng.has,_g=function(t){return Cg(t),t},Fg=Ng.get,Bg=Ng.has,Dg=Ng.set;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{emplace:function(t,e){var r,n,o=_g(this);return Bg(o,t)?(r=Fg(o,t),"update"in e&&(r=e.update(r,t,o),Dg(o,t,r)),r):(n=e.insert(t,o),Dg(o,t,n),n)}}),Ce({target:"WeakMap",stat:!0,forced:!0},{from:ei(Ng.WeakMap,Ng.set,!0)}),Ce({target:"WeakMap",stat:!0,forced:!0},{of:ri(Ng.WeakMap,Ng.set,!0)});var zg=Ng.remove;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=_g(this),r=!0,n=0,o=arguments.length;n2&&(n=r,M(o=arguments[2])&&"cause"in o&&_t(n,"cause",o.cause));var s=[];return Ao(t,ny,{that:s}),_t(r,"errors",s),r};dn?dn(oy,ry):Ae(oy,ry,{name:!0});var iy=oy.prototype=Ve(ry.prototype,{constructor:d(1,oy),message:d(1,""),name:d(1,"AggregateError")});Ce({global:!0,constructor:!0,arity:2},{AggregateError:oy});var ay,uy,sy,cy,fy=function(t){return _.slice(0,t.length)===t},ly=fy("Bun/")?"BUN":fy("Cloudflare-Workers")?"CLOUDFLARE":fy("Deno/")?"DENO":fy("Node.js/")?"NODE":i.Bun&&"string"==typeof Bun.version?"BUN":i.Deno&&"object"==typeof Deno.version?"DENO":"process"===E(i.process)?"NODE":i.window&&i.document?"BROWSER":"REST",hy="NODE"===ly,py=/(?:ipad|iphone|ipod).*applewebkit/i.test(_),vy=i.setImmediate,dy=i.clearImmediate,gy=i.process,yy=i.Dispatch,my=i.Function,by=i.MessageChannel,wy=i.String,Sy=0,Ey={},Oy="onreadystatechange";a(function(){ay=i.location});var xy=function(t){if(ut(Ey,t)){var e=Ey[t];delete Ey[t],e()}},Ry=function(t){return function(){xy(t)}},Py=function(t){xy(t.data)},Ay=function(t){i.postMessage(wy(t),ay.protocol+"//"+ay.host)};vy&&dy||(vy=function(t){Up(arguments.length,1);var e=T(t)?t:my(t),r=vo(arguments,1);return Ey[++Sy]=function(){Ra(e,void 0,r)},uy(Sy),Sy},dy=function(t){delete Ey[t]},hy?uy=function(t){gy.nextTick(Ry(t))}:yy&&yy.now?uy=function(t){yy.now(Ry(t))}:by&&!py?(cy=(sy=new by).port2,sy.port1.onmessage=Py,uy=ar(cy.postMessage,cy)):i.addEventListener&&T(i.postMessage)&&!i.importScripts&&ay&&"file:"!==ay.protocol&&!a(Ay)?(uy=Ay,i.addEventListener("message",Py,!1)):uy=Oy in Et("script")?function(t){De.appendChild(Et("script"))[Oy]=function(){De.removeChild(this),xy(t)}}:function(t){setTimeout(Ry(t),0)});var jy={set:vy,clear:dy},ky=function(){this.head=null,this.tail=null};ky.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}};var Iy,Ty,My,Ly,Uy,Ny=ky,Cy=/ipad|iphone|ipod/i.test(_)&&"undefined"!=typeof Pebble,_y=/web0s(?!.*chrome)/i.test(_),Fy=jy.set,By=i.MutationObserver||i.WebKitMutationObserver,Dy=i.document,zy=i.process,Wy=i.Promise,qy=Ip("queueMicrotask");if(!qy){var Hy=new Ny,$y=function(){var t,e;for(hy&&(t=zy.domain)&&t.exit();e=Hy.get();)try{e()}catch(t){throw Hy.head&&Iy(),t}t&&t.enter()};py||hy||_y||!By||!Dy?!Cy&&Wy&&Wy.resolve?((Ly=Wy.resolve(void 0)).constructor=Wy,Uy=ar(Ly.then,Ly),Iy=function(){Uy($y)}):hy?Iy=function(){zy.nextTick($y)}:(Fy=ar(Fy,i),Iy=function(){Fy($y)}):(Ty=!0,My=Dy.createTextNode(""),new By($y).observe(My,{characterData:!0}),Iy=function(){My.data=Ty=!Ty}),qy=function(t){Hy.head||Iy(),Hy.add(t)}}var Ky,Gy,Vy,Yy=qy,Xy=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Jy=i.Promise,Qy=dt("species"),Zy=!1,tm=T(i.PromiseRejectionEvent),em=Ue("Promise",function(){var t=Kt(Jy),e=t!==String(Jy);if(!e&&66===W)return!0;if(!W||W<51||!/native code/.test(t)){var r=new Jy(function(t){t(1)}),n=function(t){t(function(){},function(){})};if((r.constructor={})[Qy]=n,!(Zy=r.then(function(){})instanceof n))return!0}return!(e||"BROWSER"!==ly&&"DENO"!==ly||tm)}),rm={CONSTRUCTOR:em,REJECTION_EVENT:tm,SUBCLASSING:Zy},nm=TypeError,om=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw new nm("Bad Promise constructor");e=t,r=n}),this.resolve=J(e),this.reject=J(r)},im={f:function(t){return new om(t)}},am=jy.set,um="Promise",sm=rm.CONSTRUCTOR,cm=rm.REJECTION_EVENT,fm=rm.SUBCLASSING,lm=ne.getterFor(um),hm=ne.set,pm=Jy&&Jy.prototype,vm=Jy,dm=pm,gm=i.TypeError,ym=i.document,mm=i.process,bm=im.f,wm=bm,Sm=!!(ym&&ym.createEvent&&i.dispatchEvent),Em="unhandledrejection",Om=function(t){var e;return!(!M(t)||!T(e=t.then))&&e},xm=function(t,e){var r,n,o,i=e.value,a=1===e.state,u=a?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(a||(2===e.rejection&&km(e),e.rejection=1),!0===u?r=i:(l&&l.enter(),r=u(i),l&&(l.exit(),o=!0)),r===t.promise?c(new gm("Promise-chain cycle")):(n=Om(r))?f(n,r,s,c):s(r)):c(i)}catch(t){l&&!o&&l.exit(),c(t)}},Rm=function(t,e){t.notified||(t.notified=!0,Yy(function(){for(var r,n=t.reactions;r=n.get();)xm(r,t);t.notified=!1,e&&!t.rejection&&Am(t)}))},Pm=function(t,e,r){var n,o;Sm?((n=ym.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),i.dispatchEvent(n)):n={promise:e,reason:r},!cm&&(o=i["on"+t])?o(n):t===Em&&function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}("Unhandled promise rejection",r)},Am=function(t){f(am,i,function(){var e,r=t.facade,n=t.value;if(jm(t)&&(e=Xy(function(){hy?mm.emit("unhandledRejection",n,r):Pm(Em,r,n)}),t.rejection=hy||jm(t)?2:1,e.error))throw e.value})},jm=function(t){return 1!==t.rejection&&!t.parent},km=function(t){f(am,i,function(){var e=t.facade;hy?mm.emit("rejectionHandled",e):Pm("rejectionhandled",e,t.value)})},Im=function(t,e,r){return function(n){t(e,n,r)}},Tm=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,Rm(t,!0))},Mm=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new gm("Promise can't be resolved itself");var n=Om(e);n?Yy(function(){var r={done:!1};try{f(n,e,Im(Mm,r,t),Im(Tm,r,t))}catch(e){Tm(r,e,t)}}):(t.value=e,t.state=1,Rm(t,!1))}catch(e){Tm({done:!1},e,t)}}};if(sm&&(vm=function(t){ko(this,dm),J(t),f(Ky,this);var e=lm(this);try{t(Im(Mm,e),Im(Tm,e))}catch(t){Tm(e,t)}},(Ky=function(t){hm(this,{type:um,done:!1,notified:!1,parent:!1,reactions:new Ny,rejection:!1,state:0,value:null})}).prototype=ie(dm=vm.prototype,"then",function(t,e){var r=lm(this),n=bm(Cc(this,vm));return r.parent=!0,n.ok=!T(t)||t,n.fail=T(e)&&e,n.domain=hy?mm.domain:void 0,0===r.state?r.reactions.add(n):Yy(function(){xm(n,r)}),n.promise}),Gy=function(){var t=new Ky,e=lm(t);this.promise=t,this.resolve=Im(Mm,e),this.reject=Im(Tm,e)},im.f=bm=function(t){return t===vm||void 0===t?new Gy(t):wm(t)},T(Jy)&&pm!==Object.prototype)){Vy=pm.then,fm||ie(pm,"then",function(t,e){var r=this;return new vm(function(t,e){f(Vy,r,t,e)}).then(t,e)},{unsafe:!0});try{delete pm.constructor}catch(t){}dn&&dn(pm,dm)}Ce({global:!0,constructor:!0,wrap:!0,forced:sm},{Promise:vm}),an(vm,um,!1),Uo(um);var Lm=rm.CONSTRUCTOR||!Gn(function(t){Jy.all(t).then(void 0,function(){})});Ce({target:"Promise",stat:!0,forced:Lm},{all:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),i=[],a=0,u=1;Ao(t,function(t){var s=a++,c=!1;u++,f(r,e,t).then(function(t){c||(c=!0,i[s]=t,--u||n(i))},o)}),--u||n(i)});return i.error&&o(i.value),r.promise}});var Um=Jy&&Jy.prototype;if(Ce({target:"Promise",proto:!0,forced:rm.CONSTRUCTOR,real:!0},{catch:function(t){return this.then(void 0,t)}}),T(Jy)){var Nm=L("Promise").prototype.catch;Um.catch!==Nm&&ie(Um,"catch",Nm,{unsafe:!0})}Ce({target:"Promise",stat:!0,forced:Lm},{race:function(t){var e=this,r=im.f(e),n=r.reject,o=Xy(function(){var o=J(e.resolve);Ao(t,function(t){f(o,e,t).then(r.resolve,n)})});return o.error&&n(o.value),r.promise}}),Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{reject:function(t){var e=im.f(this);return(0,e.reject)(t),e.promise}});var Cm=function(t,e){if(kt(t),M(e)&&e.constructor===t)return e;var r=im.f(t);return(0,r.resolve)(e),r.promise};Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{resolve:function(t){return Cm(this,t)}}),Ce({target:"Promise",stat:!0,forced:Lm},{allSettled:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),o=[],i=0,a=1;Ao(t,function(t){var u=i++,s=!1;a++,f(r,e,t).then(function(t){s||(s=!0,o[u]={status:"fulfilled",value:t},--a||n(o))},function(t){s||(s=!0,o[u]={status:"rejected",reason:t},--a||n(o))})}),--a||n(o)});return i.error&&o(i.value),r.promise}});var _m="No one promise resolved";Ce({target:"Promise",stat:!0,forced:Lm},{any:function(t){var e=this,r=L("AggregateError"),n=im.f(e),o=n.resolve,i=n.reject,a=Xy(function(){var n=J(e.resolve),a=[],u=0,s=1,c=!1;Ao(t,function(t){var l=u++,h=!1;s++,f(n,e,t).then(function(t){h||c||(c=!0,o(t))},function(t){h||c||(h=!0,a[l]=t,--s||i(new r(a,_m)))})}),--s||i(new r(a,_m))});return a.error&&i(a.value),n.promise}}),Ce({target:"Promise",stat:!0},{withResolvers:function(){var t=im.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}});var Fm=Jy&&Jy.prototype,Bm=!!Jy&&a(function(){Fm.finally.call({then:function(){}},function(){})});if(Ce({target:"Promise",proto:!0,real:!0,forced:Bm},{finally:function(t){var e=Cc(this,L("Promise")),r=T(t);return this.then(r?function(r){return Cm(e,t()).then(function(){return r})}:t,r?function(r){return Cm(e,t()).then(function(){throw r})}:t)}}),T(Jy)){var Dm=L("Promise").prototype.finally;Fm.finally!==Dm&&ie(Fm,"finally",Dm,{unsafe:!0})}var zm=i.Promise,Wm=!1,qm=!zm||!zm.try||Xy(function(){zm.try(function(t){Wm=8===t},8)}).error||!Wm;Ce({target:"Promise",stat:!0,forced:qm},{try:function(t){var e=arguments.length>1?vo(arguments,1):[],r=im.f(this),n=Xy(function(){return Ra(J(t),void 0,e)});return(n.error?r.reject:r.resolve)(n.value),r.promise}}),Ze("Promise","finally");var Hm="URLSearchParams"in self,$m="Symbol"in self&&"iterator"in Symbol,Km="FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),Gm="FormData"in self,Vm="ArrayBuffer"in self;if(Vm)var Ym=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],Xm=ArrayBuffer.isView||function(t){return t&&Ym.indexOf(Object.prototype.toString.call(t))>-1};function Jm(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function Qm(t){return"string"!=typeof t&&(t=String(t)),t}function Zm(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return $m&&(e[Symbol.iterator]=function(){return e}),e}function tb(t){this.map={},t instanceof tb?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function eb(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function rb(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function nb(t){var e=new FileReader,r=rb(e);return e.readAsArrayBuffer(t),r}function ob(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function ib(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:Km&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:Gm&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:Hm&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():Vm&&Km&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=ob(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):Vm&&(ArrayBuffer.prototype.isPrototypeOf(t)||Xm(t))?this._bodyArrayBuffer=ob(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):Hm&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},Km&&(this.blob=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?eb(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(nb)}),this.text=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=rb(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function sb(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function cb(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new tb(e.headers),this.url=e.url||"",this._initBody(t)}ub.prototype.clone=function(){return new ub(this,{body:this._bodyInit})},ib.call(ub.prototype),ib.call(cb.prototype),cb.prototype.clone=function(){return new cb(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new tb(this.headers),url:this.url})},cb.error=function(){var t=new cb(null,{status:0,statusText:""});return t.type="error",t};var fb=[301,302,303,307,308];cb.redirect=function(t,e){if(-1===fb.indexOf(e))throw new RangeError("Invalid status code");return new cb(null,{status:e,headers:{location:t}})};var lb=self.DOMException;try{new lb}catch(t){(lb=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),lb.prototype.constructor=lb}function hb(t,e){return new Promise(function(r,n){var o=new ub(t,e);if(o.signal&&o.signal.aborted)return n(new lb("Aborted","AbortError"));var i=new XMLHttpRequest;function a(){i.abort()}i.onload=function(){var t,e,n={status:i.status,statusText:i.statusText,headers:(t=i.getAllResponseHeaders()||"",e=new tb,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e)};n.url="responseURL"in i?i.responseURL:n.headers.get("X-Request-URL"),r(new cb("response"in i?i.response:i.responseText,n))},i.onerror=function(){n(new TypeError("Network request failed"))},i.ontimeout=function(){n(new TypeError("Network request failed"))},i.onabort=function(){n(new lb("Aborted","AbortError"))},i.open(o.method,o.url,!0),"include"===o.credentials?i.withCredentials=!0:"omit"===o.credentials&&(i.withCredentials=!1),"responseType"in i&&Km&&(i.responseType="blob"),o.headers.forEach(function(t,e){i.setRequestHeader(e,t)}),o.signal&&(o.signal.addEventListener("abort",a),i.onreadystatechange=function(){4===i.readyState&&o.signal.removeEventListener("abort",a)}),i.send(void 0===o._bodyInit?null:o._bodyInit)})}hb.polyfill=!0,self.fetch||(self.fetch=hb,self.Headers=tb,self.Request=ub,self.Response=cb);var pb=Object.getOwnPropertySymbols,vb=Object.prototype.hasOwnProperty,db=Object.prototype.propertyIsEnumerable,gb=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(t){n[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,n,o=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),i=1;i{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o](a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var u=1/0,i=0;i=a)&&Object.keys(r.O).every(e=>r.O[e](o[s]))?o.splice(s--,1):(c=!1,a{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>534===e?"static/chunks/534-bbb1ba4032b129a8.js":920===e?"static/chunks/920-aed94374b29ba4e2.js":"static/chunks/"+e+"."+({323:"3d40b3f10e4f6645",477:"c67b77b0908a8d3c",728:"0a8f45173f3a857c",886:"9b81414a450ef20f",996:"84f6c850bac17e1e"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var u,c,s=document.getElementsByTagName("script"),d=0;d{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),c&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/docs-site/_next/",(()=>{var e={68:0,605:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^6(05|8)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),u=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",u.name="ChunkLoadError",u.type=a,u.request=i,n[1](u)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,u,c]=o,s=0;if(i.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(c)var d=c(r)}for(t&&t(o);sli):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:500}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:var(--text-3xl);margin-top:0;margin-bottom:.888889em;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:600;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.1875em;padding-inline-end:.375em;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border:1px solid;border-color:var(--color-fd-border);background:var(--color-fd-muted);color:var(--tw-prose-code);border-radius:5px;padding:3px;font-size:13px;font-weight:400}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:var(--text-2xl)}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;border-collapse:separate;border-spacing:0;background:var(--color-fd-card);border-radius:var(--radius-lg);border:1px solid var(--color-fd-border);width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429;overflow:hidden}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose :where(a:not([data-card])):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-underline-offset:3.5px;text-decoration:underline;-webkit-text-decoration-color:var(--color-fd-primary);text-decoration-color:var(--color-fd-primary);font-weight:500;text-decoration-thickness:1.5px;transition:opacity .2s}.prose :where(a:not([data-card]):hover):not(:where([class~=not-prose],[class~=not-prose] *)){opacity:.8}@supports (color:color-mix(in lab,red,red)){.prose{--tw-prose-body:color-mix(in oklab,var(--color-fd-foreground)90%,transparent);--tw-prose-kbd-shadows:color-mix(in oklab,var(--color-fd-primary)50%,transparent)}}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose :where(th):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start;padding:calc(var(--spacing)*2.5);border-inline-start:1px solid var(--color-fd-border);background:var(--color-fd-muted)}.prose :where(th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start:none}.prose :where(th:not(tr:last-child *),td:not(tr:last-child *)):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom:1px solid var(--color-fd-border)}.prose :where(td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start;border-inline-start:1px solid var(--color-fd-border);padding:calc(var(--spacing)*2.5)}.prose :where(td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start:none}.prose :where(tfoot th,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(thead th,thead td):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose-no-margin>:first-child{margin-top:0}.prose-no-margin>:last-child{margin-bottom:0}.mt-\(--fd-nav-height\){margin-top:var(--fd-nav-height)}.mt-\(--fd-top\){margin-top:var(--fd-top)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-auto{margin-top:auto}.-mb-1{margin-bottom:calc(var(--spacing)*-1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-auto{margin-bottom:auto}.box-content{box-sizing:content-box}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-4\.5{width:calc(var(--spacing)*4.5);height:calc(var(--spacing)*4.5)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6\.5{width:calc(var(--spacing)*6.5);height:calc(var(--spacing)*6.5)}.size-full{width:100%;height:100%}.h-\(--fd-height\){height:var(--fd-height)}.h-\(--fd-toc-height\){height:var(--fd-toc-height)}.h-\(--radix-navigation-menu-viewport-height\){height:var(--radix-navigation-menu-viewport-height)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-10{height:calc(var(--spacing)*10)}.h-14{height:calc(var(--spacing)*14)}.h-full{height:100%}.max-h-\[50vh\]{max-height:50vh}.max-h-\[400px\]{max-height:400px}.max-h-\[460px\]{max-height:460px}.max-h-\[600px\]{max-height:600px}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-10{min-height:calc(var(--spacing)*10)}.min-h-screen{min-height:100vh}.w-\(--fd-toc-width\){width:var(--fd-toc-width)}.w-\(--radix-popover-trigger-width\){width:var(--radix-popover-trigger-width)}.w-0{width:calc(var(--spacing)*0)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/4{width:25%}.w-\[30\%\]{width:30%}.w-\[45\%\]{width:45%}.w-\[98vw\]{width:98vw}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[98vw\]{max-width:98vw}.max-w-\[240px\]{max-width:240px}.max-w-\[400px\]{max-width:400px}.max-w-\[860px\]{max-width:860px}.max-w-\[1120px\]{max-width:1120px}.max-w-fd-container{max-width:var(--spacing-fd-container)}.max-w-full{max-width:100%}.max-w-screen-sm{max-width:var(--breakpoint-sm)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[220px\]{min-width:220px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\[top_center\]{transform-origin:top}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1)}.-translate-x-1\/2,.-translate-y-1\/2{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1)}.-translate-y-full{--tw-translate-y:-100%}.-translate-y-full,.translate-y-0\.5{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing)*.5)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-90{rotate:-90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-fd-fade-in{animation:var(--animate-fd-fade-in)}.animate-spin{animation:var(--animate-spin)}.scroll-m-20{scroll-margin:calc(var(--spacing)*20)}.scroll-m-28{scroll-margin:calc(var(--spacing)*28)}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-fd-border>:not(:last-child)){border-color:var(--color-fd-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-fd-foreground\/10{border-color:#0a0a0a1a}@supports (color:color-mix(in lab,red,red)){.border-fd-foreground\/10{border-color:color-mix(in oklab,var(--color-fd-foreground)10%,transparent)}}.border-fd-primary{border-color:var(--color-fd-primary)}.border-transparent{border-color:#0000}.border-s-blue-500\/50{border-inline-start-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.border-s-blue-500\/50{border-inline-start-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.border-s-orange-500\/50{border-inline-start-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.border-s-orange-500\/50{border-inline-start-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.border-s-red-500\/50{border-inline-start-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.border-s-red-500\/50{border-inline-start-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.bg-\(--shiki-light-bg\){background-color:var(--shiki-light-bg)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-fd-accent{background-color:var(--color-fd-accent)}.bg-fd-background{background-color:var(--color-fd-background)}.bg-fd-background\/80{background-color:#f5f5f5cc}@supports (color:color-mix(in lab,red,red)){.bg-fd-background\/80{background-color:color-mix(in oklab,var(--color-fd-background)80%,transparent)}}.bg-fd-border{background-color:var(--color-fd-border)}.bg-fd-card{background-color:var(--color-fd-card)}.bg-fd-foreground\/10{background-color:#0a0a0a1a}@supports (color:color-mix(in lab,red,red)){.bg-fd-foreground\/10{background-color:color-mix(in oklab,var(--color-fd-foreground)10%,transparent)}}.bg-fd-muted{background-color:var(--color-fd-muted)}.bg-fd-popover{background-color:var(--color-fd-popover)}.bg-fd-primary{background-color:var(--color-fd-primary)}.bg-fd-primary\/10{background-color:#1717171a}@supports (color:color-mix(in lab,red,red)){.bg-fd-primary\/10{background-color:color-mix(in oklab,var(--color-fd-primary)10%,transparent)}}.bg-fd-secondary{background-color:var(--color-fd-secondary)}.bg-fd-secondary\/50{background-color:#ededed80}@supports (color:color-mix(in lab,red,red)){.bg-fd-secondary\/50{background-color:color-mix(in oklab,var(--color-fd-secondary)50%,transparent)}}.bg-transparent{background-color:#0000}.\[mask-image\:linear-gradient\(to_bottom\,transparent\,white_16px\,white_calc\(100\%-16px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(#0000,#fff 16px calc(100% - 16px),#0000);mask-image:linear-gradient(#0000,#fff 16px calc(100% - 16px),#0000)}.fill-blue-500{fill:var(--color-blue-500)}.fill-orange-500{fill:var(--color-orange-500)}.fill-red-500{fill:var(--color-red-500)}.stroke-current\/25{stroke:currentColor}@supports (color:color-mix(in lab,red,red)){.stroke-current\/25{stroke:color-mix(in oklab,currentcolor 25%,transparent)}}.stroke-fd-foreground\/10{stroke:#0a0a0a1a}@supports (color:color-mix(in lab,red,red)){.stroke-fd-foreground\/10{stroke:color-mix(in oklab,var(--color-fd-foreground)10%,transparent)}}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-px{padding:1px}.px-\(--fd-layout-offset\){padding-inline:var(--fd-layout-offset)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.ps-2{padding-inline-start:calc(var(--spacing)*2)}.ps-3{padding-inline-start:calc(var(--spacing)*3)}.ps-6{padding-inline-start:calc(var(--spacing)*6)}.ps-8{padding-inline-start:calc(var(--spacing)*8)}.ps-\[calc\(var\(--fd-layout-offset\)\+var\(--fd-sidebar-width\)\)\]{padding-inline-start:calc(var(--fd-layout-offset) + var(--fd-sidebar-width))}.ps-px{padding-inline-start:1px}.pe-\(--fd-layout-offset\){padding-inline-end:var(--fd-layout-offset)}.pe-2{padding-inline-end:calc(var(--spacing)*2)}.pe-4{padding-inline-end:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-12{padding-top:calc(var(--spacing)*12)}.pt-14{padding-top:calc(var(--spacing)*14)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-start{text-align:start}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-nowrap{text-wrap:nowrap}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.whitespace-nowrap{white-space:nowrap}.text-fd-accent-foreground{color:var(--color-fd-accent-foreground)}.text-fd-card{color:var(--color-fd-card)}.text-fd-card-foreground{color:var(--color-fd-card-foreground)}.text-fd-foreground{color:var(--color-fd-foreground)}.text-fd-foreground\/30{color:#0a0a0a4d}@supports (color:color-mix(in lab,red,red)){.text-fd-foreground\/30{color:color-mix(in oklab,var(--color-fd-foreground)30%,transparent)}}.text-fd-foreground\/80{color:#0a0a0acc}@supports (color:color-mix(in lab,red,red)){.text-fd-foreground\/80{color:color-mix(in oklab,var(--color-fd-foreground)80%,transparent)}}.text-fd-muted-foreground{color:var(--color-fd-muted-foreground)}.text-fd-popover-foreground{color:var(--color-fd-popover-foreground)}.text-fd-primary{color:var(--color-fd-primary)}.text-fd-primary-foreground{color:var(--color-fd-primary-foreground)}.text-fd-secondary-foreground{color:var(--color-fd-secondary-foreground)}.text-muted-foreground{color:var(--muted-foreground)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-md{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg))}.backdrop-blur-lg,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md))}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--fd-nav-height\:calc\(var\(--spacing\)\*14\)\]{--fd-nav-height:calc(var(--spacing)*14)}.\[--fd-tocnav-height\:36px\]{--fd-tocnav-height:36px}.running{animation-play-state:running}:is(.\*\:col-start-1>*){grid-column-start:1}:is(.\*\:row-start-1>*){grid-row-start:1}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[state\=open\]\/accordion\:rotate-90:is(:where(.group\/accordion)[data-state=open] *){rotate:90deg}@media (hover:hover){.peer-hover\:opacity-100:is(:where(.peer):hover~*){opacity:1}}.placeholder\:text-fd-muted-foreground::placeholder{color:var(--color-fd-muted-foreground)}.first\:pt-0:first-child{padding-top:calc(var(--spacing)*0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}.empty\:hidden:empty{display:none}@media (hover:hover){.hover\:bg-fd-accent:hover{background-color:var(--color-fd-accent)}.hover\:bg-fd-accent\/50:hover{background-color:#e6e6e680}@supports (color:color-mix(in lab,red,red)){.hover\:bg-fd-accent\/50:hover{background-color:color-mix(in oklab,var(--color-fd-accent)50%,transparent)}}.hover\:bg-fd-accent\/80:hover{background-color:#e6e6e6cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-fd-accent\/80:hover{background-color:color-mix(in oklab,var(--color-fd-accent)80%,transparent)}}.hover\:bg-fd-primary\/80:hover{background-color:#171717cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-fd-primary\/80:hover{background-color:color-mix(in oklab,var(--color-fd-primary)80%,transparent)}}.hover\:text-fd-accent-foreground:hover{color:var(--color-fd-accent-foreground)}.hover\:text-fd-accent-foreground\/80:hover{color:#171717cc}@supports (color:color-mix(in lab,red,red)){.hover\:text-fd-accent-foreground\/80:hover{color:color-mix(in oklab,var(--color-fd-accent-foreground)80%,transparent)}}.hover\:text-fd-popover-foreground\/50:hover{color:#27272780}@supports (color:color-mix(in lab,red,red)){.hover\:text-fd-popover-foreground\/50:hover{color:color-mix(in oklab,var(--color-fd-popover-foreground)50%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:transition-none:hover{transition-property:none}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-focus-visible\:bg-fd-accent:has(:focus-visible){background-color:var(--color-fd-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-fd-primary[data-active=true]{color:var(--color-fd-primary)}.data-\[collapsed\=false\]\:hidden[data-collapsed=false]{display:none}.data-\[motion\=from-end\]\:animate-fd-enterFromRight[data-motion=from-end]{animation:var(--animate-fd-enterFromRight)}.data-\[motion\=from-start\]\:animate-fd-enterFromLeft[data-motion=from-start]{animation:var(--animate-fd-enterFromLeft)}.data-\[motion\=to-end\]\:animate-fd-exitToRight[data-motion=to-end]{animation:var(--animate-fd-exitToRight)}.data-\[motion\=to-start\]\:animate-fd-exitToLeft[data-motion=to-start]{animation:var(--animate-fd-exitToLeft)}.data-\[state\=active\]\:border-fd-primary[data-state=active]{border-color:var(--color-fd-primary)}.data-\[state\=active\]\:text-fd-primary[data-state=active]{color:var(--color-fd-primary)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-duration,.2s)ease-out}.data-\[state\=closed\]\:animate-fd-accordion-up[data-state=closed]{animation:var(--animate-fd-accordion-up)}.data-\[state\=closed\]\:animate-fd-collapsible-up[data-state=closed]{animation:var(--animate-fd-collapsible-up)}.data-\[state\=closed\]\:animate-fd-dialog-out[data-state=closed]{animation:var(--animate-fd-dialog-out)}.data-\[state\=closed\]\:animate-fd-fade-out[data-state=closed]{animation:var(--animate-fd-fade-out)}.data-\[state\=closed\]\:animate-fd-nav-menu-out[data-state=closed]{animation:var(--animate-fd-nav-menu-out)}.data-\[state\=closed\]\:animate-fd-popover-out[data-state=closed]{animation:var(--animate-fd-popover-out)}.data-\[state\=hidden\]\:animate-fd-fade-out[data-state=hidden]{animation:var(--animate-fd-fade-out)}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-duration,.2s)ease-out}.data-\[state\=open\]\:animate-fd-accordion-down[data-state=open]{animation:var(--animate-fd-accordion-down)}.data-\[state\=open\]\:animate-fd-collapsible-down[data-state=open]{animation:var(--animate-fd-collapsible-down)}.data-\[state\=open\]\:animate-fd-dialog-in[data-state=open]{animation:var(--animate-fd-dialog-in)}.data-\[state\=open\]\:animate-fd-fade-in[data-state=open]{animation:var(--animate-fd-fade-in)}.data-\[state\=open\]\:animate-fd-nav-menu-in[data-state=open]{animation:var(--animate-fd-nav-menu-in)}.data-\[state\=open\]\:animate-fd-popover-in[data-state=open]{animation:var(--animate-fd-popover-in)}.data-\[state\=open\]\:bg-fd-accent\/50[data-state=open]{background-color:#e6e6e680}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-fd-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--color-fd-accent)50%,transparent)}}@media not all and (min-width:80rem){.max-xl\:end-4{inset-inline-end:calc(var(--spacing)*4)}.max-xl\:hidden{display:none}}@media not all and (min-width:64rem){.max-lg\:hidden{display:none}}@media not all and (min-width:48rem){.max-md\:inset-x-0{inset-inline:calc(var(--spacing)*0)}.max-md\:bottom-0{bottom:calc(var(--spacing)*0)}.max-md\:hidden{display:none}.max-md\:bg-fd-background\/80{background-color:#f5f5f5cc}@supports (color:color-mix(in lab,red,red)){.max-md\:bg-fd-background\/80{background-color:color-mix(in oklab,var(--color-fd-background)80%,transparent)}}.max-md\:text-\[15px\]{font-size:15px}.max-md\:backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.max-md\:data-\[open\=false\]\:invisible[data-open=false]{visibility:hidden}}@media not all and (min-width:40rem){.max-sm\:mt-2{margin-top:calc(var(--spacing)*2)}.max-sm\:hidden{display:none}}@media (min-width:40rem){.sm\:hidden{display:none}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}}@media (min-width:48rem){.md\:sticky{position:sticky}.md\:ms-auto{margin-inline-start:auto}.md\:-me-\(--fd-sidebar-width\){margin-inline-end:calc(var(--fd-sidebar-width)*-1)}.md\:hidden{display:none}.md\:h-\(--fd-sidebar-height\){height:var(--fd-sidebar-height)}.md\:w-\(--fd-sidebar-width\){width:var(--fd-sidebar-width)}.md\:-translate-x-\(--fd-sidebar-offset\){--tw-translate-x:calc(var(--fd-sidebar-offset)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:py-1\.5{padding-block:calc(var(--spacing)*1.5)}.md\:ps-\(--fd-layout-offset\){padding-inline-start:var(--fd-layout-offset)}.md\:pt-0{padding-top:calc(var(--spacing)*0)}.md\:pt-2\.5{padding-top:calc(var(--spacing)*2.5)}.md\:pt-3\.5{padding-top:calc(var(--spacing)*3.5)}.md\:pt-4{padding-top:calc(var(--spacing)*4)}.md\:pt-12{padding-top:calc(var(--spacing)*12)}.md\:opacity-0{opacity:0}.md\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.md\:\[--fd-nav-height\:0px\]{--fd-nav-height:0px}.md\:\[--fd-sidebar-width\:268px\]{--fd-sidebar-width:268px}.md\:\[--fd-sidebar-width\:286px\]{--fd-sidebar-width:286px}}@media (min-width:64rem){.lg\:mt-2{margin-top:calc(var(--spacing)*2)}.lg\:hidden{display:none}.lg\:h-12{height:calc(var(--spacing)*12)}.lg\:w-\[calc\(100\%-1rem\)\]{width:calc(100% - 1rem)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:rounded-2xl{border-radius:var(--radius-2xl)}.lg\:border{border-style:var(--tw-border-style);border-width:1px}.lg\:\[--fd-nav-height\:calc\(var\(--spacing\)\*24\)\]{--fd-nav-height:calc(var(--spacing)*24)}.lg\:\[--fd-sidebar-width\:286px\]{--fd-sidebar-width:286px}}@media (min-width:80rem){.xl\:start-4{inset-inline-start:calc(var(--spacing)*4)}.xl\:mx-auto{margin-inline:auto}.xl\:hidden{display:none}.xl\:px-12{padding-inline:calc(var(--spacing)*12)}.xl\:\[--fd-toc-width\:286px\]{--fd-toc-width:286px}.xl\:\[--fd-tocnav-height\:0px\]{--fd-tocnav-height:0px}}@container not (min-width:32rem){.\@max-lg\:col-span-full{grid-column:1/-1}}.rtl\:-scale-x-100:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-scale-x:calc(100%*-1);scale:var(--tw-scale-x)var(--tw-scale-y)}.rtl\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *){rotate:180deg}@media (min-width:48rem){.rtl\:md\:translate-x-\(--fd-sidebar-offset\):where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:var(--fd-sidebar-offset);translate:var(--tw-translate-x)var(--tw-translate-y)}}.dark\:bg-\(--shiki-dark-bg\):is(.dark *){background-color:var(--shiki-dark-bg)}.\[\&_svg\]\:\!size-4\.5 svg{width:calc(var(--spacing)*4.5)!important;height:calc(var(--spacing)*4.5)!important}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:size-4\.5 svg{width:calc(var(--spacing)*4.5);height:calc(var(--spacing)*4.5)}.\[\&_svg\]\:size-5 svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}@media (min-width:48rem){.md\:\[\&_svg\]\:size-4\.5 svg{width:calc(var(--spacing)*4.5);height:calc(var(--spacing)*4.5)}}.\[\&\>figure\:only-child\]\:-m-4>figure:only-child{margin:calc(var(--spacing)*-4)}.\[\&\>figure\:only-child\]\:rounded-none>figure:only-child{border-radius:0}.\[\&\>figure\:only-child\]\:border-none>figure:only-child{--tw-border-style:none;border-style:none}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}@media (hover:hover){.\[\@media\(hover\:hover\)\]\:opacity-0{opacity:0}}}.dark{--color-fd-background:#121212;--color-fd-foreground:#ebebeb;--color-fd-muted:#212121;--color-fd-muted-foreground:#9b9b9b;--color-fd-popover:#191919;--color-fd-popover-foreground:#e0e0e0;--color-fd-card:#191919;--color-fd-card-foreground:#fafafa;--color-fd-border:#242424;--color-fd-primary:#fafafa;--color-fd-primary-foreground:#171717;--color-fd-secondary:#212121;--color-fd-secondary-foreground:#fafafa;--color-fd-accent:#2b2b2b;--color-fd-accent-foreground:#e6e6e6;--color-fd-ring:#8c8c8c}.dark #nd-sidebar{--color-fd-muted:#292929;--color-fd-secondary:#2e2e2e;--color-fd-muted-foreground:#b8b8b8}.shiki code span{color:var(--shiki-light)}.dark .shiki code span{color:var(--shiki-dark)}.fd-codeblock pre>*{font-size:13px;display:grid}.shiki code .diff.remove{background-color:var(--fd-diff-remove-color);opacity:.7}.shiki code .diff:before{position:absolute;left:6px}.shiki code .diff.remove:before{content:"-";color:var(--fd-diff-remove-symbol-color)}.shiki code .diff.add{background-color:var(--fd-diff-add-color)}.shiki code .diff.add:before{content:"+";color:var(--fd-diff-add-symbol-color)}.shiki code .diff{margin:0 -16px;padding:0 16px;position:relative}.shiki .highlighted{background-color:oklab(20.4627% -3.72529e-8 1.49012e-8/.1);margin:0 -16px;padding:0 16px}@supports (color:color-mix(in lab,red,red)){.shiki .highlighted{background-color:color-mix(in oklab,var(--color-fd-primary)10%,transparent)}}.shiki .highlighted-word{background-color:oklab(20.4627% -3.72529e-8 1.49012e-8/.1);border:1px solid #17171780;border-radius:2px;margin:-1px -3px;padding:1px 2px}@supports (color:color-mix(in lab,red,red)){.shiki .highlighted-word{border:1px solid color-mix(in oklab,var(--color-fd-primary)50%,transparent);background-color:color-mix(in oklab,var(--color-fd-primary)10%,transparent)}}@property --radix-collapsible-content-height{syntax:"";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(1 0 0);--foreground:oklch(.145 0 0);--card:oklch(1 0 0);--card-foreground:oklch(.145 0 0);--popover:oklch(1 0 0);--popover-foreground:oklch(.145 0 0);--primary:oklch(.205 0 0);--primary-foreground:oklch(.985 0 0);--secondary:oklch(.97 0 0);--secondary-foreground:oklch(.205 0 0);--muted:oklch(.97 0 0);--muted-foreground:oklch(.556 0 0);--accent:oklch(.97 0 0);--accent-foreground:oklch(.205 0 0);--destructive:oklch(.577 .245 27.325);--border:oklch(.922 0 0);--input:oklch(.922 0 0);--ring:oklch(.708 0 0);--chart-1:oklch(.646 .222 41.116);--chart-2:oklch(.6 .118 184.704);--chart-3:oklch(.398 .07 227.392);--chart-4:oklch(.828 .189 84.429);--chart-5:oklch(.769 .188 70.08);--sidebar:oklch(.985 0 0);--sidebar-foreground:oklch(.145 0 0);--sidebar-primary:oklch(.205 0 0);--sidebar-primary-foreground:oklch(.985 0 0);--sidebar-accent:oklch(.97 0 0);--sidebar-accent-foreground:oklch(.205 0 0);--sidebar-border:oklch(.922 0 0);--sidebar-ring:oklch(.708 0 0)}.dark{--background:oklch(.145 0 0);--foreground:oklch(.985 0 0);--card:oklch(.205 0 0);--card-foreground:oklch(.985 0 0);--popover:oklch(.205 0 0);--popover-foreground:oklch(.985 0 0);--primary:oklch(.922 0 0);--primary-foreground:oklch(.205 0 0);--secondary:oklch(.269 0 0);--secondary-foreground:oklch(.985 0 0);--muted:oklch(.269 0 0);--muted-foreground:oklch(.708 0 0);--accent:oklch(.269 0 0);--accent-foreground:oklch(.985 0 0);--destructive:oklch(.704 .191 22.216);--border:oklch(1 0 0/10%);--input:oklch(1 0 0/15%);--ring:oklch(.556 0 0);--chart-1:oklch(.488 .243 264.376);--chart-2:oklch(.696 .17 162.48);--chart-3:oklch(.769 .188 70.08);--chart-4:oklch(.627 .265 303.9);--chart-5:oklch(.645 .246 16.439);--sidebar:oklch(.205 0 0);--sidebar-foreground:oklch(.985 0 0);--sidebar-primary:oklch(.488 .243 264.376);--sidebar-primary-foreground:oklch(.985 0 0);--sidebar-accent:oklch(.269 0 0);--sidebar-accent-foreground:oklch(.985 0 0);--sidebar-border:oklch(1 0 0/10%);--sidebar-ring:oklch(.556 0 0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(1turn)}}@keyframes fd-collapsible-down{0%{opacity:0;height:0}to{height:var(--radix-collapsible-content-height)}}@keyframes fd-collapsible-up{0%{height:var(--radix-collapsible-content-height)}to{opacity:0;height:0}}@keyframes fd-accordion-down{0%{opacity:.5;height:0}to{height:var(--radix-accordion-content-height)}}@keyframes fd-accordion-up{0%{height:var(--radix-accordion-content-height)}to{opacity:.5;height:0}}@keyframes fd-dialog-in{0%{opacity:0;transform:scale(.95)}to{transform:scale(1)}}@keyframes fd-dialog-out{0%{transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes fd-popover-in{0%{opacity:0;transform:scale(.98)translateY(-4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes fd-popover-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes fd-fade-in{0%{opacity:0}to{opacity:1}}@keyframes fd-fade-out{0%{opacity:1}to{opacity:0}}@keyframes fd-enterFromRight{0%{opacity:0;transform:translate(200px)}to{opacity:1;transform:translate(0)}}@keyframes fd-enterFromLeft{0%{opacity:0;transform:translate(-200px)}to{opacity:1;transform:translate(0)}}@keyframes fd-exitToRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(200px)}}@keyframes fd-exitToLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-200px)}}@keyframes fd-nav-menu-in{0%{opacity:0;height:0}to{opacity:1;height:var(--radix-navigation-menu-viewport-height)}}@keyframes fd-nav-menu-out{0%{opacity:1;height:var(--radix-navigation-menu-viewport-height)}to{opacity:0;height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,auto))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,auto))}to{height:0}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/55c55f0601d81cf3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/26a46d62cd723877-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/97e0cb1ae144a2a9-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/581909926a08bbc8-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/6d93bde91c0c2823-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_62dcf0{font-family:Inter,Inter Fallback;font-style:normal} \ No newline at end of file diff --git a/docs/_next/static/media/26a46d62cd723877-s.woff2 b/docs/_next/static/media/26a46d62cd723877-s.woff2 deleted file mode 100644 index 3a27e632eb14fffc6fce03483049986ba13f6802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18820 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
    bye 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

    r#I0D%mIRPP2^9oTU zq-5k2Xi7};%c*5 zNLU1o5fw}S2rE(e&r;GdvT{ZIsnD{bRX|mwjgRvx<50%oba8ca_we*e-0SV*>qkmP zP64K*qNbsx%V>&$ktvfo7S{gZ!_L9U1>w$Yl?TQP=i?U;6ha7#AVvF{2gD^LrKDwK zQD_Vnho@&?WMXDvC9oy1b8vET^YCWtM}EOCASfg(A}aO|yYkbeq-CDzD&%fG-V#o zprXdo(9+Q}FfuW-u(Gk|^$HF-oc%j7$j!qmmybW6H_H)8#;)#4U>df+O4(SaYU(z6rp=C>K zbiLzCFb}P(xU2gqjLH7Z9-C`)<#EgkN3hnnT_!b?wI`F0%Jx#RTSH^28Q4|$7?T$u z)pq9pC2j4${{NdQ&j*C`KMzaVDG8~gu39Smum7`cMoTc%3L&p!EU@ij@~Pudh@^`v zFJcrFkEx=0SM*opXrQ2?*gE4;^phDX1jgZfT4V7a2g~GMLHOPZWftPuemct@87!Oo zZy=`W2jsy!j!we*}}@O@*TumQ^O6XAArUvaaPDzb=WtE`F+UNzhOWTj9&!!{D~ia81nf=Yqce_p;m29mdy#)E zbxDDc8L>Tuz%ay}l1J)kJ6-qUSc$Kh0>P*h3uWkfUGkZwzGX@l_6%znhF~+$w4$i) z`i=_b>5Ayb!QT!;4FYI@MqccIPg+#eJ5VF>lMn?B%D!PTuSex1rn)zBW!z`k(T@Oe9emS`SFv!WeQ?#SH7twiu+9TkEG^GqHg1t={$)0*j;pE%A>0w3YzL(E1h|gERDSN^YLl!`QJ6( zB9f$05=$UCbI8OyL|(V+vFRNZRezJ(Df0n~6D*$3h}-KU(Gy)Vl4K&~Zu>#b$*>Z^ z*Y(>JeO$|j)$1uAfe~MsU_=JEc<%`S)L){KD7|A>Rr47WcBsnVs6KvygLf_j0rig_MI0>Moj-X7%;}=TjhSpt6#l zU`(k=hoYcC*)Q>{LG;{hQy5(UDtJE#M90L0qhrDWm~a3H2b^%h?19Aze;|;BNFliF z0<65ZDE8u<<%=oml4rE^P5&@0Eo0>kSxk!PdeK!@vLccxEm;5%6dg15VC`_zlG+}3 z+6h4J$xc!xx1j(K3L2C`s+~JaxC)Wqiq3JDh~rVtRZ7l@*k`neseG(KsV%t%)TXZb z==VdSqDFz+rf&Q)(VggmQ6Vr46f_VD8WbHn9B{%Vokfo!@*Z>5uYQcuroNnP_oEr* z2foB1vOdJC(Co+=%aG;o_kM;k4TwHRMN=5tV1-S#iy=2Z3UjwjB1aqh01ZXHL@Bk4 zVxLJP0O)^8>`8e80yR2chjyOI%-^k?#NtHja8OH&rcli&U~zW7JNxgYf4Vi@wm;Mu z`}W8IBEb)BCM==1>^Q31n&)na34JWd0NtqEJ0PLW7aCM4Hj;o0tn>yxaqz2eGwV!h zUBS>03yxxU#z8~42wlwV&>p-%Z`*KW)NT9!YeF!TExNtUHDR_vPd`3R6-pHLY)|lY;4ynM!09al0qbLxu8Po=Q02@-d z=s?~<81JgJH}8)Y8hpTyf3Xo#CH+V>;{(gT&F_5gMr2oLIgM;XluhB7QDMknWgUAS zp*VA<_?4mKIp<`4rfE64L~u4nhiM@dRvX7WaOGYIpVS9n7p1T^-QjdSYA8^Vq##K(e!4CJhEt^T5h+cFV1gX2;%!1*x9RI$RCAC74 z!(zX24hEjj0f^QUZAcV?2E;&Z+0&I*APMH^u@NOnp$)296H_{TOp#PC>u zX}t9?HS%tH+_d4xUConi5|UUOpy%%zsJ*!W)!xhJ`!*gq^=(by+C}i(eTE*huk2qh7Bv{pqsxW2u^-0FpNZW2olg8`l8o00Ie{-{r~^~ diff --git a/docs/_next/static/media/97e0cb1ae144a2a9-s.woff2 b/docs/_next/static/media/97e0cb1ae144a2a9-s.woff2 deleted file mode 100644 index 7fdf0b945543e93603888d7d777f684b15dec9d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11220 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 diff --git a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js b/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js deleted file mode 100644 index bba391a4..00000000 --- a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:2,errorRate:1e-4,numBits:39,numHashes:14,bitArray:[0,1,1,0,r,e,e,r,r,e,e,r,e,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,e,r,e,r,e,e,e,r]},__routerFilterDynamic:{numItems:e,errorRate:1e-4,numBits:20,numHashes:14,bitArray:[r,r,e,e,r,r,e,e,e,e,r,r,e,e,r,e,r,e,e,r]},"/_error":["static/chunks/pages/_error-cc3f077a18ea1793.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js b/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js deleted file mode 100644 index a24ce437..00000000 --- a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__SSG_MANIFEST=new Set(["\u002Fdocs\u002F[[...slug]]"]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/docs/docs.html b/docs/docs.html deleted file mode 100644 index 6f5a4a4b..00000000 --- a/docs/docs.html +++ /dev/null @@ -1,259 +0,0 @@ -

    Yet Another Keyword Extractor (Yake)

    -

    Unsupervised Approach for Automatic Keyword Extraction using Text Features.

    -

    YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app.

    -

    Main Features

    -
      -
    • Unsupervised approach
    • -
    • Corpus-Independent
    • -
    • Domain and Language Independent
    • -
    • Single-Document
    • -
    -

    Benchmark

    -

    For Benchmark results check out our paper published on Information Science Journal (see the references section).

    -

    Rationale

    -

    Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted.

    -

    Where can I find YAKE!?

    -

    YAKE! is available online [http://yake.inesctec.pt], on Google Play, as an open source Python package [https://github.com/LIAAD/yake] and as an API.

    -

    Installing YAKE!

    -

    There are three installation alternatives.

    -
      -
    • To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our simple YAKE! Docker image. This container will allow you to run text extraction as a command, and then exit.
    • -
    • To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our RESTful API server image. This container/server will run in the background.
    • -
    • To install YAKE! straight "on the metal" or you want to integrate it in your Python app, you can install it and its dependencies.
    • -
    - -

    Option 1. YAKE as a CLI utility inside a Docker container

    -

    First, install Docker. Ubuntu users, please see our script below for a complete installation script.

    -

    Then, run:

    -
    docker run liaad/yake:latest -ti "Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system."
    -

    Example text from Wikipedia

    - -

    Option 2. REST API Server in a Docker container

    -

    This install will provide you a mirror of the original REST API of YAKE! available here.

    -
    docker run -p 5000:5000 -d liaad/yake-server:latest
    -

    After it starts up, the container will run in the background, at http://127.0.0.1:5000. To access the YAKE! API documentation, go to http://127.0.0.1:5000/apidocs/.

    -

    You can test the RESTful API using curl:

    -
    curl -X POST "http://localhost:5000/yake/" -H "accept: application/json" -H "Content-Type: application/json" \
    --d @- <<'EOF'
    -{
    -  "language": "en",
    -  "max_ngram_size": 3,
    -  "number_of_keywords": 10,
    -  "text": "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ..."
    -}
    -EOF
    -

    Example text from Wikipedia

    - -

    Option 3. Standalone Installation (for development or integration)

    -

    Requirements

    -

    Python3

    -

    Installation

    -

    To install Yake using pip:

    -
    pip install git+https://github.com/LIAAD/yake
    -

    To upgrade using pip:

    -
    pip install git+https://github.com/LIAAD/yake –-upgrade
    -

    Usage (Command line)

    -

    How to use it on your favorite command line

    -
    Usage: yake [OPTIONS]
    - 
    -Options:
    -	-ti, --text_input TEXT          Input text, SURROUNDED by single quotes(')
    -	-i, --input_file TEXT           Input file
    -	-l, --language TEXT             Language
    -	-n, --ngram-size INTEGER        Max size of the ngram.
    -	-df, --dedup-func [leve|jaro|seqm]
    -									Deduplication function.
    -	-dl, --dedup-lim FLOAT          Deduplication limiar.
    -	-ws, --window-size INTEGER      Window size.
    -	-t, --top INTEGER               Number of keyphrases to extract
    -	-v, --verbose			Gets detailed information (such as the score)
    -	--help                          Show this message and exit.
    -

    Usage (Python)

    -

    How to use it on Python

    -
    import yake
    - 
    -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\
    -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\
    -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\
    -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\
    -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\
    -"was founded by Goldbloom  and Ben Hamner in 2010. "\
    -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\
    -"it has managed to stay well ahead of them by focusing on its specific niche. "\
    -"The service is basically the de facto home for running data science and machine learning competitions. "\
    -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\
    -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\
    -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\
    -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\
    -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\
    -"will keep the service running - likely under its current name. While the acquisition is probably more about "\
    -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\
    -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\
    -"share this code on the platform (the company previously called them 'scripts'). "\
    -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\
    -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\
    -"since its   launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\
    -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner "
    -

    assuming default parameters

    -
    kw_extractor = yake.KeywordExtractor()
    -keywords = kw_extractor.extract_keywords(text)
    - 
    -for kw in keywords:
    -	print(kw)
    -

    specifying parameters

    -
    language = "en"
    -max_ngram_size = 3
    -deduplication_threshold = 0.9
    -deduplication_algo = 'seqm'
    -windowSize = 1
    -numOfKeywords = 20
    - 
    -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_threshold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None)
    -keywords = custom_kw_extractor.extract_keywords(text)
    - 
    -for kw in keywords:
    -    print(kw)
    -

    Output

    -

    The lower the score, the more relevant the keyword is.

    -
    ('google', 0.026580863364597897)
    -('kaggle', 0.0289005976239829)
    -('ceo anthony goldbloom', 0.029946071606210194)
    -('san francisco', 0.048810837074825336)
    -('anthony goldbloom declined', 0.06176910090701819)
    -('google cloud platform', 0.06261974476422487)
    -('co-founder ceo anthony', 0.07357749587020043)
    -('acquiring kaggle', 0.08723571551039863)
    -('ceo anthony', 0.08915156857226395)
    -('anthony goldbloom', 0.09123482372372106)
    -('machine learning', 0.09147989238151344)
    -('kaggle co-founder ceo', 0.093805063905847)
    -('data', 0.097574333771058)
    -('google cloud', 0.10260128641464673)
    -('machine learning competitions', 0.10773000650607861)
    -('francisco this week', 0.11519915079240485)
    -('platform', 0.1183512305596321)
    -('conference in san', 0.12392066376108138)
    -('service', 0.12546743261462942)
    -('goldbloom', 0.14611408778815776)
    -

    Highlighting Feature

    -

    Highlighting feature will tag every keyword in the text with the default tag <kw>.

    -
     
    -from yake.highlight import TextHighlighter
    - 
    -th = TextHighlighter(max_ngram_size = 3)
    -th.highlight(text, keywords)
    
    -

    Output

    -

    By default, keywords will be highlighted using the tag 'kw'.

    -
    Sources tell us that <kw>google</kw> is <kw>acquiring kaggle</kw>, a platform that <kw>hosts data science</kw> and <kw>machine learning</kw> competitions. Details about the transaction remain somewhat vague , but given that <kw>google</kw> is hosting its Cloud Next conference in <kw>san francisco</kw> this week, the official announcement could come as early as tomorrow.  Reached by phone, Kaggle co-founder <kw>ceo anthony goldbloom</kw> declined to deny that the acquisition is happening. <kw>google</kw> itself declined 'to comment on rumors'.
    -.....
    -.....
    -

    Custom Highlighting Feature

    -

    Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag <span class='my_class' > makes use of an hyphotetical function my_class whose purpose would be to highlight in white colour or the relevant keywords.

    -

    Output

    -
     
    -from yake.highlight import TextHighlighter
    -th = TextHighlighter(max_ngram_size = 3, highlight_pre = "<span class='my_class' >", highlight_post= "</span>")
    -th.highlight(text, keywords)
    -
    self.highlight_postSources tell us that <span class='my_class' >google</span> is <span class='my_class' >acquiring kaggle</span>, a platform that <span class='my_class' >hosts data science</span> and <span class='my_class' >machine learning</span> self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that <span class='my_class' >google</span> is hosting self.highlight_postits Cloud Next conference in <span class='my_class' >san francisco</span> this week, the official announcement could come as early self.highlight_postas tomorrow.  Reached by phone, Kaggle co-founder <span class='my_class' >ceo anthony goldbloom</span> declined to deny that the self.highlight_postacquisition is happening. <span class='my_class' >google</span> itself declined 'to comment on rumors'.
    -.....
    -.....
    -

    Languages others than English

    -

    While English (en) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text.

    -
    text = '''
    -"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui.
    -A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.
    -'''
    - 
    -custom_kw_extractor = yake.KeywordExtractor(lan="pt")
    -keywords = custom_kw_extractor.extract_keywords(text)
    - 
    -for kw in keywords:
    -    print(kw)
    -

    Output

    -
    ('conta-me histórias', 0.006225012963810038)
    -('liaad do inesc', 0.01899063587015275)
    -('inesc tec', 0.01995432290332246)
    -('conta-me', 0.04513273690417472)
    -('histórias', 0.04513273690417472)
    -('prémio arquivo.pt', 0.05749361520927859)
    -('liaad', 0.07738867367929901)
    -('inesc', 0.07738867367929901)
    -('tec', 0.08109398065524037)
    -('xutos inspiram projeto', 0.08720742489353424)
    -('inspiram projeto premiado', 0.08720742489353424)
    -('adam jatwot docente', 0.09407053486771558)
    -('arquivo.pt', 0.10261392141666957)
    -('alípio jorge', 0.12190479662535166)
    -('ciências da universidade', 0.12368384021490342)
    -('ricardo campos investigador', 0.12789997272332762)
    -('politécnico de tomar', 0.13323587141127738)
    -('arian pasquali', 0.13323587141127738)
    -('vitor mangaravite', 0.13323587141127738)
    -('preservados da web', 0.13596322680882506)
    - -

    YAKE! Mobile APP

    -

    YAKE! is now available on Google Play

    -

    pke - python keyphrase extraction

    -

    https://github.com/boudinfl/pke - pke is an open source python-based keyphrase extraction toolkit. It -provides an end-to-end keyphrase extraction pipeline in which each component can -be easily modified or extended to develop new models. pke also allows for -easy benchmarking of state-of-the-art keyphrase extraction models, and -ships with supervised models trained on the SemEval-2010 dataset (http://aclweb.org/anthology/S10-1004).

    -

    Credits to https://github.com/boudinfl

    -

    SparkNLP - State of the Art Natural Language Processing framework

    -

    https://github.com/JohnSnowLabs/spark-nlp - SparkNLP from John Snow Labs is an open source framework with full Python, Scala, and Java Support. Check their documentation, demo and google colab. A video on how to use spark nlp with yake can also be found here: https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code

    -

    General Index by Archive.org

    -

    https://archive.org/details/GeneralIndex - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in Nature.

    -

    textacy - NLP, before and after spaCy

    -

    https://github.com/chartbeat-labs/textacy - textacy is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE.

    -

    Credits to https://github.com/chartbeat-labs

    - -

    Annif - Tool for automated subject indexing and classification

    -

    https://github.com/NatLibFi/Annif/ - Annif is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website http://annif.org/.

    -

    Portulan Clarin - Services and data for researchers, innovators, students and language professionals

    -

    https://portulanclarin.net/workbench/liaad-yake/ - Portulan Clarin is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website https://portulanclarin.net/.

    -

    How to install Docker

    -

    Here is the "just copy and paste" installations script for Docker in Ubuntu. Enjoy.

    -
    # Install dependencies
    -sudo apt-get update
    -sudo apt-get install \
    -    apt-transport-https \
    -    ca-certificates \
    -    curl \
    -    software-properties-common
    - 
    -# Add Docker repo
    -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    -sudo apt-key fingerprint 0EBFCD88
    -sudo add-apt-repository \
    -   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    -   $(lsb_release -cs) \
    -   stable"
    -sudo apt-get update
    - 
    -# Install Docker
    -sudo apt-get install -y docker-ce
    - 
    -# Start Docker Daemon
    -sudo service docker start
    - 
    -# Add yourself to the Docker user group, otherwise docker will complain that
    -# it does not know if the Docker Daemon is running
    -sudo usermod -aG docker ${USER}
    - 
    -# Install docker-compose
    -sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    -sudo chmod +x /usr/local/bin/docker-compose
    -source ~/.bashrc
    -docker-compose --version
    -echo "Done!"
    -

    Credits to https://github.com/silvae86 for the Docker scripts.

    -

    References

    -

    Please cite the following works when using YAKE

    -In-depth journal paper at Information Sciences Journal -

    Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. pdf

    -ECIR'18 Best Short Paper -

    Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. pdf

    -

    Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. pdf

    -

    Awards

    -

    ECIR'18 Best Short Paper

    \ No newline at end of file diff --git a/docs/docs.txt b/docs/docs.txt deleted file mode 100644 index 745f07d7..00000000 --- a/docs/docs.txt +++ /dev/null @@ -1,85 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","gvMZ_sdftMoK32IrKifNs",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -35:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -36:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -54:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -55:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -56:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2c:T40a,Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted.3a:T5c0,3b:T5c0,3c:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#yet-another-keyword-extractor-yake","title":"Yet Another Keyword Extractor (Yake)"},{"depth":2,"url":"#main-features","title":"Main Features"},{"depth":2,"url":"#benchmark","title":"Benchmark"},{"depth":2,"url":"#rationale","title":"Rationale"},{"depth":2,"url":"#where-can-i-find-yake","title":"Where can I find YAKE!?"},{"depth":2,"url":"#installing-yake","title":"Installing YAKE!"},{"depth":3,"url":"#option-1-yake-as-a-cli-utility-inside-a-docker-container","title":"Option 1. YAKE as a CLI utility inside a Docker container"},{"depth":3,"url":"#option-2-rest-api-server-in-a-docker-container","title":"Option 2. REST API Server in a Docker container"},{"depth":3,"url":"#option-3-standalone-installation-for-development-or-integration","title":"Option 3. Standalone Installation (for development or integration)"},{"depth":4,"url":"#requirements","title":"Requirements"},{"depth":4,"url":"#installation","title":"Installation"},{"depth":4,"url":"#usage-command-line","title":"Usage (Command line)"},{"depth":3,"url":"#usage-python","title":"Usage (Python)"},{"depth":4,"url":"#assuming-default-parameters","title":"assuming default parameters"},{"depth":4,"url":"#specifying-parameters","title":"specifying parameters"},{"depth":4,"url":"#output","title":"Output"},{"depth":3,"url":"#highlighting-feature","title":"Highlighting Feature"},{"depth":4,"url":"#output-1","title":"Output"},{"depth":3,"url":"#custom-highlighting-feature","title":"Custom Highlighting Feature"},{"depth":4,"url":"#output-2","title":"Output"},{"depth":3,"url":"#languages-others-than-english","title":"Languages others than English"},{"depth":4,"url":"#output-3","title":"Output"},{"depth":2,"url":"#related-projects","title":"Related projects"},{"depth":3,"url":"#yake-mobile-app","title":"YAKE! Mobile APP"},{"depth":3,"url":"#pke---python-keyphrase-extraction","title":[["$","code",null,{"children":"pke"}]," - python keyphrase extraction"]},{"depth":3,"url":"#sparknlp---state-of-the-art-natural-language-processing-framework","title":[["$","code",null,{"children":"SparkNLP"}]," - State of the Art Natural Language Processing framework"]},{"depth":3,"url":"#general-index-by-archiveorg","title":[["$","code",null,{"children":"General Index"}]," by Archive.org"]},{"depth":3,"url":"#textacy---nlp-before-and-after-spacy","title":[["$","code",null,{"children":"textacy"}]," - NLP, before and after spaCy"]},{"depth":3,"url":"#annif---tool-for-automated-subject-indexing-and-classification","title":[["$","code",null,{"children":"Annif"}]," - Tool for automated subject indexing and classification"]},{"depth":3,"url":"#portulan-clarin---services-and-data-for-researchers-innovators-students-and-language-professionals","title":[["$","code",null,{"children":"Portulan Clarin"}]," - Services and data for researchers, innovators, students and language professionals"]},{"depth":2,"url":"#how-to-install-docker","title":"How to install Docker"},{"depth":2,"url":"#references","title":"References"},{"depth":2,"url":"#awards","title":"Awards"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"yet-another-keyword-extractor-yake","children":[["$","a",null,{"data-card":"","href":"#yet-another-keyword-extractor-yake","className":"peer","children":"Yet Another Keyword Extractor (Yake)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Unsupervised Approach for Automatic Keyword Extraction using Text Features."}],"\n",["$","p",null,{"children":["YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a ",["$","a",null,{"href":"http://yake.inesctec.pt","target":"_blank","children":"demo"}],", an ",["$","a",null,{"href":"http://yake.inesctec.pt/apidocs/#!/available_methods/post_yake_v2_extract_keywords","target":"_blank","children":"API"}]," and a ",["$","a",null,{"href":"https://play.google.com/store/apps/details?id=com.yake.yake","target":"_blank","children":"mobile app"}],"."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"main-features","children":[["$","a",null,{"data-card":"","href":"#main-features","className":"peer","children":"Main Features"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Unsupervised approach"}],"\n",["$","li",null,{"children":"Corpus-Independent"}],"\n",["$","li",null,{"children":"Domain and Language Independent"}],"\n",["$","li",null,{"children":"Single-Document"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"benchmark","children":[["$","a",null,{"data-card":"","href":"#benchmark","className":"peer","children":"Benchmark"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"For Benchmark results check out our paper published on Information Science Journal (see the references section)."}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"rationale","children":[["$","a",null,{"data-card":"","href":"#rationale","className":"peer","children":"Rationale"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"$2c"}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"where-can-i-find-yake","children":[["$","a",null,{"data-card":"","href":"#where-can-i-find-yake","className":"peer","children":"Where can I find YAKE!?"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["YAKE! is available online [","$L2d","],"," on ","$L2e",", as an open source Python package [","$L2f","]"," and as an ","$L30","."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"installing-yake","children":[["$","a",null,{"data-card":"","href":"#installing-yake","className":"peer","children":"Installing YAKE!"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"There are three installation alternatives."}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":["To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our ","$L31",". This container will allow you to run text extraction as a command, and then exit."]}],"\n",["$","li",null,{"children":["To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our ","$L32",". This container/server ",["$","em",null,{"children":"will run in the background"}],"."]}],"\n",["$","li",null,{"children":["To install YAKE! straight \"on the metal\" or you want to integrate it in your Python app, you can ","$L33","."]}],"\n"]}],"\n",["$","a",null,{"name":"cli-image"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"option-1-yake-as-a-cli-utility-inside-a-docker-container","children":[["$","a",null,{"data-card":"","href":"#option-1-yake-as-a-cli-utility-inside-a-docker-container","className":"peer","children":"Option 1. YAKE as a CLI utility inside a Docker container"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["First, install Docker. Ubuntu users, please see our ","$L34"," for a complete installation script."]}],"\n",["$","p",null,{"children":"Then, run:"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"docker"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" run"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" liaad/yake:latest"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -ti"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system.\""}]]}]}]}]}],"\n",["$","p",null,{"children":["$","em",null,{"children":"Example text from Wikipedia"}]}],"\n",["$","a",null,{"name":"rest-api-image"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"option-2-rest-api-server-in-a-docker-container","children":[["$","a",null,{"data-card":"","href":"#option-2-rest-api-server-in-a-docker-container","className":"peer","children":"Option 2. REST API Server in a Docker container"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["This install will provide you a mirror of the original REST API of YAKE! available ","$L37","."]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"docker"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" run"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -p"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" 5000:5000"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -d"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" liaad/yake-server:latest"}]]}]}]}]}],"\n",["$","p",null,{"children":["After it starts up, the container will run in the background, at ","$L38",". To access the YAKE! API documentation, go to ","$L39","."]}],"\n",["$","p",null,{"children":["You can test the RESTful API using ",["$","code",null,{"children":"curl"}],":"]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -X"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" POST"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"http://localhost:5000/yake/\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -H"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"accept: application/json\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -H"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Content-Type: application/json\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"-d "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"@-"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" <<"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'EOF'"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"{"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"language\": \"en\","}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"max_ngram_size\": 3,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_keywords\": 10,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"text\": \"Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ...\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"}"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"EOF"}]}]]}]}]}],"\n",["$","p",null,{"children":["$","em",null,{"children":"Example text from Wikipedia"}]}],"\n",["$","a",null,{"name":"standalone-installation"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"option-3-standalone-installation-for-development-or-integration","children":[["$","a",null,{"data-card":"","href":"#option-3-standalone-installation-for-development-or-integration","className":"peer","children":"Option 3. Standalone Installation (for development or integration)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"requirements","children":[["$","a",null,{"data-card":"","href":"#requirements","className":"peer","children":"Requirements"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Python3"}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"installation","children":[["$","a",null,{"data-card":"","href":"#installation","className":"peer","children":"Installation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"To install Yake using pip:"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"pip"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" git+https://github.com/LIAAD/yake"}]]}]}]}]}],"\n",["$","p",null,{"children":"To upgrade using pip:"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"pip"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" git+https://github.com/LIAAD/yake"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" –-upgrade"}]]}]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-command-line","children":[["$","a",null,{"data-card":"","href":"#usage-command-line","className":"peer","children":"Usage (Command line)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"How to use it on your favorite command line"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"Usage:"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [OPTIONS]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"Options:"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-ti,"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" --text_input"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TEXT"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Input"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text,"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" SURROUNDED"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" by"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" single"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" quotes"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"')"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-i, --input_file TEXT Input file"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-l, --language TEXT Language"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-n, --ngram-size INTEGER Max size of the ngram."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-df, --dedup-func [leve|jaro|seqm]"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t\t\t\t\t\t\t\t\tDeduplication function."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-dl, --dedup-lim FLOAT Deduplication limiar."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-ws, --window-size INTEGER Window size."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-t, --top INTEGER Number of keyphrases to extract"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-v, --verbose\t\t\tGets detailed information (such as the score)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t--help Show this message and exit."}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-python","children":[["$","a",null,{"data-card":"","href":"#usage-python","className":"peer","children":"Usage (Python)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"How to use it on Python"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"was founded by Goldbloom and Ben Hamner in 2010. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"it has managed to stay well ahead of them by focusing on its specific niche. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"The service is basically the de facto home for running data science and machine learning competitions. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"will keep the service running - likely under its current name. While the acquisition is probably more about \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"share this code on the platform (the company previously called them 'scripts'). \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner \""}]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"assuming-default-parameters","children":[["$","a",null,{"data-card":"","href":"#assuming-default-parameters","className":"peer","children":"assuming default parameters"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"kw_extractor"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake.KeywordExtractor"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"keywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" kw_extractor.extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\tprint"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"specifying-parameters","children":[["$","a",null,{"data-card":"","href":"#specifying-parameters","className":"peer","children":"specifying parameters"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"language"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"en\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"deduplication_threshold"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.9"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"deduplication_algo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" 'seqm'"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"windowSize"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"numOfKeywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 20"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"custom_kw_extractor"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake.KeywordExtractor"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"language,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"max_ngram_size,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dedupLim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"deduplication_threshold,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dedupFunc"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"deduplication_algo,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windowsSize"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"windowSize,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"numOfKeywords,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"keywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" custom_kw_extractor.extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output","children":[["$","a",null,{"data-card":"","href":"#output","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The lower the score, the more relevant the keyword is."}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'google'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.026580863364597897"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'kaggle'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0289005976239829"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ceo anthony goldbloom'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.029946071606210194"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'san francisco'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.048810837074825336"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'anthony goldbloom declined'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.06176910090701819"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'google cloud platform'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.06261974476422487"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'co-founder ceo anthony'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.07357749587020043"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'acquiring kaggle'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08723571551039863"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ceo anthony'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08915156857226395"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'anthony goldbloom'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.09123482372372106"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'machine learning'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.09147989238151344"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'kaggle co-founder ceo'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.093805063905847"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'data'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.097574333771058"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'google cloud'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.10260128641464673"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'machine learning competitions'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.10773000650607861"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'francisco this week'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.11519915079240485"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'platform'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.1183512305596321"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'conference in san'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12392066376108138"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'service'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12546743261462942"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'goldbloom'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.14611408778815776"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"highlighting-feature","children":[["$","a",null,{"data-card":"","href":"#highlighting-feature","className":"peer","children":"Highlighting Feature"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["Highlighting feature will tag every keyword in the text with the default tag ",["$","code",null,{"children":""}],"."]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th.highlight(text, keywords)\r"}]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output-1","children":[["$","a",null,{"data-card":"","href":"#output-1","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"By default, keywords will be highlighted using the tag 'kw'."}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"children":"Sources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that google is hosting its Cloud Next conference in san francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the acquisition is happening. google itself declined 'to comment on rumors'."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"custom-highlighting-feature","children":[["$","a",null,{"data-card":"","href":"#custom-highlighting-feature","className":"peer","children":"Custom Highlighting Feature"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag ",["$","code",null,{"children":""}]," makes use of an hyphotetical function ",["$","code",null,{"children":"my_class"}]," whose purpose would be to highlight in white colour or the relevant keywords."]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output-2","children":[["$","a",null,{"data-card":"","href":"#output-2","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th.highlight(text, keywords)"}]}]]}]}]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"children":"self.highlight_postSources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that google is hosting self.highlight_postits Cloud Next conference in san francisco this week, the official announcement could come as early self.highlight_postas tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the self.highlight_postacquisition is happening. google itself declined 'to comment on rumors'."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"languages-others-than-english","children":[["$","a",null,{"data-card":"","href":"#languages-others-than-english","className":"peer","children":"Languages others than English"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["While English (",["$","code",null,{"children":"en"}],") is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text."]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" '''"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'''"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"custom_kw_extractor"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake.KeywordExtractor"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"keywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" custom_kw_extractor.extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output-3","children":[["$","a",null,{"data-card":"","href":"#output-3","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'conta-me histórias'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.006225012963810038"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'liaad do inesc'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.01899063587015275"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'inesc tec'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.01995432290332246"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'conta-me'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.04513273690417472"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'histórias'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.04513273690417472"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'prémio arquivo.pt'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.05749361520927859"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'liaad'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.07738867367929901"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'inesc'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.07738867367929901"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'tec'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08109398065524037"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'xutos inspiram projeto'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08720742489353424"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'inspiram projeto premiado'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08720742489353424"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'adam jatwot docente'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.09407053486771558"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'arquivo.pt'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.10261392141666957"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'alípio jorge'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12190479662535166"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ciências da universidade'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12368384021490342"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ricardo campos investigador'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12789997272332762"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'politécnico de tomar'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13323587141127738"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'arian pasquali'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13323587141127738"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'vitor mangaravite'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13323587141127738"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'preservados da web'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13596322680882506"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"related-projects","children":[["$","a",null,{"data-card":"","href":"#related-projects","className":"peer","children":"Related projects"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"yake-mobile-app","children":[["$","a",null,{"data-card":"","href":"#yake-mobile-app","className":"peer","children":"YAKE! Mobile APP"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["YAKE! is now available on ","$L3d"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"pke---python-keyphrase-extraction","children":[["$","a",null,{"data-card":"","href":"#pke---python-keyphrase-extraction","className":"peer","children":[["$","code",null,{"children":"pke"}]," - python keyphrase extraction"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L3e"," - ",["$","code",null,{"children":"pke"}]," is an ",["$","strong",null,{"children":"open source"}]," python-based ",["$","strong",null,{"children":"keyphrase extraction"}]," toolkit. It\r\nprovides an end-to-end keyphrase extraction pipeline in which each component can\r\nbe easily modified or extended to develop new models. ",["$","code",null,{"children":"pke"}]," also allows for\r\neasy benchmarking of state-of-the-art keyphrase extraction models, and\r\nships with supervised models trained on the SemEval-2010 dataset (","$L3f",")."]}],"\n",["$","p",null,{"children":["Credits to ","$L40"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"sparknlp---state-of-the-art-natural-language-processing-framework","children":[["$","a",null,{"data-card":"","href":"#sparknlp---state-of-the-art-natural-language-processing-framework","className":"peer","children":[["$","code",null,{"children":"SparkNLP"}]," - State of the Art Natural Language Processing framework"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L41"," - ",["$","code",null,{"children":"SparkNLP"}]," from ","$L42"," is an open source framework with full Python, Scala, and Java Support. Check ","$L43",", ","$L44"," and ","$L45",". A video on how to use spark nlp with yake can also be found here: ","$L46"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"general-index-by-archiveorg","children":[["$","a",null,{"data-card":"","href":"#general-index-by-archiveorg","className":"peer","children":[["$","code",null,{"children":"General Index"}]," by Archive.org"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L47"," - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in ","$L48","."]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"textacy---nlp-before-and-after-spacy","children":[["$","a",null,{"data-card":"","href":"#textacy---nlp-before-and-after-spacy","className":"peer","children":[["$","code",null,{"children":"textacy"}]," - NLP, before and after spaCy"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L49"," - ",["$","code",null,{"children":"textacy"}]," is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE."]}],"\n",["$","p",null,{"children":["Credits to ","$L4a"]}],"\n",["$","a",null,{"name":"installing-docker"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"annif---tool-for-automated-subject-indexing-and-classification","children":[["$","a",null,{"data-card":"","href":"#annif---tool-for-automated-subject-indexing-and-classification","className":"peer","children":[["$","code",null,{"children":"Annif"}]," - Tool for automated subject indexing and classification"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L4b"," - ",["$","code",null,{"children":"Annif"}]," is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website ","$L4c","."]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"portulan-clarin---services-and-data-for-researchers-innovators-students-and-language-professionals","children":[["$","a",null,{"data-card":"","href":"#portulan-clarin---services-and-data-for-researchers-innovators-students-and-language-professionals","className":"peer","children":[["$","code",null,{"children":"Portulan Clarin"}]," - Services and data for researchers, innovators, students and language professionals"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L4d"," - ",["$","code",null,{"children":"Portulan Clarin"}]," is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website ","$L4e","."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"how-to-install-docker","children":[["$","a",null,{"data-card":"","href":"#how-to-install-docker","className":"peer","children":"How to install Docker"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Here is the \"just copy and paste\" installations script for Docker in Ubuntu. Enjoy."}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Install dependencies"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" update"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-transport-https"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ca-certificates"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" software-properties-common"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Add Docker repo"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -fsSL"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" https://download.docker.com/linux/ubuntu/gpg"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" |"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-key"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" add"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" -"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-key"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" fingerprint"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" 0EBFCD88"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" add-apt-repository"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"deb [arch=amd64] https://download.docker.com/linux/ubuntu "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" $("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"lsb_release"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -cs"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" stable\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" update"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Install Docker"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -y"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" docker-ce"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Start Docker Daemon"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" service"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" docker"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" start"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Add yourself to the Docker user group, otherwise docker will complain that"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# it does not know if the Docker Daemon is running"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" usermod"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -aG"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" docker"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ${USER}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Install docker-compose"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -L"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"uname"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":")-$("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"uname"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -m"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":")\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -o"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" /usr/local/bin/docker-compose"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" chmod"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" +x"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" /usr/local/bin/docker-compose"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"source"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ~/.bashrc"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"docker-compose"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" --version"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"echo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Done!\""}]]}]]}]}]}],"\n",["$","p",null,{"children":["Credits to ","$L4f"," for the Docker scripts."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"references","children":[["$","a",null,{"data-card":"","href":"#references","className":"peer","children":"References"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Please cite the following works when using YAKE"}],"\n",["$","b",null,{"children":"In-depth journal paper at Information Sciences Journal"}],"\n",["$","p",null,{"children":["Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. ","$L50"]}],"\n",["$","b",null,{"children":"ECIR'18 Best Short Paper"}],"\n",["$","p",null,{"children":["Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. ","$L51"]}],"\n",["$","p",null,{"children":["Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. ","$L52"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"awards","children":[["$","a",null,{"data-card":"","href":"#awards","className":"peer","children":"Awards"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L53"," Best Short Paper"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L54",null,{"items":"$undefined"}]]}]]}],["$","$L55",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L56",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -2d:["$","$L8",null,{"href":"http://yake.inesctec.pt","children":"http://yake.inesctec.pt"}] -2e:["$","$L8",null,{"href":"https://play.google.com/store/apps/details?id=com.yake.yake","children":"Google Play"}] -2f:["$","$L8",null,{"href":"https://github.com/LIAAD/yake","children":"https://github.com/LIAAD/yake"}] -30:["$","$L8",null,{"href":"http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords","children":"API"}] -31:["$","$L8",null,{"href":"#cli-image","children":"simple YAKE! Docker image"}] -32:["$","$L8",null,{"href":"#rest-api-image","children":"RESTful API server image"}] -33:["$","$L8",null,{"href":"#standalone-installation","children":"install it and its dependencies"}] -34:["$","$L8",null,{"href":"#installing-docker","children":"script below"}] -37:["$","$L8",null,{"href":"https://boiling-castle-88317.herokuapp.com","children":"here"}] -38:["$","$L8",null,{"href":"http://127.0.0.1:5000","children":"http://127.0.0.1:5000"}] -39:["$","$L8",null,{"href":"http://127.0.0.1:5000/apidocs/","children":"http://127.0.0.1:5000/apidocs/"}] -3d:["$","$L8",null,{"href":"https://play.google.com/store/apps/details?id=com.yake.yake","children":"Google Play"}] -3e:["$","$L8",null,{"href":"https://github.com/boudinfl/pke","children":"https://github.com/boudinfl/pke"}] -3f:["$","$L8",null,{"href":"http://aclweb.org/anthology/S10-1004","children":"http://aclweb.org/anthology/S10-1004"}] -40:["$","$L8",null,{"href":"https://github.com/boudinfl","children":"https://github.com/boudinfl"}] -41:["$","$L8",null,{"href":"https://github.com/JohnSnowLabs/spark-nlp","children":"https://github.com/JohnSnowLabs/spark-nlp"}] -42:["$","$L8",null,{"href":"https://www.johnsnowlabs.com/","children":"John Snow Labs"}] -43:["$","$L8",null,{"href":"https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction","children":"their documentation"}] -44:["$","$L8",null,{"href":"https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/","children":"demo"}] -45:["$","$L8",null,{"href":"https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb","children":"google colab"}] -46:["$","$L8",null,{"href":"https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code","children":"https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code"}] -47:["$","$L8",null,{"href":"https://archive.org/details/GeneralIndex","children":"https://archive.org/details/GeneralIndex"}] -48:["$","$L8",null,{"href":"https://www.nature.com/articles/d41586-021-02895-8","children":"Nature"}] -49:["$","$L8",null,{"href":"https://github.com/chartbeat-labs/textacy","children":"https://github.com/chartbeat-labs/textacy"}] -4a:["$","$L8",null,{"href":"https://github.com/chartbeat-labs","children":"https://github.com/chartbeat-labs"}] -4b:["$","$L8",null,{"href":"https://github.com/NatLibFi/Annif/","children":"https://github.com/NatLibFi/Annif/"}] -4c:["$","$L8",null,{"href":"http://annif.org/","children":"http://annif.org/"}] -4d:["$","$L8",null,{"href":"https://portulanclarin.net/workbench/liaad-yake/","children":"https://portulanclarin.net/workbench/liaad-yake/"}] -4e:["$","$L8",null,{"href":"https://portulanclarin.net/","children":"https://portulanclarin.net/"}] -4f:["$","$L8",null,{"href":"https://github.com/silvae86","children":"https://github.com/silvae86"}] -50:["$","$L8",null,{"href":"https://doi.org/10.1016/j.ins.2019.09.013","children":"pdf"}] -51:["$","$L8",null,{"href":"https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63","children":"pdf"}] -52:["$","$L8",null,{"href":"https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80","children":"pdf"}] -53:["$","$L8",null,{"href":"http://ecir2018.org","children":"ECIR'18"}] -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/core/Levenshtein.html b/docs/docs/core/Levenshtein.html deleted file mode 100644 index 1af9bb81..00000000 --- a/docs/docs/core/Levenshtein.html +++ /dev/null @@ -1,95 +0,0 @@ -
    YAKE!
    Core


    -

    title: "Levenshtein" -description: "Module providing Levenshtein distance and ratio calculations"

    - -

    Levenshtein

    -

    The Levenshtein class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class Levenshtein:
    -    """Class for computing Levenshtein distance and similarity ratio."""
    -

    The Levenshtein class offers methods to measure the difference between two strings and calculate their similarity.

    -

    Static Methods

    -

    -

    Usage Guide

    -

    Distance Calculation

    -

    The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another.

    -

    Example:

    -
    from levenshtein import Levenshtein
    - 
    -# Calculate the edit distance between two strings
    -distance = Levenshtein.distance("kitten", "sitting")
    -print(f"Levenshtein distance: {distance}")  # Output: 3
    -

    Similarity Ratio

    -

    The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different.

    -

    Example:

    -
    from levenshtein import Levenshtein
    - 
    -# Calculate the similarity ratio between two strings
    -similarity = Levenshtein.ratio("kitten", "sitting")
    -print(f"Similarity ratio: {similarity:.4f}")  # Output: 0.5714
    -

    Algorithm Explanation

    -

    The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:

    -
      -
    1. Initialize a matrix of size (len(seq1)+1) × (len(seq2)+1)
    2. -
    3. Fill the first row and column with increasing integers (0, 1, 2, ...)
    4. -
    5. For each cell in the matrix: -
        -
      • If the corresponding characters match, the cost is 0; otherwise, it's 1
      • -
      • Calculate the minimum cost from three possible operations: -
          -
        • Deletion: Value from the cell above + 1
        • -
        • Insertion: Value from the cell to the left + 1
        • -
        • Substitution: Value from the diagonal cell + cost
        • -
        -
      • -
      -
    6. -
    7. The bottom-right cell contains the final Levenshtein distance
    8. -
    -

    Complete Usage Example

    -
    import numpy as np
    -from levenshtein import Levenshtein
    - 
    -# Test strings
    -string1 = "natural language processing"
    -string2 = "neural language processing"
    - 
    -# Calculate distance and similarity
    -distance = Levenshtein.distance(string1, string2)
    -similarity = Levenshtein.ratio(string1, string2)
    - 
    -print(f"Strings:\n1: '{string1}'\n2: '{string2}'")
    -print(f"Levenshtein distance: {distance}")
    -print(f"Similarity ratio: {similarity:.4f}")
    - 
    -# Example output:
    -# Strings:
    -# 1: 'natural language processing'
    -# 2: 'neural language processing'
    -# Levenshtein distance: 3
    -# Similarity ratio: 0.8889
    -

    Performance Considerations

    -
      -
    • Time Complexity: O(m×n) where m and n are the lengths of the input strings
    • -
    • Space Complexity: O(m×n) due to the matrix storage
    • -
    • For very long strings, consider using optimized variants or approximate algorithms
    • -
    -

    Dependencies

    -

    The Levenshtein class relies on:

    -
      -
    • numpy: For efficient matrix operations
    • -
    -

    Applications

    -

    Levenshtein distance is commonly used in:

    -
      -
    • Spell checking and correction
    • -
    • DNA sequence alignment
    • -
    • Plagiarism detection
    • -
    • Fuzzy string matching
    • -
    • Natural language processing
    • -
    • Record linkage and data deduplication
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/core/Levenshtein.txt b/docs/docs/core/Levenshtein.txt deleted file mode 100644 index b4bcb0c8..00000000 --- a/docs/docs/core/Levenshtein.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","Levenshtein"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/Levenshtein","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/Levenshtein","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","4_sg_dP2wxm0_sFMuuxbU",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -39:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3a:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -3b:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","title":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""},{"depth":1,"url":"#levenshtein","title":"Levenshtein"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#static-methods","title":"Static Methods"},{"depth":2,"url":"#usage-guide","title":"Usage Guide"},{"depth":3,"url":"#distance-calculation","title":"Distance Calculation"},{"depth":3,"url":"#similarity-ratio","title":"Similarity Ratio"},{"depth":2,"url":"#algorithm-explanation","title":"Algorithm Explanation"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#performance-considerations","title":"Performance Considerations"},{"depth":2,"url":"#dependencies","title":"Dependencies"},{"depth":2,"url":"#applications","title":"Applications"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","children":[["$","a",null,{"data-card":"","href":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","className":"peer","children":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"levenshtein","children":[["$","a",null,{"data-card":"","href":"#levenshtein","className":"peer","children":"Levenshtein"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" Levenshtein"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Class for computing Levenshtein distance and similarity ratio.\"\"\""}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class offers methods to measure the difference between two strings and calculate their similarity."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"static-methods","children":[["$","a",null,{"data-card":"","href":"#static-methods","className":"peer","children":"Static Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"ratio-private","children":[["$","$L31",null,{"children":["$","code",null,{"children":"__ratio(distance, str_length)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" __ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", str_length: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the similarity ratio based on distance and string length."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" distance (float): The Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_length (int): The length of the longer string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"ratio","children":[["$","$L31",null,{"children":["$","code",null,{"children":"ratio(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Compute the similarity ratio between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(seq1, seq2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_length "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.__ratio(str_distance, str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"distance","children":[["$","$L31",null,{"children":["$","code",null,{"children":"distance(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" distance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: The Levenshtein distance."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.zeros((size_x, size_y))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq1[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq2[y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" min"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deletion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Insertion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Substitution"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(matrix[size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-guide","children":[["$","a",null,{"data-card":"","href":"#usage-guide","className":"peer","children":"Usage Guide"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"distance-calculation","children":[["$","a",null,{"data-card":"","href":"#distance-calculation","className":"peer","children":"Distance Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the edit distance between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 3"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-ratio","children":[["$","a",null,{"data-card":"","href":"#similarity-ratio","className":"peer","children":"Similarity Ratio"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the similarity ratio between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 0.5714"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"algorithm-explanation","children":[["$","a",null,{"data-card":"","href":"#algorithm-explanation","className":"peer","children":"Algorithm Explanation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["Initialize a matrix of size ",["$","code",null,{"children":"(len(seq1)+1) × (len(seq2)+1)"}]]}],"\n",["$","li",null,{"children":"Fill the first row and column with increasing integers (0, 1, 2, ...)"}],"\n",["$","li",null,{"children":["For each cell in the matrix:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"If the corresponding characters match, the cost is 0; otherwise, it's 1"}],"\n",["$","li",null,{"children":["Calculate the minimum cost from three possible operations:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Deletion: Value from the cell above + 1"}],"\n",["$","li",null,{"children":"Insertion: Value from the cell to the left + 1"}],"\n",["$","li",null,{"children":"Substitution: Value from the diagonal cell + cost"}],"\n"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","li",null,{"children":"The bottom-right cell contains the final Levenshtein distance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" numpy "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Test strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"neural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate distance and similarity"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Strings:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"1: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"2: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Example output:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Strings:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 1: 'natural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 2: 'neural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Levenshtein distance: 3"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Similarity ratio: 0.8889"}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"performance-considerations","children":[["$","a",null,{"data-card":"","href":"#performance-considerations","className":"peer","children":"Performance Considerations"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Time Complexity: O(m×n) where m and n are the lengths of the input strings"}],"\n",["$","li",null,{"children":"Space Complexity: O(m×n) due to the matrix storage"}],"\n",["$","li",null,{"children":"For very long strings, consider using optimized variants or approximate algorithms"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For efficient matrix operations"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"applications","children":[["$","a",null,{"data-card":"","href":"#applications","className":"peer","children":"Applications"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Levenshtein distance is commonly used in:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Spell checking and correction"}],"\n",["$","li",null,{"children":"DNA sequence alignment"}],"\n",["$","li",null,{"children":"Plagiarism detection"}],"\n",["$","li",null,{"children":"Fuzzy string matching"}],"\n",["$","li",null,{"children":"Natural language processing"}],"\n",["$","li",null,{"children":"Record linkage and data deduplication"}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/core/highlight.html b/docs/docs/core/highlight.html deleted file mode 100644 index f9405d12..00000000 --- a/docs/docs/core/highlight.html +++ /dev/null @@ -1,77 +0,0 @@ -
    YAKE!
    Core


    -

    title: "TextHighlighter" -description: "Module for highlighting text based on keywords in YAKE"

    - -

    TextHighlighter

    -

    The TextHighlighter module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Module Overview

    -
    """
    -Module for highlighting text based on keywords.
    -Provides functionality to highlight specific keywords in text.
    -"""
    - 
    -import re
    -import logging
    -from dataclasses import dataclass
    -from typing import List
    - 
    -DEFAULT_HIGHLIGHT_PRE = "<kw>"
    -DEFAULT_HIGHLIGHT_POST = "</kw>"
    -

    Class Definitions

    -

    NgramData

    -

    -

    A data class to store n-gram processing results containing:

    -
      -
    • word_list: List of extracted words
    • -
    • split_kw_list: List of split keywords for processing
    • -
    -

    TextHighlighter

    -

    -

    Parameters:

    -
      -
    • max_ngram_size (int): Maximum size of n-grams to consider for highlighting
    • -
    • highlight_pre (str, optional): Text to insert before highlighted terms (default: <kw>)
    • -
    • highlight_post (str, optional): Text to insert after highlighted terms (default: </kw>)
    • -
    -

    Core Methods

    -

    -

    Helper Methods

    -

    -

    Usage Example

    -
    from yake.highlight import TextHighlighter
    - 
    -# Sample text to process
    -text = "Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language."
    - 
    -# Keywords to highlight
    -keywords = ["natural language processing", "artificial intelligence", "computers"]
    - 
    -# Initialize the highlighter with maximum n-gram size of 3
    -highlighter = TextHighlighter(max_ngram_size=3)
    - 
    -# Get highlighted text
    -highlighted_text = highlighter.highlight(text, keywords)
    -print(highlighted_text)
    -# Output: "<kw>Natural language processing</kw> is a field of <kw>artificial intelligence</kw> that focuses on interactions between <kw>computers</kw> and human language."
    - 
    -# Custom highlighting markers
    -custom_highlighter = TextHighlighter(
    -    max_ngram_size=3,
    -    highlight_pre="**",
    -    highlight_post="**"
    -)
    -custom_highlighted = custom_highlighter.highlight(text, keywords)
    -print(custom_highlighted)
    -# Output: "**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language."
    -

    Dependencies

    -

    The TextHighlighter module relies on:

    -
      -
    • re: For regular expression operations in text processing
    • -
    • logging: For error handling and reporting
    • -
    • dataclasses: For defining the NgramData dataclass
    • -
    • typing: For type annotations
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/core/highlight.txt b/docs/docs/core/highlight.txt deleted file mode 100644 index 0a46afdb..00000000 --- a/docs/docs/core/highlight.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","highlight"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/highlight","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/highlight","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","NeSGWNmXZOZ8KPM6HtxT3",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -3e:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3f:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -40:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","title":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""},{"depth":1,"url":"#texthighlighter","title":"TextHighlighter"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definitions","title":"Class Definitions"},{"depth":3,"url":"#ngramdata","title":"NgramData"},{"depth":3,"url":"#texthighlighter-1","title":"TextHighlighter"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","children":[["$","a",null,{"data-card":"","href":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","className":"peer","children":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter","children":[["$","a",null,{"data-card":"","href":"#texthighlighter","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Module for highlighting text based on keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Provides functionality to highlight specific keywords in text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclasses "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclass"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" typing "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" List"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definitions","children":[["$","a",null,{"data-card":"","href":"#class-definitions","className":"peer","children":"Class Definitions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"ngramdata","children":[["$","a",null,{"data-card":"","href":"#ngramdata","className":"peer","children":"NgramData"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"ngram_data","children":[["$","$L31",null,{"children":["$","code",null,{"children":"NgramData"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@dataclass"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" NgramData"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Data structure to hold n-gram processing results.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_list: List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_kw_list: List[List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":"A data class to store n-gram processing results containing:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word_list"}],": List of extracted words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"split_kw_list"}],": List of split keywords for processing"]}],"\n"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter-1","children":[["$","a",null,{"data-card":"","href":"#texthighlighter-1","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(max_ngram_size, highlight_pre=DEFAULT_HIGHLIGHT_PRE, highlight_post=DEFAULT_HIGHLIGHT_POST)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TextHighlighter constructor. Define highlight text snippets."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" max_ngram_size: Specifies the maximum ngram size in the keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_pre: Specifies the text before a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_post: Specifies the text after a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"max_ngram_size"}]," (int): Maximum size of n-grams to consider for highlighting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_pre"}]," (str, optional): Text to insert before highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_post"}]," (str, optional): Text to insert after highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"highlight","children":[["$","$L31",null,{"children":["$","code",null,{"children":"highlight(text, keywords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" highlight"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, keywords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Highlights keywords in the given text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The original text to be processed."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords: A list of keywords to highlight."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Each keyword can be a string or a tuple where the first element is the keyword."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" The text with highlighted keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" isinstance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"tuple"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.strip()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_one_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_n_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_one_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_one_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_one_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for one-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tk, token "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", token)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens[tk] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" token.replace("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.error "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" e:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging.error("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Regex error: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"%s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", e)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_n_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_n_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_n_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for n-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" while"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".find_relevant_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list, splited_n_gram_kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".process_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, y, n_gram_word_list, context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(new_expression)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(text_tokens[y])"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(final_splited_text)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"find_relevant_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"find_relevant_ngrams(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" find_relevant_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Finds relevant n-grams in the text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing n-gram word list and split n-gram keyword list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._find_more_relevant_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"process_ngrams(text_tokens, position, n_gram_word_list, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" process_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Processes n-grams and updates the final text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context: Dictionary containing split n-gram keywords,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant words array, and final split text"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".replace_token("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, n_gram_word_list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ctx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._create_ngram_context("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_multi_word_ngrams_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, ctx"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"replace_token","children":[["$","$L31",null,{"children":["$","code",null,{"children":"replace_token(text_tokens, position, n_gram_word_list)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" replace_token"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Replaces tokens in text with highlighted versions."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", text_tokens[position]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", txt)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt.replace("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens, new_expression"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"find_more_relevant_helper","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_find_more_relevant_helper(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _find_more_relevant_helper"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Helper method for finding relevant n-gram words."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" NgramData containing keyword list and split n-gram word list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list.append(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(temporary_list[i]),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two.append(k)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sorted_temp "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: relevant_words_array.index(x.lower())"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list.append(sorted_temp["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list.append(kw_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list, splited_n_gram_word_list"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"create_ngram_context","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_create_ngram_context(n_gram_word_list, splited_n_gram_kw_list, relevant_words_array, final_splited_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _create_ngram_context"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_kw_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates a context object for n-gram processing."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" splited_n_gram_kw_list: List of split n-gram keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" final_splited_text: List of processed text tokens"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Dictionary with context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n_gram_word_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n_gram_word_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sample text to process"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"natural language processing\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"artificial intelligence\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"computers\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize the highlighter with maximum n-gram size of 3"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get highlighted text"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighted_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(highlighted_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Custom highlighting markers"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" custom_highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(custom_highlighted)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language.\""}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations in text processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"logging"}],": For error handling and reporting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dataclasses"}],": For defining the ",["$","code",null,{"children":"NgramData"}]," dataclass"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"typing"}],": For type annotations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3e",null,{"items":"$undefined"}]]}]]}],["$","$L3f",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L40",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/core/yake.html b/docs/docs/core/yake.html deleted file mode 100644 index 3d470d41..00000000 --- a/docs/docs/core/yake.html +++ /dev/null @@ -1,106 +0,0 @@ -
    YAKE!
    Core


    -

    title: "Yake" -description: "Core class for YAKE keyword extraction from text documents"

    - -

    KeywordExtractor Class

    -

    The KeywordExtractor class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Module Overview

    -
    """Module for keyword extraction from text documents."""
    - 
    -import os
    -import jellyfish
    -from yake.data import DataCore
    -from .Levenshtein import Levenshtein
    -

    The KeywordExtractor class provides an interface to extract and process keywords from text documents using statistical features and deduplication.

    -

    Class Definition

    -

    -

    Parameters:

    -
      -
    • lan (str, optional): Language for stopwords (default: "en")
    • -
    • n (int, optional): Maximum n-gram size (default: 3)
    • -
    • dedup_lim (float, optional): Deduplication similarity threshold (default: 0.9)
    • -
    • dedup_func (str, optional): Deduplication function to use (default: "seqm")
    • -
    • window_size (int, optional): Window size for co-occurrence (default: 1)
    • -
    • top (int, optional): Maximum number of keywords to return (default: 20)
    • -
    • features (dict, optional): Custom features for keyword scoring (default: None)
    • -
    • stopwords (set, optional): Custom stopwords set (default: None, loads from language file)
    • -
    -

    Core Methods

    -

    -

    Parameters:

    -
      -
    • text (str): The text to extract keywords from
    • -
    -

    Returns:

    -
      -
    • list: A list of tuples containing (keyword, score) pairs, sorted by relevance
    • -
    -

    Helper Methods

    -

    -

    Similarity Functions

    -

    -

    Usage Examples

    -

    Basic Usage

    -
    from yake import KeywordExtractor
    - 
    -text = """
    -Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence
    -concerned with the interactions between computers and human language, in particular how to program computers
    -to process and analyze large amounts of natural language data.
    -"""
    - 
    -# Simple example with default parameters
    -kw_extractor = KeywordExtractor()
    -keywords = kw_extractor.extract_keywords(text)
    - 
    -# Print the keywords and their scores
    -for kw, score in keywords:
    -    print(f"{kw}: {score:.4f}")
    -

    Customized Usage

    -
    from yake import KeywordExtractor
    - 
    -# Create a custom stopwords set
    -custom_stopwords = {"the", "a", "an", "in", "on", "at", "of", "for", "with"}
    - 
    -# Initialize with custom parameters
    -kw_extractor = KeywordExtractor(
    -    lan="en",               # Language
    -    n=2,                   # Maximum n-gram size
    -    dedup_lim=0.8,         # Deduplication threshold
    -    dedup_func="jaro",     # Deduplication function
    -    window_size=2,         # Window size
    -    top=10,                # Number of keywords to extract
    -    stopwords=custom_stopwords
    -)
    - 
    -text = "Machine learning is the study of computer algorithms that improve automatically through experience."
    -keywords = kw_extractor.extract_keywords(text)
    - 
    -# Print the top 10 keywords
    -for kw, score in keywords:
    -    print(f"{kw}: {score:.4f}")
    -

    Deduplication Functions

    -

    The KeywordExtractor supports multiple string similarity algorithms for deduplication:

    -
      -
    1. -

      Jaro-Winkler ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches

      -
    2. -
    3. -

      Levenshtein Ratio ("levs"): Based on Levenshtein edit distance normalized by string length

      -
    4. -
    5. -

      SequenceMatcher ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm

      -
    6. -
    -

    Dependencies

    -

    The module relies on:

    -
      -
    • os: For file operations and path handling
    • -
    • jellyfish: For Jaro-Winkler string similarity
    • -
    • yake.data.DataCore: For core data representation
    • -
    • .Levenshtein: For Levenshtein distance and ratio calculations
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/core/yake.txt b/docs/docs/core/yake.txt deleted file mode 100644 index 46253154..00000000 --- a/docs/docs/core/yake.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","yake"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/yake","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/yake","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","YEhx10j7CLf2IgqJWdu0n",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -3c:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3d:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -3e:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","title":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""},{"depth":1,"url":"#keywordextractor-class","title":"KeywordExtractor Class"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definition","title":"Class Definition"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#similarity-functions","title":"Similarity Functions"},{"depth":2,"url":"#usage-examples","title":"Usage Examples"},{"depth":3,"url":"#basic-usage","title":"Basic Usage"},{"depth":3,"url":"#customized-usage","title":"Customized Usage"},{"depth":2,"url":"#deduplication-functions","title":"Deduplication Functions"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","children":[["$","a",null,{"data-card":"","href":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","className":"peer","children":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"keywordextractor-class","children":[["$","a",null,{"data-card":"","href":"#keywordextractor-class","className":"peer","children":"KeywordExtractor Class"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Module for keyword extraction from text documents.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" .Levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class provides an interface to extract and process keywords from text documents using statistical features and deduplication."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definition","children":[["$","a",null,{"data-card":"","href":"#class-definition","className":"peer","children":"Class Definition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(**kwargs)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"**"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kwargs):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize the KeywordExtractor with configuration parameters.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.9"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"20"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._load_stopwords(kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._get_dedup_function("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lan"}]," (str, optional): Language for stopwords (default: \"en\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int, optional): Maximum n-gram size (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_lim"}]," (float, optional): Deduplication similarity threshold (default: 0.9)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_func"}]," (str, optional): Deduplication function to use (default: \"seqm\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"window_size"}]," (int, optional): Window size for co-occurrence (default: 1)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"top"}]," (int, optional): Maximum number of keywords to return (default: 20)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"features"}]," (dict, optional): Custom features for keyword scoring (default: None)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopwords"}]," (set, optional): Custom stopwords set (default: None, loads from language file)"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"extract_keywords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"extract_keywords(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Extract keywords from text.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a config dictionary for DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" core_config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"stopword_set"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"core_config)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_single_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_mult_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc.is_valid()], "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c: c.h"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted]["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" : "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" h, cand_result "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function(cand.unique_kw, cand_result.unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" >"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set.append((cand.h, cand))"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(result_set) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.kw, h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (h, cand) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The text to extract keywords from"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A list of tuples containing (keyword, score) pairs, sorted by relevance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"load_stopwords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_load_stopwords(stopwords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _load_stopwords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stopwords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Load stopwords from file or use provided set.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stopwords)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dir_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.dirname(os.path.realpath("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"__file__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'lan'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":".txt\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.exists(os.path.join(dir_path, local_path)):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_noLang.txt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" resource_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join(dir_path, local_path)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"utf-8\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" UnicodeDecodeError"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Warning: reading stopword list as ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_dedup_function","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_get_dedup_function(func_name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _get_dedup_function"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, func_name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Retrieve the appropriate deduplication function.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro_winkler\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sequencematcher\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }.get(func_name.lower(), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".levs)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-functions","children":[["$","a",null,{"data-card":"","href":"#similarity-functions","className":"peer","children":"Similarity Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"jaro","children":[["$","$L31",null,{"children":["$","code",null,{"children":"jaro(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" jaro"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.jaro(cand1, cand2)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"levs","children":[["$","$L31",null,{"children":["$","code",null,{"children":"levs(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" levs"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(cand1, cand2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand2))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"seqm","children":[["$","$L31",null,{"children":["$","code",null,{"children":"seqm(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" seqm"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(cand1, cand2)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-examples","children":[["$","a",null,{"data-card":"","href":"#usage-examples","className":"peer","children":"Usage Examples"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-usage","children":[["$","a",null,{"data-card":"","href":"#basic-usage","className":"peer","children":"Basic Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"concerned with the interactions between computers and human language, in particular how to program computers"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"to process and analyze large amounts of natural language data."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Simple example with default parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the keywords and their scores"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"customized-usage","children":[["$","a",null,{"data-card":"","href":"#customized-usage","className":"peer","children":"Customized Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a custom stopwords set"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"the\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"an\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"in\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"on\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"at\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"of\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"for\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"with\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Language"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Maximum n-gram size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_lim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.8"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication threshold"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_func"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication function"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" window_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Window size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Number of keywords to extract"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" stopwords"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Machine learning is the study of computer algorithms that improve automatically through experience.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the top 10 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"deduplication-functions","children":[["$","a",null,{"data-card":"","href":"#deduplication-functions","className":"peer","children":"Deduplication Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," supports multiple string similarity algorithms for deduplication:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Jaro-Winkler"}]," (\"jaro\", \"jaro_winkler\"): Based on character matches with higher weights for prefix matches"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Levenshtein Ratio"}]," (\"levs\"): Based on Levenshtein edit distance normalized by string length"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"SequenceMatcher"}]," (\"seqm\", \"sequencematcher\"): Based on Python's difflib sequence matching algorithm"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"os"}],": For file operations and path handling"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For Jaro-Winkler string similarity"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"yake.data.DataCore"}],": For core data representation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":".Levenshtein"}],": For Levenshtein distance and ratio calculations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3c",null,{"items":"$undefined"}]]}]]}],["$","$L3d",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3e",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/composedword.html b/docs/docs/data/composedword.html deleted file mode 100644 index b65f817d..00000000 --- a/docs/docs/data/composedword.html +++ /dev/null @@ -1,154 +0,0 @@ -
    YAKE!
    Data

    ComposedWord

    -

    The ComposedWord class represents multi-word terms in YAKE (Yet Another Keyword Extractor), providing the foundation for analyzing and scoring potential keyword phrases.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class ComposedWord:
    -    def __init__(self, terms):
    -        # Initialize a composed word from term tuples [(tag, word, term_obj)]
    -

    The ComposedWord class processes and scores multi-word candidates for keyword extraction based on their constituent terms and statistical properties.

    -

    Constructor

    -

    -

    Parameters:

    -
      -
    • terms (list): A list of term tuples in the format (tag, word, term_obj) where: -
        -
      • tag (str): The part-of-speech tag for the word
      • -
      • word (str): The actual word text
      • -
      • term_obj (SingleWord): The term object representation
      • -
      -
    • -
    -

    Example:

    -
    from yake.datarepresentation import ComposedWord
    - 
    -# Create a composed word from term tuples
    -terms = [('n', 'natural', term_obj1), ('n', 'language', term_obj2)]
    -composed_word = ComposedWord(terms)
    - 
    -# Create an invalid composed word
    -invalid_composed = ComposedWord(None)
    -

    Core Methods

    -

    -

    Property Accessors

    -

    The ComposedWord class uses a dictionary-based property system with property accessors for backward compatibility:

    -

    Basic Properties

    -
      -
    • tags: Set of POS tag combinations for this candidate
    • -
    • kw: The original keyword text
    • -
    • unique_kw: Lowercase version of the keyword for uniqueness checks
    • -
    • size: Number of terms in this candidate
    • -
    • terms: List of term objects in this candidate
    • -
    • start_or_end_stopwords: Boolean indicating if the candidate starts or ends with stopwords
    • -
    -
    # Examples
    -pos_tags = composed_word.tags
    -keyword = composed_word.kw
    -unique_key = composed_word.unique_kw
    -term_count = composed_word.size
    -term_objects = composed_word.terms
    -has_stopword_boundary = composed_word.start_or_end_stopwords
    -

    Scoring Properties

    -
      -
    • tf: Term frequency of this candidate
    • -
    • integrity: Integrity score (default: 1.0)
    • -
    • h: YAKE score for this candidate (lower is better)
    • -
    -
    # Examples
    -term_frequency = composed_word.tf
    -integrity_score = composed_word.integrity
    -yake_score = composed_word.h
    - 
    -# The tf property is settable
    -composed_word.tf = 5.0
    - 
    -# The h property is settable
    -composed_word.h = 0.25
    -

    Key Algorithms

    -

    Candidate Validation

    -

    Candidates are considered valid if:

    -
      -
    1. They contain no undefined ("u") or discarded ("d") POS tags
    2. -
    3. They do not start or end with stopwords
    4. -
    -
    def is_valid(self):
    -    """Check if this candidate is valid."""
    -    is_valid = False
    -    for tag in self.tags:
    -        is_valid = is_valid or ("u" not in tag and "d" not in tag)
    -    return is_valid and not self.start_or_end_stopwords
    -

    Feature Composition

    -

    When analyzing multi-word terms, the ComposedWord class composes features from its constituent terms:

    -
    def get_composed_feature(self, feature_name, discart_stopword=True):
    -    """Get composed features from constituent terms."""
    -    list_of_features = [
    -        getattr(term, feature_name)
    -        for term in self.terms
    -        if (discart_stopword and not term.stopword) or not discart_stopword
    -    ]
    -    sum_f = sum(list_of_features)
    -    prod_f = np.prod(list_of_features)
    -    return (sum_f, prod_f, prod_f / (sum_f + 1))
    -

    Score Calculation

    -

    The YAKE score for a multi-word term is calculated using:

    -
    self.h = prod_h / ((sum_h + 1) * tf_used)
    -

    Where:

    -
      -
    • prod_h: Product of the h-scores of all terms
    • -
    • sum_h: Sum of the h-scores of all terms
    • -
    • tf_used: Term frequency (or average term frequency for virtual terms)
    • -
    -

    Lower scores indicate better keyword candidates.

    -

    Stopword Handling

    -

    The ComposedWord class handles stopwords differently based on the STOPWORD_WEIGHT configuration:

    -
      -
    • "bi": Uses co-occurrence probabilities to weight stopwords
    • -
    • "h": Uses stopword h-scores directly
    • -
    • "none": Ignores stopwords in scoring
    • -
    -

    Complete Usage Example

    -
    from yake.datarepresentation import DataCore, ComposedWord
    -from yake.stopwordremover import StopwordRemover
    - 
    -# Initialize stopwords
    -stopword_remover = StopwordRemover("en")
    -stopword_set = stopword_remover.get_stopword_set()
    - 
    -# Create DataCore instance
    -text = "Natural language processing is a field of artificial intelligence."
    -data = DataCore(text, stopword_set)
    - 
    -# Get a candidate from the DataCore
    -candidate_string = "natural language processing"
    -composed_word = data.build_candidate(candidate_string)
    - 
    -# Update the candidate's score
    -composed_word.update_h()
    - 
    -# Check if the candidate is valid
    -if composed_word.is_valid():
    -    print(f"Candidate: {composed_word.kw}")
    -    print(f"Score: {composed_word.h:.4f}")
    -    print(f"Size: {composed_word.size}")
    -    print(f"Term Frequency: {composed_word.tf}")
    -

    Dependencies

    -

    The ComposedWord class relies on:

    -
      -
    • numpy: For statistical calculations
    • -
    • jellyfish: For string similarity measurement
    • -
    • Internal utility module: -
        -
      • utils: For stopword weighting constants
      • -
      -
    • -
    -

    Integration with YAKE

    -

    ComposedWord works closely with the DataCore class:

    -
      -
    1. DataCore generates candidate ComposedWord instances
    2. -
    3. Features are built for individual terms via build_single_terms_features()
    4. -
    5. Features for multi-word terms are built via build_mult_terms_features()
    6. -
    7. Candidates are scored using the update_h() method
    8. -
    9. Lower scores indicate better keyword candidates
    10. -

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/composedword.txt b/docs/docs/data/composedword.txt deleted file mode 100644 index 532063d7..00000000 --- a/docs/docs/data/composedword.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","composedword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/composedword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/composedword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","kUzGCAYuNhwRBUUtxnCTq",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -41:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -42:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -43:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,3e:T5c0,3f:T5c0,40:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#composedword","title":"ComposedWord"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#constructor","title":"Constructor"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#property-accessors","title":"Property Accessors"},{"depth":3,"url":"#basic-properties","title":"Basic Properties"},{"depth":3,"url":"#scoring-properties","title":"Scoring Properties"},{"depth":2,"url":"#key-algorithms","title":"Key Algorithms"},{"depth":3,"url":"#candidate-validation","title":"Candidate Validation"},{"depth":3,"url":"#feature-composition","title":"Feature Composition"},{"depth":3,"url":"#score-calculation","title":"Score Calculation"},{"depth":2,"url":"#stopword-handling","title":"Stopword Handling"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"},{"depth":2,"url":"#integration-with-yake","title":"Integration with YAKE"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"composedword","children":[["$","a",null,{"data-card":"","href":"#composedword","className":"peer","children":"ComposedWord"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class represents multi-word terms in YAKE (Yet Another Keyword Extractor), providing the foundation for analyzing and scoring potential keyword phrases."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ComposedWord"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, terms):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize a composed word from term tuples [(tag, word, term_obj)]"}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class processes and scores multi-word candidates for keyword extraction based on their constituent terms and statistical properties."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"constructor","children":[["$","a",null,{"data-card":"","href":"#constructor","className":"peer","children":"Constructor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"init","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(terms)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, terms): "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# [ (tag, word, term_obj) ]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # If terms is None, initialize an invalid candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"start_or_end_stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tags\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"unique_kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": [],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"integrity\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Basic initialization from terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate derived properties"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tags\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join([w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms])])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join([w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"unique_kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(terms)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"integrity\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the candidate starts or ends with stopwords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"start_or_end_stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]["}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"start_or_end_stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"terms"}]," (list): A list of term tuples in the format ",["$","code",null,{"children":"(tag, word, term_obj)"}]," where:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"tag"}]," (str): The part-of-speech tag for the word"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"word"}]," (str): The actual word text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"term_obj"}]," (SingleWord): The term object representation"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a composed word from term tuples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'natural'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", term_obj1), ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'language'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", term_obj2)]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(terms)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create an invalid composed word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"invalid_composed "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"update_h","children":[["$","$L31",null,{"children":["$","code",null,{"children":"update_h(features=None, is_virtual=False)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" update_h"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", is_virtual"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Update the term's score based on its constituent terms.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t, term_base "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.stopword:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" =="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"bi\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" elif"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" =="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" elif"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" =="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"none\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" pass"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"KPF\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_virtual:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.mean([term_obj.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ((sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"is_valid","children":[["$","$L31",null,{"children":["$","code",null,{"children":"is_valid()"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" is_valid"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Check if this candidate is valid.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"d\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".start_or_end_stopwords"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"uptade_cand","children":[["$","$L31",null,{"children":["$","code",null,{"children":"uptade_cand(cand)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" uptade_cand"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Update this candidate with data from another candidate.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.tags:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags.add(tag)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_composed_feature","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_composed_feature(feature_name, discart_stopword=True)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_composed_feature"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, feature_name, discart_stopword"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get composed features from constituent terms.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" list_of_features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" getattr"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(term, feature_name)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.prod(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f, prod_f, prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_features","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_features(params)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_features"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, params):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Build features for machine learning or evaluation.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"_stopword\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", ["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seen "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"doc_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"doc_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(params["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"doc_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"keys\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"keys\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seen.add("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel_approx\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel_approx\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_gold_ "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" gold_key "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"keys\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dist "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.levenshtein_distance("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" gold_key,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(gold_key), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_gold_ "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (gold_key, dist)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(max_gold_["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(max_gold_["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".size)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" feature_name "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (f_sum, f_prod, f_sum_prod) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_composed_feature("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" feature_name, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"discart_stopword"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"discart_stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"else"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ''"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s_sum_K"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"feature_name"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(f_sum)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"else"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ''"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s_prod_K"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"feature_name"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(f_prod)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"else"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ''"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s_sum_prod_K"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"feature_name"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(f_sum_prod)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (features_cand, columns, seen)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"update_h_old","children":[["$","$L31",null,{"children":["$","code",null,{"children":"update_h_old(features=None, is_virtual=False)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" update_h_old"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", is_virtual"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Legacy method for updating the term's score.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t, term_base "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_virtual "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" continue"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.stopword:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"KPF\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_virtual:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.mean([term_obj.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ((sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"property-accessors","children":[["$","a",null,{"data-card":"","href":"#property-accessors","className":"peer","children":"Property Accessors"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class uses a dictionary-based property system with property accessors for backward compatibility:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-properties","children":[["$","a",null,{"data-card":"","href":"#basic-properties","className":"peer","children":"Basic Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"tags"}],": Set of POS tag combinations for this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"kw"}],": The original keyword text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"unique_kw"}],": Lowercase version of the keyword for uniqueness checks"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"size"}],": Number of terms in this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"terms"}],": List of term objects in this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"start_or_end_stopwords"}],": Boolean indicating if the candidate starts or ends with stopwords"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"pos_tags "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.tags"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keyword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.kw"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"unique_key "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.unique_kw"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term_count "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term_objects "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"has_stopword_boundary "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.start_or_end_stopwords"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"scoring-properties","children":[["$","a",null,{"data-card":"","href":"#scoring-properties","className":"peer","children":"Scoring Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"tf"}],": Term frequency of this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"integrity"}],": Integrity score (default: 1.0)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"h"}],": YAKE score for this candidate (lower is better)"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term_frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"integrity_score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.integrity"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"yake_score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.h"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# The tf property is settable"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 5.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# The h property is settable"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.25"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"key-algorithms","children":[["$","a",null,{"data-card":"","href":"#key-algorithms","className":"peer","children":"Key Algorithms"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"candidate-validation","children":[["$","a",null,{"data-card":"","href":"#candidate-validation","className":"peer","children":"Candidate Validation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Candidates are considered valid if:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":"They contain no undefined (\"u\") or discarded (\"d\") POS tags"}],"\n",["$","li",null,{"children":"They do not start or end with stopwords"}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" is_valid"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Check if this candidate is valid.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"d\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".start_or_end_stopwords"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"feature-composition","children":[["$","a",null,{"data-card":"","href":"#feature-composition","className":"peer","children":"Feature Composition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["When analyzing multi-word terms, the ",["$","code",null,{"children":"ComposedWord"}]," class composes features from its constituent terms:"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3e","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_composed_feature"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, feature_name, discart_stopword"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get composed features from constituent terms.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" list_of_features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" getattr"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(term, feature_name)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.prod(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f, prod_f, prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"score-calculation","children":[["$","a",null,{"data-card":"","href":"#score-calculation","className":"peer","children":"Score Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The YAKE score for a multi-word term is calculated using:"}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3f","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ((sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used)"}]]}]}]}]}],"\n",["$","p",null,{"children":"Where:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"prod_h"}],": Product of the h-scores of all terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"sum_h"}],": Sum of the h-scores of all terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tf_used"}],": Term frequency (or average term frequency for virtual terms)"]}],"\n"]}],"\n",["$","p",null,{"children":"Lower scores indicate better keyword candidates."}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"stopword-handling","children":[["$","a",null,{"data-card":"","href":"#stopword-handling","className":"peer","children":"Stopword Handling"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class handles stopwords differently based on the ",["$","code",null,{"children":"STOPWORD_WEIGHT"}]," configuration:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"\"bi\""}],": Uses co-occurrence probabilities to weight stopwords"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"h\""}],": Uses stopword h-scores directly"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"none\""}],": Ignores stopwords in scoring"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$40","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore, ComposedWord"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.stopwordremover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize stopwords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_remover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopword_remover.get_stopword_set()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create DataCore instance"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore(text, stopword_set)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get a candidate from the DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"candidate_string "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.build_candidate(candidate_string)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Update the candidate's score"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.update_h()"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Check if the candidate is valid"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.is_valid():"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Candidate: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Score: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.h"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Size: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.size"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Term Frequency: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.tf"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For statistical calculations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For string similarity measurement"]}],"\n",["$","li",null,{"children":["Internal utility module:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"utils"}],": For stopword weighting constants"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"integration-with-yake","children":[["$","a",null,{"data-card":"","href":"#integration-with-yake","className":"peer","children":"Integration with YAKE"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":[["$","code",null,{"children":"ComposedWord"}]," works closely with the ",["$","code",null,{"children":"DataCore"}]," class:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"DataCore"}]," generates candidate ",["$","code",null,{"children":"ComposedWord"}]," instances"]}],"\n",["$","li",null,{"children":["Features are built for individual terms via ",["$","code",null,{"children":"build_single_terms_features()"}]]}],"\n",["$","li",null,{"children":["Features for multi-word terms are built via ",["$","code",null,{"children":"build_mult_terms_features()"}]]}],"\n",["$","li",null,{"children":["Candidates are scored using the ",["$","code",null,{"children":"update_h()"}]," method"]}],"\n",["$","li",null,{"children":"Lower scores indicate better keyword candidates"}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L41",null,{"items":"$undefined"}]]}]]}],["$","$L42",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L43",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/datacore.html b/docs/docs/data/datacore.html deleted file mode 100644 index 8d4709a7..00000000 --- a/docs/docs/data/datacore.html +++ /dev/null @@ -1,118 +0,0 @@ -
    YAKE!
    Data

    DataCore

    -

    The DataCore class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class DataCore:
    -    def __init__(self, text, stopword_set, config=None):
    -        # Initialize the data core with text and configuration
    -

    The DataCore class processes text documents to identify potential keywords based on statistical features and contextual relationships.

    -

    Constructor

    -

    -

    Parameters:

    -
      -
    • text (str): The input text to analyze for keyword extraction
    • -
    • stopword_set (set): A set of stopwords to filter out non-content words
    • -
    • config (dict, optional): Configuration options including: -
        -
      • windows_size (int): Size of word window for co-occurrence (default: 2)
      • -
      • n (int): Maximum length of keyword phrases (default: 3)
      • -
      • tags_to_discard (set): POS tags to ignore (default: d)
      • -
      • exclude (set): Characters to exclude (default: string.punctuation)
      • -
      -
    • -
    -

    Example:

    -
    from yake.datarepresentation import DataCore
    -import string
    - 
    -# Initialize with default configuration
    -data = DataCore("Sample text for analysis", stopword_set)
    - 
    -# Initialize with custom configuration
    -config = {
    -    "windows_size": 3,
    -    "n": 4,
    -    "tags_to_discard": {"u", "d", "p"},
    -    "exclude": set(string.punctuation)
    -}
    -data = DataCore("Sample text for analysis", stopword_set, config)
    -

    Core Methods

    -

    -

    Public API Methods

    -

    -

    Property Accessors

    -

    The DataCore class includes various property accessors for backward compatibility:

    -

    Configuration Properties

    -
      -
    • exclude: Characters to exclude from processing
    • -
    • tags_to_discard: Part-of-speech tags to ignore during analysis
    • -
    • stopword_set: Set of stopwords to filter out
    • -
    • g: DirectedGraph representing term co-occurrences
    • -
    -
    # Examples
    -excluded_chars = data.exclude
    -ignored_tags = data.tags_to_discard
    -stopwords = data.stopword_set
    -graph = data.g
    -

    Text Statistics Properties

    -
      -
    • number_of_sentences: Count of sentences in the processed text
    • -
    • number_of_words: Total number of words processed
    • -
    -
    # Examples
    -sentence_count = data.number_of_sentences
    -word_count = data.number_of_words
    -

    Collection Properties

    -
      -
    • terms: Dictionary of SingleWord objects representing individual terms
    • -
    • candidates: Dictionary of ComposedWord objects representing keyword candidates
    • -
    • sentences_obj: Processed sentence objects
    • -
    • sentences_str: Raw sentence strings from the original text
    • -
    • freq_ns: Frequency of n-grams by length
    • -
    -
    # Examples
    -all_terms = data.terms
    -all_candidates = data.candidates
    -processed_sentences = data.sentences_obj
    -raw_sentences = data.sentences_str
    -ngram_frequencies = data.freq_ns
    -

    Complete Usage Example

    -
    from yake.datarepresentation import DataCore
    -from yake.stopwordremover import StopwordRemover
    - 
    -# Initialize stopwords
    -stopword_remover = StopwordRemover("en")
    -stopword_set = stopword_remover.get_stopword_set()
    - 
    -# Create DataCore instance
    -text = "Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language."
    -data = DataCore(text, stopword_set)
    - 
    -# Build features for keyword extraction
    -data.build_single_terms_features()
    -data.build_mult_terms_features()
    - 
    -# Extract top candidates
    -candidates = [(cand.unique_kw, cand.h) for cand in data.candidates.values() if cand.is_valid()]
    -candidates.sort(key=lambda x: x[1])  # Sort by score (lower is better in YAKE)
    - 
    -# Print top 5 keywords
    -for keyword, score in candidates[:5]:
    -    print(f"{keyword}: {score:.4f}")
    -

    Dependencies

    -

    The DataCore class relies on:

    -
      -
    • string: For punctuation constants
    • -
    • networkx: For graph representation (co-occurrences)
    • -
    • numpy: For statistical calculations
    • -
    • segtok: For tokenization
    • -
    • Internal utility modules: -
        -
      • utils: For pre-filtering and tokenization
      • -
      • single_word: For representing individual terms
      • -
      • composed_word: For representing multi-word candidates
      • -
      -
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/datacore.txt b/docs/docs/data/datacore.txt deleted file mode 100644 index cd66a23b..00000000 --- a/docs/docs/data/datacore.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","datacore"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/datacore","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/datacore","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Lw-dwezEjojj4N6ZTlN6P",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -45:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -46:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -47:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,3e:T5c0,3f:T5c0,40:T5c0,41:T5c0,42:T5c0,43:T5c0,44:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#datacore","title":"DataCore"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#constructor","title":"Constructor"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#public-api-methods","title":"Public API Methods"},{"depth":2,"url":"#property-accessors","title":"Property Accessors"},{"depth":3,"url":"#configuration-properties","title":"Configuration Properties"},{"depth":3,"url":"#text-statistics-properties","title":"Text Statistics Properties"},{"depth":3,"url":"#collection-properties","title":"Collection Properties"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"datacore","children":[["$","a",null,{"data-card":"","href":"#datacore","className":"peer","children":"DataCore"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" DataCore"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, stopword_set, config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize the data core with text and configuration"}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class processes text documents to identify potential keywords based on statistical features and contextual relationships."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"constructor","children":[["$","a",null,{"data-card":"","href":"#constructor","className":"peer","children":"Constructor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"init","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(text, stopword_set, config=None)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, stopword_set, config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Initialize the data core with text and configuration."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text (str): The input text to analyze for keyword extraction"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" stopword_set (set): A set of stopwords to filter out non-content words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" config (dict, optional): Configuration options including:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - windows_size (int): Size of word window for co-occurrence (default: 2)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - n (int): Maximum length of keyword phrases (default: 3)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - tags_to_discard (set): POS tags to ignore (default: {\"u\", \"d\"})"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - exclude (set): Characters to exclude (default: string.punctuation)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize default configuration if none provided"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Extract configuration values with appropriate defaults"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windows_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tags_to_discard "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tags_to_discard\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"d\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" exclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"exclude\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(string.punctuation))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize the state dictionary containing all component data structures"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._state "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Configuration settings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"config\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"exclude\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": exclude, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Punctuation and other characters to exclude"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tags_to_discard\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": tags_to_discard, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# POS tags to ignore during analysis"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"stopword_set\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Set of stopwords for filtering"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" },"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Text corpus statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"text_stats\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Total count of sentences"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_words\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Total count of processed words"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" },"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Core data collections for analysis"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"collections\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {}, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Dictionary mapping terms to SingleWord objects"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"candidates\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {}, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Dictionary mapping unique keywords to ComposedWord objects"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sentences_obj\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": [], "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Nested list of processed sentence objects"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sentences_str\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": [], "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# List of raw sentence strings"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"freq_ns\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {} "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Frequency distribution of n-grams by length"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" },"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Graph for term co-occurrence analysis"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"g\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": nx.DiGraph() "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Directed graph where nodes are terms and edges represent co-occurrences"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize n-gram frequencies with zero counts for each length 1 to n"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._state["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"collections\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"freq_ns\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process the text and build all data structures"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._build(text, windows_size, n)"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The input text to analyze for keyword extraction"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopword_set"}]," (set): A set of stopwords to filter out non-content words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"config"}]," (dict, optional): Configuration options including:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"windows_size"}]," (int): Size of word window for co-occurrence (default: 2)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int): Maximum length of keyword phrases (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tags_to_discard"}]," (set): POS tags to ignore (default: ","d",")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"exclude"}]," (set): Characters to exclude (default: string.punctuation)"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" string"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with default configuration"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Sample text for analysis\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", stopword_set)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom configuration"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"4"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tags_to_discard\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"d\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"p\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"},"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"exclude\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(string.punctuation)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Sample text for analysis\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", stopword_set, config)"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"build","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_build(text, windows_size, n)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _build"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, windows_size, n):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build the core data structures from the input text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" This method handles the initial processing of text, including "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" pre-filtering, sentence segmentation, and word tokenization."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text (str): The input text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" windows_size (int): Size of word window for co-occurrence analysis"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n (int): Maximum n-gram length to consider for keyword candidates"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Pre-process text for normalization"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pre_filter(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Split text into sentences and tokenize"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_str "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenize_sentences(text)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".number_of_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_str)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize position counter for global word positions"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a processing context dictionary to pass fewer arguments"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": windows_size, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process each sentence individually"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_id, sentence "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_str):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_sentence(sentence, sentence_id, pos_text, context)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Store the total number of processed words"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".number_of_words "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_sentence","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_process_sentence(sentence, sentence_id, pos_text, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _process_sentence"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, sentence, sentence_id, pos_text, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Process a single sentence from the document."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Handles the tokenization of a sentence, identifies words and punctuation,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" and processes each meaningful word."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" sentence (list): List of word tokens in the sentence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" sentence_id (int): Unique identifier for this sentence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" pos_text (int): Current global position in the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context (dict): Processing context with configuration parameters"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: Updated global position counter"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize lists to store processed sentence components"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_obj_aux "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [] "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Blocks of words within the sentence"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [] "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Current block of continuous words (separated by punctuation)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Extend the context with sentence information for word processing"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" processing_context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context.copy()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" processing_context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sentence_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_id"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process each word in the sentence"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_sent, word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(sentence):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the word is just punctuation (all characters are excluded)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"([c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".exclude]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # If we have a block of words, save it and start a new block"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_obj_aux.append(block_of_word_obj)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process meaningful words"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pos_sent\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": pos_sent, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Position within the sentence"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"block_of_word_obj\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": block_of_word_obj, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Current word block"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process this word and update position counter"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_word("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word, pos_text, processing_context, word_context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Save any remaining word block"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_obj_aux.append(block_of_word_obj)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add processed sentence to collection if not empty"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(sentence_obj_aux) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_obj.append(sentence_obj_aux)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_word","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_process_word(word, pos_text, context, word_context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _process_word"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, word, pos_text, context, word_context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Process a single word within a sentence."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates or retrieves the term object, updates its occurrences,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" analyzes co-occurrences with nearby words, and generates candidate keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" word (str): The word to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" pos_text (int): Current global position in the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context (dict): Processing context with configuration parameters"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" word_context (dict): Word-specific context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: Updated global position counter"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Extract necessary context variables"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sentence_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windows_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_sent "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pos_sent\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"block_of_word_obj\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get the part-of-speech tag for this word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_tag(word, pos_sent)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get or create the term object for this word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_term(word)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add this occurrence to the term's record"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj.add_occur(tag, sentence_id, pos_sent, pos_text)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Increment global position counter"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update co-occurrence information for valid tags"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags_to_discard:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._update_cooccurrence(block_of_word_obj, term_obj, windows_size)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Generate keyword candidates involving this term"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._generate_candidates((tag, word), term_obj, block_of_word_obj, n)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add this word to the current block"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj.append((tag, word, term_obj))"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"update_cooccurrence","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_update_cooccurrence(block_of_word_obj, term_obj, windows_size)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _update_cooccurrence"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, block_of_word_obj, term_obj, windows_size):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Update co-occurrence information between terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Records relationships between the current term and previous terms"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" within the specified window size."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" block_of_word_obj (list): Current block of words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" term_obj (SingleWord): Term object for the current word"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" windows_size (int): Size of co-occurrence window to consider"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate the window of previous words to consider for co-occurrence"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windows_size), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj))"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # For each word in the window, update co-occurrence if it's a valid term"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj[w]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags_to_discard:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add co-occurrence edge from previous term to current term"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".add_cooccur(block_of_word_obj[w]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], term_obj)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"generate_candidates","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_generate_candidates(term, term_obj, block_of_word_obj, n)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _generate_candidates"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, term, term_obj, block_of_word_obj, n):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Generate keyword candidates from terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates single-term candidates and multi-term candidates up to length n,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" combining the current term with previous terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" term (tuple): Current term as (tag, word) tuple"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" term_obj (SingleWord): Term object for the current word"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" block_of_word_obj (list): Current block of words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n (int): Maximum candidate length to generate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create single-term candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (term_obj,)]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(candidate)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".add_or_update_composedword(cand)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate window of previous words to consider for multi-term candidates"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (n "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )[::"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Reverse to build phrases from right to left"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Generate multi-term candidates with increasing length"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add previous term to candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate.append(block_of_word_obj[w])"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update frequency count for this n-gram length"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".freq_ns["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(candidate)] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create and register the composed word candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # (reverse to maintain correct word order)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(candidate[::"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".add_or_update_composedword(cand)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"public-api-methods","children":[["$","a",null,{"data-card":"","href":"#public-api-methods","className":"peer","children":"Public API Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"get_tag","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_tag(word, i)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_tag"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, word, i):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Get the part-of-speech tag for a word."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" word (str): The word to tag"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" i (int): Position of the word in its sentence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str: Single character tag representing the word type"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" (\"d\" for digit, \"u\" for unusual, \"a\" for acronym,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\" for proper noun, \"p\" for plain word)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" get_tag(word, i, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".exclude)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_candidate","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_candidate(candidate_string)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_candidate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, candidate_string):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build a candidate ComposedWord from a string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" This method allows creating candidate keywords from external input"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" strings rather than from the document's own text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" candidate_string (str): String to convert to a keyword candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ComposedWord: A composed word object representing the candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Tokenize the candidate string"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenized_words "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_contractions(web_tokenizer(candidate_string.lower()))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (w.startswith("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process each word in the candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate_terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" index, word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(tokenized_words):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get the tag and term object"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_tag(word, index)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_term(word, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"save_non_seen"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Skip terms with zero term frequency (not in the original document)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate_terms.append((tag, word, term_obj))"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the candidate has any valid terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" any"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(term["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate_terms):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Return an invalid composed word if no valid terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create and return the composed word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(candidate_terms)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_single_terms_features","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_single_terms_features(features=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_single_terms_features"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build statistical features for single terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Calculates term frequency statistics and updates the scoring metrics"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" for each individual term."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" features (list, optional): Specific features to calculate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Filter to valid terms (non-stopwords)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_tfs "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.array([x.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_terms])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Skip if no valid terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(valid_tfs) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate frequency statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" avg_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_tfs.mean()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" std_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_tfs.std()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(x.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms.values())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Prepare statistics dictionary for updating terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"max_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": max_tf,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"avg_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": avg_tf,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"std_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": std_tf,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".number_of_sentences,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update all terms with the calculated statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"map"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: x.update_h(stats, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"features), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms.values()))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_mult_terms_features","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_mult_terms_features(features=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_mult_terms_features"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build features for multi-word terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Updates the scoring metrics for valid candidate keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" features (list, optional): Specific features to calculate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update only valid candidates (filter then apply update_h)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" map"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: x.update_h("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"features),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.is_valid()],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_term","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_term(str_word, save_non_seen=True)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3e","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_term"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, str_word, save_non_seen"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Get or create a term object for a word."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Handles word normalization, stopword checking, and term object creation."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_word (str): The word to get a term object for"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" save_non_seen (bool, optional): Whether to save new terms to the collection"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" SingleWord: Term object representing this word"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Normalize the term (convert to lowercase)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_word.lower()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if it's a stopword in original form"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_sto "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Handle plural forms by removing trailing 's'"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term.endswith("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"s\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(unique_term) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term[:"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Return existing term if already processed"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[unique_term]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Remove punctuation for further analysis"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pontuation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".exclude:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_unique_term.replace(pontuation, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Determine if this is a stopword (original form, normalized form, or too short)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" isstopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_sto"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(simples_unique_term) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create the term object"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord(unique_term, term_id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj.stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" isstopword"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Save the term to the collection if requested"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" save_non_seen:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.add_node(term_id)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[unique_term] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"add_cooccur","children":[["$","$L31",null,{"children":["$","code",null,{"children":"add_cooccur(left_term, right_term)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3f","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" add_cooccur"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, left_term, right_term):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Add a co-occurrence relationship between two terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates or updates an edge in the co-occurrence graph between terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" left_term (SingleWord): Source term in the relationship"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" right_term (SingleWord): Target term in the relationship"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the edge already exists"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" right_term.id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g[left_term.id]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a new edge with initial weight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.add_edge(left_term.id, right_term.id, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"tf"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Increment the co-occurrence frequency"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g[left_term.id][right_term.id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"add_or_update_composedword","children":[["$","$L31",null,{"children":["$","code",null,{"children":"add_or_update_composedword(cand)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$40","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" add_or_update_composedword"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Add or update a composed word in the candidates collection."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Handles the registration and frequency counting of keyword candidates."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" cand (ComposedWord): The candidate keyword to add or update"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if this candidate already exists"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.unique_kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add new candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates[cand.unique_kw] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update existing candidate with new information"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates[cand.unique_kw].uptade_cand(cand)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Increment the frequency counter for this candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates[cand.unique_kw].tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"property-accessors","children":[["$","a",null,{"data-card":"","href":"#property-accessors","className":"peer","children":"Property Accessors"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class includes various property accessors for backward compatibility:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"configuration-properties","children":[["$","a",null,{"data-card":"","href":"#configuration-properties","className":"peer","children":"Configuration Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"exclude"}],": Characters to exclude from processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tags_to_discard"}],": Part-of-speech tags to ignore during analysis"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopword_set"}],": Set of stopwords to filter out"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"g"}],": DirectedGraph representing term co-occurrences"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$41","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"excluded_chars "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.exclude"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"ignored_tags "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.tags_to_discard"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.stopword_set"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"graph "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.g"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"text-statistics-properties","children":[["$","a",null,{"data-card":"","href":"#text-statistics-properties","className":"peer","children":"Text Statistics Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"number_of_sentences"}],": Count of sentences in the processed text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"number_of_words"}],": Total number of words processed"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$42","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"sentence_count "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.number_of_sentences"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"word_count "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.number_of_words"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"collection-properties","children":[["$","a",null,{"data-card":"","href":"#collection-properties","className":"peer","children":"Collection Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"terms"}],": Dictionary of ",["$","code",null,{"children":"SingleWord"}]," objects representing individual terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"candidates"}],": Dictionary of ",["$","code",null,{"children":"ComposedWord"}]," objects representing keyword candidates"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"sentences_obj"}],": Processed sentence objects"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"sentences_str"}],": Raw sentence strings from the original text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"freq_ns"}],": Frequency of n-grams by length"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$43","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"all_terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"all_candidates "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.candidates"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"processed_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.sentences_obj"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"raw_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.sentences_str"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"ngram_frequencies "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.freq_ns"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$44","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.stopwordremover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize stopwords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_remover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopword_remover.get_stopword_set()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create DataCore instance"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore(text, stopword_set)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Build features for keyword extraction"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data.build_single_terms_features()"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data.build_mult_terms_features()"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Extract top candidates"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"candidates "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.is_valid()]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"candidates.sort("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sort by score (lower is better in YAKE)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print top 5 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keyword, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates[:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keyword"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"string"}],": For punctuation constants"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"networkx"}],": For graph representation (co-occurrences)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For statistical calculations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"segtok"}],": For tokenization"]}],"\n",["$","li",null,{"children":["Internal utility modules:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"utils"}],": For pre-filtering and tokenization"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"single_word"}],": For representing individual terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"composed_word"}],": For representing multi-word candidates"]}],"\n"]}],"\n"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L45",null,{"items":"$undefined"}]]}]]}],["$","$L46",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L47",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/singleword.html b/docs/docs/data/singleword.html deleted file mode 100644 index 65c28b46..00000000 --- a/docs/docs/data/singleword.html +++ /dev/null @@ -1,126 +0,0 @@ -
    YAKE!
    Data

    SingleWord

    -

    The SingleWord class represents individual terms (words) in YAKE (Yet Another Keyword Extractor), providing statistical features used in keyword scoring.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class SingleWord:
    -    def __init__(self, unique, idx, graph):
    -        # Initialize a single word term with attributes and metrics
    -

    The SingleWord class tracks term frequency, position, and other statistical features that help determine the term's importance in the document.

    -

    Constructor

    -

    -

    Parameters:

    -
      -
    • unique (str): The unique term (normalized word form)
    • -
    • idx (int): Numeric identifier for the term
    • -
    • graph (networkx.DiGraph): Reference to the co-occurrence graph
    • -
    -

    Example:

    -
    import networkx as nx
    -from yake.datarepresentation import SingleWord
    - 
    -# Create a graph
    -g = nx.DiGraph()
    - 
    -# Initialize a single word
    -term = SingleWord("algorithm", 1, g)
    -

    Dictionary-Style Access

    -

    The SingleWord class supports dictionary-style attribute access for flexibility:

    -

    -

    Example:

    -
    # Dictionary-style access
    -term["wfreq"] = 2.5
    -score = term["h"]
    -position = term.get("wpos", 1.0)
    -

    Core Methods

    -

    -

    Properties

    -

    The SingleWord class provides property accessors for compatibility with direct attribute access:

    -

    Basic Properties

    -
      -
    • unique_term: The normalized form of the word
    • -
    • stopword: Boolean indicating if the term is a stopword
    • -
    • h: The final score of the term (lower is better in YAKE)
    • -
    • tf: Term frequency in the document
    • -
    • occurs: Dictionary of sentence occurrences
    • -
    -
    # Examples
    -word = term.unique_term
    -is_stopword = term.stopword
    -score = term.h
    -frequency = term.tf
    -occurrences = term.occurs
    -

    Feature Properties

    -
      -
    • wfreq: Word frequency metric
    • -
    • wcase: Word case metric (uppercase/proper noun)
    • -
    • wrel: Word relevance metric (based on graph connections)
    • -
    • wpos: Word position metric
    • -
    • wspread: Word spread across document
    • -
    • pl: Probability left (graph-based)
    • -
    • pr: Probability right (graph-based)
    • -
    -
    # Examples
    -frequency_metric = term.wfreq
    -case_metric = term.wcase
    -relevance = term.wrel
    -position_metric = term.wpos
    -spread_metric = term.wspread
    -left_probability = term.pl
    -right_probability = term.pr
    -

    Feature Calculation Logic

    -

    The SingleWord class calculates several features that contribute to keyword scoring:

    -

    Word Frequency (wfreq)

    -

    Measures how frequent the term is compared to the average document term frequency.

    -
    wfreq = term_frequency / (average_term_frequency + standard_deviation)
    -

    Word Case (wcase)

    -

    Represents the significance of capitalization in determining proper nouns and acronyms.

    -
    wcase = max(uppercase_freq, proper_noun_freq) / (1.0 + log(term_frequency))
    -

    Word Relevance (wrel)

    -

    Evaluates the term's importance based on its co-occurrence relationships.

    -
    wrel = (0.5 + (probability_weighted_left * (tf / max_tf))) + 
    -       (0.5 + (probability_weighted_right * (tf / max_tf)))
    -

    Word Position (wpos)

    -

    Considers the typical position of the word in sentences, with the intuition that important terms appear earlier.

    -
    wpos = log(log(3.0 + median_position_in_sentences))
    -

    Word Spread (wspread)

    -

    Measures how widely the term is distributed across the document's sentences.

    -
    wspread = number_of_sentences_with_term / total_number_of_sentences
    -

    Final Score Calculation

    -

    The final score (h) combines all metrics in a formula designed to rank candidate keywords:

    -
    h = (wpos * wrel) / (wcase + (wfreq / wrel) + (wspread / wrel))
    -

    Lower scores indicate better keyword candidates in YAKE's ranking system.

    -

    Usage Example

    -
    import networkx as nx
    -from yake.datarepresentation import SingleWord
    - 
    -# Create a graph for co-occurrence
    -g = nx.DiGraph()
    -g.add_node(1)
    - 
    -# Initialize a word
    -term = SingleWord("algorithm", 1, g)
    - 
    -# Add occurrences
    -term.add_occur("n", 0, 5, 5)  # In sentence 0, position 5
    -term.add_occur("n", 1, 2, 15) # In sentence 1, position 2
    - 
    -# Update the score with statistics
    -stats = {
    -    "max_tf": 10.0,
    -    "avg_tf": 3.0,
    -    "std_tf": 2.0,
    -    "number_of_sentences": 5
    -}
    -term.update_h(stats)
    - 
    -# Get the final score
    -print(f"Keyword score for 'algorithm': {term.h:.4f}")
    -

    Dependencies

    -

    The SingleWord class relies on:

    -
      -
    • math: For logarithmic calculations
    • -
    • numpy: For statistical operations (median)
    • -
    • networkx: Implicitly through the provided graph parameter
    • -
    \ No newline at end of file diff --git a/docs/docs/data/singleword.txt b/docs/docs/data/singleword.txt deleted file mode 100644 index eb4c8371..00000000 --- a/docs/docs/data/singleword.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","singleword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/singleword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/singleword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","tr4vhxH0kS7Q1lGGl0Y4u",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -47:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -48:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -49:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,3e:T5c0,3f:T5c0,40:T5c0,41:T5c0,42:T5c0,43:T5c0,44:T5c0,45:T5c0,46:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#singleword","title":"SingleWord"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#constructor","title":"Constructor"},{"depth":2,"url":"#dictionary-style-access","title":"Dictionary-Style Access"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#properties","title":"Properties"},{"depth":3,"url":"#basic-properties","title":"Basic Properties"},{"depth":3,"url":"#feature-properties","title":"Feature Properties"},{"depth":2,"url":"#feature-calculation-logic","title":"Feature Calculation Logic"},{"depth":3,"url":"#word-frequency-wfreq","title":["Word Frequency (",["$","code",null,{"children":"wfreq"}],")"]},{"depth":3,"url":"#word-case-wcase","title":["Word Case (",["$","code",null,{"children":"wcase"}],")"]},{"depth":3,"url":"#word-relevance-wrel","title":["Word Relevance (",["$","code",null,{"children":"wrel"}],")"]},{"depth":3,"url":"#word-position-wpos","title":["Word Position (",["$","code",null,{"children":"wpos"}],")"]},{"depth":3,"url":"#word-spread-wspread","title":["Word Spread (",["$","code",null,{"children":"wspread"}],")"]},{"depth":2,"url":"#final-score-calculation","title":"Final Score Calculation"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"singleword","children":[["$","a",null,{"data-card":"","href":"#singleword","className":"peer","children":"SingleWord"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class represents individual terms (words) in YAKE (Yet Another Keyword Extractor), providing statistical features used in keyword scoring."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" SingleWord"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, unique, idx, graph):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize a single word term with attributes and metrics"}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class tracks term frequency, position, and other statistical features that help determine the term's importance in the document."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"constructor","children":[["$","a",null,{"data-card":"","href":"#constructor","className":"peer","children":"Constructor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"init","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(unique, idx, graph)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, unique, idx, graph):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize a single word term with attributes and metrics.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" idx "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Fast access needed as it's used in graph operations"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Fast access needed for network calculations"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Basic information"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"unique_term\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": unique,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"stopword\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Final Score"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Term frequency statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Term frequency"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf_a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Term Frequency for uppercase words"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf_n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Term Frequency for proper nouns"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Word characteristic metrics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word frequency"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word case metric"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word relevance metric"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word position metric"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word spread across document"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Probability left"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Probability right"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pagerank\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# PageRank score"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Ocurrence tracking"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"occurs\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {}, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sentence Occurrences"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"unique"}]," (str): The unique term (normalized word form)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"idx"}]," (int): Numeric identifier for the term"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"graph"}]," (networkx.DiGraph): Reference to the co-occurrence graph"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" networkx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a graph"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"g "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx.DiGraph()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize a single word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"algorithm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", g)"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dictionary-style-access","children":[["$","a",null,{"data-card":"","href":"#dictionary-style-access","className":"peer","children":"Dictionary-Style Access"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class supports dictionary-style attribute access for flexibility:"]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"getitem","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"getitem"}],"(key)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __getitem__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, key):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Access attributes dictionary-style with obj['key'].\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data[key]"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"setitem","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"setitem"}],"(key, value)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __setitem__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, key, value):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Set attributes dictionary-style with obj['key'] = value.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data[key] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" value"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get(key, default=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, key, default"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get with default, mimicking dict.get().\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data.get(key, default)"}]]}]]}]}]}]}]]}]]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Dictionary-style access"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 2.5"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"add_occur","children":[["$","$L31",null,{"children":["$","code",null,{"children":"add_occur(tag, sent_id, pos_sent, pos_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" add_occur"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, tag, sent_id, pos_sent, pos_text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Add occurrence information.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sent_id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs[sent_id] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs[sent_id].append((pos_sent, pos_text))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_metric","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_metric(name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_metric"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get the value of any word metric.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data.get(name, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"set_metric","children":[["$","$L31",null,{"children":["$","code",null,{"children":"set_metric(name, value)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" set_metric"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, name, value):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Set the value of any word metric.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data[name] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" value"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_graph_metrics","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_graph_metrics()"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_graph_metrics"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate all graph-based metrics at once.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Out-edges metrics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdr "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.out_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wir "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(d["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (_, _, d) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.out_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"data"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pwr "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wir "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdr "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wir"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # In-edges metrics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdl "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.in_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wil "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(d["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (_, _, d) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.in_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"data"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pwl "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wil "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdl "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wil"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wdr, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wir\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wir, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": pwr, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wdl, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wil\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wil, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": pwl}"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"update_h","children":[["$","$L31",null,{"children":["$","code",null,{"children":"update_h(stats, features=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" update_h"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stats, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Update the word's score based on statistics.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"max_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" avg_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"avg_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" std_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"std_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" number_of_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get all graph metrics at once"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph_metrics "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_graph_metrics()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update metrics based on features"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf))) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf))"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (avg_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" std_tf)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" number_of_sentences"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" math.log("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" math.log("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" math.log("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.median("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs.keys())))"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate final score"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"properties","children":[["$","a",null,{"data-card":"","href":"#properties","className":"peer","children":"Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class provides property accessors for compatibility with direct attribute access:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-properties","children":[["$","a",null,{"data-card":"","href":"#basic-properties","className":"peer","children":"Basic Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"unique_term"}],": The normalized form of the word"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopword"}],": Boolean indicating if the term is a stopword"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"h"}],": The final score of the term (lower is better in YAKE)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tf"}],": Term frequency in the document"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"occurs"}],": Dictionary of sentence occurrences"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3e","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.unique_term"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"is_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"occurrences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.occurs"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"feature-properties","children":[["$","a",null,{"data-card":"","href":"#feature-properties","className":"peer","children":"Feature Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"wfreq"}],": Word frequency metric"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wcase"}],": Word case metric (uppercase/proper noun)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wrel"}],": Word relevance metric (based on graph connections)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wpos"}],": Word position metric"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wspread"}],": Word spread across document"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"pl"}],": Probability left (graph-based)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"pr"}],": Probability right (graph-based)"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3f","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"frequency_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wfreq"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"case_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wcase"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"relevance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wrel"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"position_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wpos"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"spread_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wspread"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"left_probability "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.pl"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"right_probability "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.pr"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"feature-calculation-logic","children":[["$","a",null,{"data-card":"","href":"#feature-calculation-logic","className":"peer","children":"Feature Calculation Logic"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class calculates several features that contribute to keyword scoring:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-frequency-wfreq","children":[["$","a",null,{"data-card":"","href":"#word-frequency-wfreq","className":"peer","children":["Word Frequency (",["$","code",null,{"children":"wfreq"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Measures how frequent the term is compared to the average document term frequency."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$40","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wfreq "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (average_term_frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" standard_deviation)"}]]}]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-case-wcase","children":[["$","a",null,{"data-card":"","href":"#word-case-wcase","className":"peer","children":["Word Case (",["$","code",null,{"children":"wcase"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Represents the significance of capitalization in determining proper nouns and acronyms."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$41","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wcase "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(uppercase_freq, proper_noun_freq) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" log(term_frequency))"}]]}]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-relevance-wrel","children":[["$","a",null,{"data-card":"","href":"#word-relevance-wrel","className":"peer","children":["Word Relevance (",["$","code",null,{"children":"wrel"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Evaluates the term's importance based on its co-occurrence relationships."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$42","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wrel "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (probability_weighted_left "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf))) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" "}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (probability_weighted_right "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf)))"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-position-wpos","children":[["$","a",null,{"data-card":"","href":"#word-position-wpos","className":"peer","children":["Word Position (",["$","code",null,{"children":"wpos"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Considers the typical position of the word in sentences, with the intuition that important terms appear earlier."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$43","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wpos "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" log(log("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" median_position_in_sentences))"}]]}]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-spread-wspread","children":[["$","a",null,{"data-card":"","href":"#word-spread-wspread","className":"peer","children":["Word Spread (",["$","code",null,{"children":"wspread"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Measures how widely the term is distributed across the document's sentences."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$44","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wspread "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" number_of_sentences_with_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" total_number_of_sentences"}]]}]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"final-score-calculation","children":[["$","a",null,{"data-card":"","href":"#final-score-calculation","className":"peer","children":"Final Score Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The final score (",["$","code",null,{"children":"h"}],") combines all metrics in a formula designed to rank candidate keywords:"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$45","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wpos "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wrel) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wcase "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wfreq "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wrel) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wspread "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wrel))"}]]}]}]}]}],"\n",["$","p",null,{"children":"Lower scores indicate better keyword candidates in YAKE's ranking system."}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$46","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" networkx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a graph for co-occurrence"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"g "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx.DiGraph()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"g.add_node("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize a word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"algorithm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", g)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Add occurrences"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.add_occur("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# In sentence 0, position 5"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.add_occur("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"15"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# In sentence 1, position 2"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Update the score with statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stats "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"max_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"avg_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"std_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.update_h(stats)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get the final score"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Keyword score for 'algorithm': "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.h"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"math"}],": For logarithmic calculations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For statistical operations (median)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"networkx"}],": Implicitly through the provided graph parameter"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L47",null,{"items":"$undefined"}]]}]]}],["$","$L48",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L49",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/utils.html b/docs/docs/data/utils.html deleted file mode 100644 index 0205ef81..00000000 --- a/docs/docs/data/utils.html +++ /dev/null @@ -1,102 +0,0 @@ -
    YAKE!
    Data

    Utils

    -

    The utils module provides essential text processing functions for YAKE (Yet Another Keyword Extractor), handling tokenization, normalization, and classification of textual elements.

    -
    -

    Info: This documentation provides interactive code views for each function. Click on a function name to view its implementation.

    -
    -

    Module Overview

    -
    """Utility functions for text processing."""
    - 
    -import re
    -from segtok.segmenter import split_multi
    -from segtok.tokenizer import web_tokenizer, split_contractions
    - 
    -STOPWORD_WEIGHT = "bi"
    -

    The utils module contains functions for text preprocessing, tokenization, and classification that support the keyword extraction pipeline.

    -

    Functions

    -

    -

    Function Descriptions

    -

    pre_filter

    -

    Normalizes text by handling line breaks and spacing to prepare for tokenization.

    -

    Parameters:

    -
      -
    • text (str): The input text to normalize
    • -
    -

    Returns:

    -
      -
    • str: Normalized text with standardized spacing and line breaks
    • -
    -

    Example:

    -
    from yake.utils import pre_filter
    - 
    -raw_text = "This is line one.\nThis is line two.\tAnd this has a tab."
    -normalized_text = pre_filter(raw_text)
    -print(normalized_text)
    -# Output: " This is line one. This is line two. And this has a tab."
    -

    tokenize_sentences

    -

    Splits text into sentences and then tokenizes each sentence into words, filtering out invalid tokens.

    -

    Parameters:

    -
      -
    • text (str): The input text to tokenize
    • -
    -

    Returns:

    -
      -
    • list: A nested list where each inner list contains the tokens of a sentence
    • -
    -

    Example:

    -
    from yake.utils import tokenize_sentences
    - 
    -text = "Hello world! This is a sample text. It has multiple sentences."
    -sentences = tokenize_sentences(text)
    -print(sentences)
    -# Output: [['Hello', 'world', '!'], ['This', 'is', 'a', 'sample', 'text', '.'], ['It', 'has', 'multiple', 'sentences', '.']]
    -

    get_tag

    -

    Classifies words based on their characteristics, assigning a tag for each word type.

    -

    Parameters:

    -
      -
    • word (str): The word to classify
    • -
    • i (int): The position of the word in its sentence
    • -
    • exclude (set): Set of characters to exclude from regular words
    • -
    -

    Returns:

    -
      -
    • str: A single character tag representing the word type: -
        -
      • "d": Digit/number
      • -
      • "u": Unusual combination (mixed alphanumeric or special characters)
      • -
      • "a": Acronym (all uppercase)
      • -
      • "n": Proper noun (capitalized word not at the beginning of a sentence)
      • -
      • "p": Plain word (default)
      • -
      -
    • -
    -

    Example:

    -
    from yake.utils import get_tag
    -import string
    - 
    -exclude = set(string.punctuation)
    - 
    -# Examples of different word classifications
    -print(get_tag("Hello", 0, exclude))  # Output: "p" (plain word)
    -print(get_tag("Hello", 3, exclude))  # Output: "n" (proper noun, capitalized not at sentence start)
    -print(get_tag("123", 0, exclude))    # Output: "d" (digit)
    -print(get_tag("NASA", 0, exclude))   # Output: "a" (acronym)
    -print(get_tag("test@example", 0, exclude))  # Output: "u" (unusual)
    -

    Module Constants

    -
      -
    • STOPWORD_WEIGHT (str): Default weighting scheme for stopwords, set to "bi"
    • -
    -

    Usage in YAKE Pipeline

    -

    The utility functions serve as foundation components for the YAKE keyword extraction process:

    -
      -
    1. pre_filter normalizes the input text
    2. -
    3. tokenize_sentences breaks the text into processable tokens
    4. -
    5. get_tag classifies each token for further analysis
    6. -
    -

    These functions are primarily used by the DataCore class to build the data representation needed for keyword extraction.

    -

    Dependencies

    -

    The utils module relies on:

    -
      -
    • re: For regular expression operations
    • -
    • segtok.segmenter: For sentence segmentation
    • -
    • segtok.tokenizer: For tokenization and contraction handling
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/utils.txt b/docs/docs/data/utils.txt deleted file mode 100644 index 9006c5eb..00000000 --- a/docs/docs/data/utils.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","utils"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/utils","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/utils","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","g6e_OIDW49VJw3tERUFnQ",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -39:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3a:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -3b:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#utils","title":"Utils"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#functions","title":"Functions"},{"depth":2,"url":"#function-descriptions","title":"Function Descriptions"},{"depth":3,"url":"#pre_filter","title":"pre_filter"},{"depth":3,"url":"#tokenize_sentences","title":"tokenize_sentences"},{"depth":3,"url":"#get_tag","title":"get_tag"},{"depth":2,"url":"#module-constants","title":"Module Constants"},{"depth":2,"url":"#usage-in-yake-pipeline","title":"Usage in YAKE Pipeline"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"utils","children":[["$","a",null,{"data-card":"","href":"#utils","className":"peer","children":"Utils"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"utils"}]," module provides essential text processing functions for YAKE (Yet Another Keyword Extractor), handling tokenization, normalization, and classification of textual elements."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each function. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Utility functions for text processing.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" segtok.segmenter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_multi"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" segtok.tokenizer "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" web_tokenizer, split_contractions"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"bi\""}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"utils"}]," module contains functions for text preprocessing, tokenization, and classification that support the keyword extraction pipeline."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"functions","children":[["$","a",null,{"data-card":"","href":"#functions","className":"peer","children":"Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"pre_filter","children":[["$","$L31",null,{"children":["$","code",null,{"children":"pre_filter(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" pre_filter"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Pre-filter the text to normalize line breaks and spacing.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prog "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.compile("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"^("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\\\"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s*([A-Z]))\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" parts "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" buffer "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" part "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" parts:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sep "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prog.match(part):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sep "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" buffer "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sep "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" part.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\t"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" buffer"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"tokenize_sentences","children":[["$","$L31",null,{"children":["$","code",null,{"children":"tokenize_sentences(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" tokenize_sentences"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Tokenize text into sentences and words.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_contractions(web_tokenizer(s))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (w.startswith("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" s "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(split_multi(text))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(s.strip()) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_tag","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_tag(word, i, exclude)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_tag"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word, i, exclude):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Determine the tag of a word based on its characteristics.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if word is numeric "}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\",\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").isdigit() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\",\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\".\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").isdigit():"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"d\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Use counting instead of list comprehensions for better performance"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cdigit "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c.isdigit() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" calpha "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c.isalpha() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cexclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" exclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check for unusual combinations"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (cdigit "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" calpha "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (cdigit "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" calpha "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cexclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"u\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check for ALL CAPS (acronym)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word.isupper() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"a\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check for Proper noun (capitalized)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].isupper() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Optimized check for single uppercase letter"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c.isupper() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"p\""}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"function-descriptions","children":[["$","a",null,{"data-card":"","href":"#function-descriptions","className":"peer","children":"Function Descriptions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"pre_filter","children":[["$","a",null,{"data-card":"","href":"#pre_filter","className":"peer","children":"pre_filter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Normalizes text by handling line breaks and spacing to prepare for tokenization."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The input text to normalize"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"str: Normalized text with standardized spacing and line breaks"}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.utils "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pre_filter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"raw_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"This is line one."}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"This is line two."}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\t"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"And this has a tab.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"normalized_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pre_filter(raw_text)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(normalized_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \" This is line one. This is line two. And this has a tab.\""}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"tokenize_sentences","children":[["$","a",null,{"data-card":"","href":"#tokenize_sentences","className":"peer","children":"tokenize_sentences"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Splits text into sentences and then tokenizes each sentence into words, filtering out invalid tokens."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The input text to tokenize"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A nested list where each inner list contains the tokens of a sentence"}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.utils "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenize_sentences"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Hello world! This is a sample text. It has multiple sentences.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenize_sentences(text)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(sentences)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: [['Hello', 'world', '!'], ['This', 'is', 'a', 'sample', 'text', '.'], ['It', 'has', 'multiple', 'sentences', '.']]"}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"get_tag","children":[["$","a",null,{"data-card":"","href":"#get_tag","className":"peer","children":"get_tag"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Classifies words based on their characteristics, assigning a tag for each word type."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word"}]," (str): The word to classify"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"i"}]," (int): The position of the word in its sentence"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"exclude"}]," (set): Set of characters to exclude from regular words"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":["str: A single character tag representing the word type:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"\"d\""}],": Digit/number"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"u\""}],": Unusual combination (mixed alphanumeric or special characters)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"a\""}],": Acronym (all uppercase)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"n\""}],": Proper noun (capitalized word not at the beginning of a sentence)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"p\""}],": Plain word (default)"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.utils "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" get_tag"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" string"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"exclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(string.punctuation)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples of different word classifications"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Hello\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"p\" (plain word)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Hello\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"n\" (proper noun, capitalized not at sentence start)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"123\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"d\" (digit)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"NASA\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"a\" (acronym)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"test@example\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"u\" (unusual)"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-constants","children":[["$","a",null,{"data-card":"","href":"#module-constants","className":"peer","children":"Module Constants"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"STOPWORD_WEIGHT"}]," (str): Default weighting scheme for stopwords, set to \"bi\""]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-in-yake-pipeline","children":[["$","a",null,{"data-card":"","href":"#usage-in-yake-pipeline","className":"peer","children":"Usage in YAKE Pipeline"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The utility functions serve as foundation components for the YAKE keyword extraction process:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"pre_filter"}]," normalizes the input text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tokenize_sentences"}]," breaks the text into processable tokens"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"get_tag"}]," classifies each token for further analysis"]}],"\n"]}],"\n",["$","p",null,{"children":["These functions are primarily used by the ",["$","code",null,{"children":"DataCore"}]," class to build the data representation needed for keyword extraction."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The utils module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"segtok.segmenter"}],": For sentence segmentation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"segtok.tokenizer"}],": For tokenization and contraction handling"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 1c3d83e4..00000000 --- a/docs/index.html +++ /dev/null @@ -1 +0,0 @@ -

    Hello

    Open /docs and see the documentation.

    \ No newline at end of file diff --git a/docs/index.txt b/docs/index.txt deleted file mode 100644 index e27c5752..00000000 --- a/docs/index.txt +++ /dev/null @@ -1,30 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"NavProvider"] -6:I[7110,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"Navbar"] -7:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"default"] -8:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"SearchToggle"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"LargeSearchToggle"] -a:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"ThemeToggle"] -b:I[5619,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"Menu"] -c:I[5619,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"MenuTrigger"] -d:I[5619,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"MenuContent"] -e:I[6874,["874","static/chunks/874-0cb5402bc7a91b88.js","813","static/chunks/app/(home)/page-ff294463e6438f3b.js"],""] -f:I[9665,[],"MetadataBoundary"] -11:I[9665,[],"OutletBoundary"] -14:I[4911,[],"AsyncMetadataOutlet"] -16:I[9665,[],"ViewportBoundary"] -18:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["",""],"i":false,"f":[[["",{"children":["(home)",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["(home)",["$","$1","c",{"children":[null,["$","$L5",null,{"transparentMode":"$undefined","children":["$","main",null,{"id":"nd-home-layout","children":[["$","$L6",null,{"children":[["$","$L7",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],"$undefined",["$","ul",null,{"className":"flex flex-row items-center gap-2 px-6 max-sm:hidden","children":[]}],["$","div",null,{"className":"flex flex-row items-center justify-end gap-1.5 flex-1","children":[["$","$L8",null,{"className":"lg:hidden","hideIfDisabled":true}],["$","$L9",null,{"className":"w-full max-w-[240px] max-lg:hidden","hideIfDisabled":true}],["$","$La",null,{"className":"max-lg:hidden","mode":"$undefined"}],null]}],["$","ul",null,{"className":"flex flex-row items-center","children":[[],["$","$Lb",null,{"className":"lg:hidden","children":[["$","$Lc",null,{"aria-label":"Toggle Menu","className":"group -me-2","enableHover":"$undefined","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-down size-3 transition-transform duration-300 group-data-[state=open]:rotate-180","aria-hidden":"true","children":[["$","path","qrunsl",{"d":"m6 9 6 6 6-6"}],"$undefined"]}]}],["$","$Ld",null,{"className":"sm:flex-row sm:items-center sm:justify-end","children":[[],["$","div",null,{"className":"-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$La",null,{"mode":"$undefined"}]]}]]}]]}]]}]]}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]],"className":"flex flex-1 flex-col pt-14"}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"className":"flex flex-1 flex-col justify-center text-center","children":[["$","h1",null,{"className":"mb-4 text-2xl font-bold","children":"Hello"}],["$","p",null,{"className":"text-fd-muted-foreground","children":["Open"," ",["$","$Le",null,{"href":"/docs","className":"text-fd-foreground font-semibold underline","children":"/docs"}]," ","and see the documentation."]}]]}],["$","$Lf",null,{"children":"$L10"}],null,["$","$L11",null,{"children":["$L12","$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","WzdSACzHwvrajktiygNPS",{"children":[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$18","$undefined"],"s":false,"S":true} -19:"$Sreact.suspense" -1a:I[4911,[],"AsyncMetadata"] -10:["$","$19",null,{"fallback":null,"children":["$","$L1a",null,{"promise":"$@1b"}]}] -13:null -17:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -12:null -1b:{"metadata":[],"error":null,"digest":"$undefined"} -15:{"metadata":"$1b:metadata","error":null,"digest":"$undefined"} diff --git a/strategy.ini b/docs/strategy.ini similarity index 100% rename from strategy.ini rename to docs/strategy.ini diff --git a/microsoft.gpg b/microsoft.gpg deleted file mode 100644 index 0cffae08d061d6ae8959b4442dd2dbce26c340e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G9O0SyFJF<6WN2mrt;hGAw>aTw8-&ZU0T;kCvj9-@p2hRX&3tKIp#mk44K zWSkQ%c4{HQA}s#tsn;1=(LHS^JIEF`F{wkR(&D>9o|7yP=~Y+NKK3;C`4axI=rYyq zrB<*k)BskBDEsDx5Yd^pAvz|*XxLN^Rs1tKcJz?E$yQpt@e`p4a|{c zMCET7wg8i5k#M`dMmXStEMdYRelqXC@i+Karv74@Qsaue67_2{MmJAUtPq zXLDs^b#iHRc|dJxV{&hEZ)S8ZV{dIfi2*eP69EDM9|ZzdF<6WO8v_Ol2?z%R0t6KT z2m=Ea0s#UZ0Rk6*0162Z>pqmNz7i?V8k-0IeXlDmy&evAAJ<zH{duFkO6N3 z&j)GB_6-&>FO*4L(_oK+UEBCNPtqruWb}jtrH<>>>>>> Stashed changes #basic libraries ruff==0.0.290 diff --git a/yake/datarepresentation.py b/yake/datarepresentation.py deleted file mode 100644 index a1a55f04..00000000 --- a/yake/datarepresentation.py +++ /dev/null @@ -1,916 +0,0 @@ -import re -import string -import math -import jellyfish - -from segtok.segmenter import split_multi -from segtok.tokenizer import web_tokenizer, split_contractions - -import networkx as nx -import numpy as np - -STOPWORD_WEIGHT = "bi" - - -class DataCore: - """ - Core data manager for keyword extraction that processes text and builds - data structures for keyword candidates. - - Implementation uses consolidated dictionaries to reduce the number of direct - instance attributes while maintaining the same functionality. - """ - def __init__(self, text, stopword_set, config=None): - """ - Initialize the DataCore object for keyword extraction. - - Args: - text (str): The input text to process. - stopword_set (set): Set of stopwords to use. - config (dict, optional): Configuration parameters including: - - windows_size (int): Size of sliding window for co-occurrence analysis. - - n (int): Maximum n-gram size. - - tags_to_discard (set): Tags to exclude (default: {'u', 'd'}). - - exclude (set): Characters to exclude (default: string.punctuation). - """ - # Initialize default configuration - if config is None: - config = {} - - # Extract configuration values with defaults - windows_size = config.get("windows_size", 2) - n = config.get("n", 3) - tags_to_discard = config.get("tags_to_discard", set(["u", "d"])) - exclude = config.get("exclude", set(string.punctuation)) - - # Consolidate all settings into a single _state dictionary - # This reduces the instance attribute count significantly - self._state = { - # Configuration - "config": { - "exclude": exclude, - "tags_to_discard": tags_to_discard, - "stopword_set": stopword_set # Moved here from direct attribute - }, - - # Text analysis results - "text_stats": { - "number_of_sentences": 0, - "number_of_words": 0 - }, - - # Data collections - "collections": { - "terms": {}, # Dictionary of term objects - "candidates": {}, # Dictionary of candidate objects - "sentences_obj": [], # Processed sentence objects - "sentences_str": [], # Raw sentence strings - "freq_ns": {} # Frequency of n-grams - }, - - # Graph for co-occurrence analysis - "g": nx.DiGraph() # Moved here from direct attribute - } - - # Initialize n-gram frequencies - for i in range(n): - self._state["collections"]["freq_ns"][i + 1] = 0.0 - - # Build the data structures - self._build(text, windows_size, n) - - # --- Property accessors for backward compatibility --- - - # Configuration properties - @property - def exclude(self): - return self._state["config"]["exclude"] - - @property - def tags_to_discard(self): - return self._state["config"]["tags_to_discard"] - - @property - def stopword_set(self): - return self._state["config"]["stopword_set"] - - @property - def g(self): - return self._state["g"] - - # Text statistics properties - @property - def number_of_sentences(self): - return self._state["text_stats"]["number_of_sentences"] - - @number_of_sentences.setter - def number_of_sentences(self, value): - self._state["text_stats"]["number_of_sentences"] = value - - @property - def number_of_words(self): - return self._state["text_stats"]["number_of_words"] - - @number_of_words.setter - def number_of_words(self, value): - self._state["text_stats"]["number_of_words"] = value - - # Collection properties - @property - def terms(self): - return self._state["collections"]["terms"] - - @property - def candidates(self): - return self._state["collections"]["candidates"] - - @property - def sentences_obj(self): - return self._state["collections"]["sentences_obj"] - - @property - def sentences_str(self): - return self._state["collections"]["sentences_str"] - - @sentences_str.setter - def sentences_str(self, value): - self._state["collections"]["sentences_str"] = value - - @property - def freq_ns(self): - return self._state["collections"]["freq_ns"] - - # --- Internal utility methods --- - def _build(self, text, windows_size, n): - """ - Build the datacore features by processing text and extracting data structures. - - Args: - text (str): The text to process - windows_size (int): Size of sliding window for co-occurrence analysis - n (int): Maximum n-gram size - """ - text = self._pre_filter(text) - self.sentences_str = self._tokenize_sentences(text) - self.number_of_sentences = len(self.sentences_str) - pos_text = 0 - - # Create a processing context dictionary to pass fewer arguments - context = {"windows_size": windows_size, "n": n} - - for sentence_id, sentence in enumerate(self.sentences_str): - pos_text = self._process_sentence(sentence, sentence_id, pos_text, context) - self.number_of_words = pos_text - - # --- Changed public methods to protected (prefixed with underscore) --- - # This reduces the public method count - - def _tokenize_sentences(self, text): - """Tokenize text into sentences and words.""" - return [ - [ - w - for w in split_contractions(web_tokenizer(s)) - if not (w.startswith("'") and len(w) > 1) and len(w) > 0 - ] - for s in list(split_multi(text)) - if len(s.strip()) > 0 - ] - - def _process_sentence(self, sentence, sentence_id, pos_text, context): - """Process a single sentence.""" - sentence_obj_aux = [] - block_of_word_obj = [] - - # Extend the context with sentence information - processing_context = context.copy() - processing_context["sentence_id"] = sentence_id - - for pos_sent, word in enumerate(sentence): - if len([c for c in word if c in self.exclude]) == len(word): - if len(block_of_word_obj) > 0: - sentence_obj_aux.append(block_of_word_obj) - block_of_word_obj = [] - else: - word_context = { - "pos_sent": pos_sent, - "block_of_word_obj": block_of_word_obj, - } - pos_text = self._process_word( - word, pos_text, processing_context, word_context - ) - - if len(block_of_word_obj) > 0: - sentence_obj_aux.append(block_of_word_obj) - if len(sentence_obj_aux) > 0: - self.sentences_obj.append(sentence_obj_aux) - return pos_text - - def _process_word(self, word, pos_text, context, word_context): - """Process a single word.""" - sentence_id = context["sentence_id"] - windows_size = context["windows_size"] - n = context["n"] - pos_sent = word_context["pos_sent"] - block_of_word_obj = word_context["block_of_word_obj"] - - tag = self.get_tag(word, pos_sent) - term_obj = self.get_term(word) - term_obj.add_occur(tag, sentence_id, pos_sent, pos_text) - pos_text += 1 - if tag not in self.tags_to_discard: - self._update_cooccurrence(block_of_word_obj, term_obj, windows_size) - self._generate_candidates((tag, word), term_obj, block_of_word_obj, n) - block_of_word_obj.append((tag, word, term_obj)) - return pos_text - - def _update_cooccurrence(self, block_of_word_obj, term_obj, windows_size): - """Update co-occurrence information between terms.""" - word_windows = list( - range(max(0, len(block_of_word_obj) - windows_size), len(block_of_word_obj)) - ) - for w in word_windows: - if block_of_word_obj[w][0] not in self.tags_to_discard: - self.add_cooccur(block_of_word_obj[w][2], term_obj) - - def _generate_candidates(self, term, term_obj, block_of_word_obj, n): - """Generate keyword candidates from terms.""" - candidate = [term + (term_obj,)] - cand = ComposedWord(candidate) - self.add_or_update_composedword(cand) - word_windows = list( - range(max(0, len(block_of_word_obj) - (n - 1)), len(block_of_word_obj)) - )[::-1] - for w in word_windows: - candidate.append(block_of_word_obj[w]) - self.freq_ns[len(candidate)] += 1.0 - cand = ComposedWord(candidate[::-1]) - self.add_or_update_composedword(cand) - - def _pre_filter(self, text): - """Pre-filter the text to normalize line breaks and spacing.""" - prog = re.compile("^(\\s*([A-Z]))") - parts = text.split("\n") - buffer = "" - for part in parts: - sep = " " - if prog.match(part): - sep = "\n\n" - buffer += sep + part.replace("\t", " ") - return buffer - - # --- Public API methods (kept public) --- - - def build_candidate(self, candidate_string): - """ - Build a candidate from a string by tokenizing and processing its words. - - Args: - candidate_string (str): The string to build a candidate from. - - Returns: - ComposedWord: A virtual candidate object constructed from the processed terms. - """ - tokenized_words = [ - w - for w in split_contractions(web_tokenizer(candidate_string.lower())) - if not (w.startswith("'") and len(w) > 1) and len(w) > 0 - ] - - candidate_terms = [] - for index, word in enumerate(tokenized_words): - tag = self.get_tag(word, index) - term_obj = self.get_term(word, save_non_seen=False) - - # Skip terms with zero term frequency - if term_obj.tf == 0: - term_obj = None - - candidate_terms.append((tag, word, term_obj)) - - # Check if the candidate has any valid terms - if not any(term[2] for term in candidate_terms): - return ComposedWord(None) - - return ComposedWord(candidate_terms) - - def build_single_terms_features(self, features=None): - """Build features for single terms.""" - valid_terms = [term for term in self.terms.values() if not term.stopword] - valid_tfs = np.array([x.tf for x in valid_terms]) - - if len(valid_tfs) == 0: - return - - avg_tf = valid_tfs.mean() - std_tf = valid_tfs.std() - max_tf = max(x.tf for x in self.terms.values()) - stats = { - "max_tf": max_tf, - "avg_tf": avg_tf, - "std_tf": std_tf, - "number_of_sentences": self.number_of_sentences, - } - list(map(lambda x: x.update_h(stats, features=features), self.terms.values())) - - def build_mult_terms_features(self, features=None): - """Build features for multi-word terms.""" - list( - map( - lambda x: x.update_h(features=features), - [cand for cand in self.candidates.values() if cand.is_valid()], - ) - ) - - def get_tag(self, word, i): - """ - Determine the tag for a word based on its characteristics. - - Args: - word (str): The word to analyze. - i (int): The position of the word. - - Returns: - str: The tag assigned to the word ('d', 'u', 'a', 'n', or 'p'). - """ - try: - w2 = word.replace(",", "") - float(w2) - return "d" - except ValueError: - cdigit = len([c for c in word if c.isdigit()]) - calpha = len([c for c in word if c.isalpha()]) - if ( - (cdigit > 0 and calpha > 0) - or (cdigit == 0 and calpha == 0) - or len([c for c in word if c in self.exclude]) > 1 - ): - return "u" - if len(word) == len([c for c in word if c.isupper()]): - return "a" - if ( - len([c for c in word if c.isupper()]) == 1 - and len(word) > 1 - and word[0].isupper() - and i > 0 - ): - return "n" - return "p" - - def get_term(self, str_word, save_non_seen=True): - """ - Get or create a term object for a word. - - Args: - str_word (str): The word to get a term for. - save_non_seen (bool, optional): Whether to save new terms. Defaults to True. - - Returns: - SingleWord: The term object for the word. - """ - unique_term = str_word.lower() - simples_sto = unique_term in self.stopword_set - if unique_term.endswith("s") and len(unique_term) > 3: - unique_term = unique_term[:-1] - - if unique_term in self.terms: - return self.terms[unique_term] - - simples_unique_term = unique_term - for pontuation in self.exclude: - simples_unique_term = simples_unique_term.replace(pontuation, "") - isstopword = ( - simples_sto - or unique_term in self.stopword_set - or len(simples_unique_term) < 3 - ) - - term_id = len(self.terms) - term_obj = SingleWord(unique_term, term_id, self.g) - term_obj.stopword = isstopword - - if save_non_seen: - self.g.add_node(term_id) - self.terms[unique_term] = term_obj - - return term_obj - - def add_cooccur(self, left_term, right_term): - """Add a co-occurrence relationship between two terms.""" - if right_term.id not in self.g[left_term.id]: - self.g.add_edge(left_term.id, right_term.id, tf=0.0) - self.g[left_term.id][right_term.id]["tf"] += 1.0 - - def add_or_update_composedword(self, cand): - """Add or update a composed word in the candidates collection.""" - if cand.unique_kw not in self.candidates: - self.candidates[cand.unique_kw] = cand - else: - self.candidates[cand.unique_kw].uptade_cand(cand) - self.candidates[cand.unique_kw].tf += 1.0 - - -class ComposedWord: - """ - Class representing a composed word (multi-word term) in the document. - - Implementation uses a minimalist approach with minimal direct attributes, - using a data dictionary for storing most properties to reduce the total - attribute count while maintaining backward compatibility. - """ - - def __init__(self, terms): # [ (tag, word, term_obj) ] - # If terms is None, initialize an invalid candidate - if terms is None: - self.data = { - "start_or_end_stopwords": True, - "tags": set(), - "h": 0.0, - "tf": 0.0, - "kw": "", - "unique_kw": "", - "size": 0, - "terms": [], - "integrity": 0.0, - } - return - - # Basic initialization from terms - self.data = {} - - # Calculate derived properties - self.data["tags"] = set(["".join([w[0] for w in terms])]) - self.data["kw"] = " ".join([w[1] for w in terms]) - self.data["unique_kw"] = self.data["kw"].lower() - self.data["size"] = len(terms) - self.data["terms"] = [w[2] for w in terms if w[2] is not None] - self.data["tf"] = 0.0 - self.data["integrity"] = 1.0 - self.data["h"] = 1.0 - - # Check if the candidate starts or ends with stopwords - if len(self.data["terms"]) > 0: - self.data["start_or_end_stopwords"] = ( - self.data["terms"][0].stopword or self.data["terms"][-1].stopword - ) - else: - self.data["start_or_end_stopwords"] = True - - # Property accessors for backward compatibility - @property - def tags(self): - return self.data["tags"] - - @property - def kw(self): - return self.data["kw"] - - @property - def unique_kw(self): - return self.data["unique_kw"] - - @property - def size(self): - return self.data["size"] - - @property - def terms(self): - return self.data["terms"] - - @property - def tf(self): - return self.data["tf"] - - @tf.setter - def tf(self, value): - self.data["tf"] = value - - @property - def integrity(self): - return self.data["integrity"] - - @property - def h(self): - return self.data["h"] - - @h.setter - def h(self, value): - self.data["h"] = value - - @property - def start_or_end_stopwords(self): - return self.data["start_or_end_stopwords"] - - def uptade_cand(self, cand): - """Update this candidate with data from another candidate.""" - for tag in cand.tags: - self.tags.add(tag) - - def is_valid(self): - """Check if this candidate is valid.""" - is_valid = False - for tag in self.tags: - is_valid = is_valid or ("u" not in tag and "d" not in tag) - return is_valid and not self.start_or_end_stopwords - - def get_composed_feature(self, feature_name, discart_stopword=True): - """Get composed features from constituent terms.""" - list_of_features = [ - getattr(term, feature_name) - for term in self.terms - if (discart_stopword and not term.stopword) or not discart_stopword - ] - sum_f = sum(list_of_features) - prod_f = np.prod(list_of_features) - return (sum_f, prod_f, prod_f / (sum_f + 1)) - - def build_features(self, params): - """ - Build features for the composed word. - - Args: - params (dict): Dictionary containing the following keys: - - doc_id (optional): Document ID. - - keys (optional): List of keys. - - rel (optional): Boolean indicating relevance. - - rel_approx (optional): Boolean indicating approximate relevance. - """ - # Function implementation remains the same - # Only changes needed are for accessing attributes through self.data - features = params.get( - "features", ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] - ) - _stopword = params.get("_stopword", [True, False]) - if features is None: - features = ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] - if _stopword is None: - _stopword = [True, False] - columns = [] - features_cand = [] - seen = set() - if params.get("doc_id") is not None: - columns.append("doc_id") - features_cand.append(params["doc_id"]) - - if params.get("keys") is not None: - if params.get("rel", True): - columns.append("rel") - if self.unique_kw in params["keys"] or params.get("is_virtual", False): - features_cand.append(1) - seen.add(self.unique_kw) - else: - features_cand.append(0) - - if params.get("rel_approx", True): - columns.append("rel_approx") - max_gold_ = ("", 0.0) - for gold_key in params["keys"]: - dist = 1.0 - jellyfish.levenshtein_distance( - # _tL - gold_key, - self.unique_kw, - ) / max(len(gold_key), len(self.unique_kw)) - max_gold_ = (gold_key, dist) - features_cand.append(max_gold_[1]) - features_cand.append(max_gold_[1]) - - columns.append("kw") - features_cand.append(self.unique_kw) - columns.append("h") - features_cand.append(self.h) - columns.append("tf") - features_cand.append(self.tf) - columns.append("size") - features_cand.append(self.size) - columns.append("is_virtual") - columns.append("is_virtual") - features_cand.append(int(params.get("is_virtual", False))) - for feature_name in features: - for discart_stopword in _stopword: - (f_sum, f_prod, f_sum_prod) = self.get_composed_feature( - feature_name, discart_stopword=discart_stopword - ) - columns.append( - f"{'n' if discart_stopword else ''}s_sum_K{feature_name}" - ) - features_cand.append(f_sum) - - columns.append( - f"{'n' if discart_stopword else ''}s_prod_K{feature_name}" - ) - features_cand.append(f_prod) - - columns.append( - f"{'n' if discart_stopword else ''}s_sum_prod_K{feature_name}" - ) - features_cand.append(f_sum_prod) - - return (features_cand, columns, seen) - - def update_h(self, features=None, is_virtual=False): - """Update the term's score based on its constituent terms.""" - sum_h = 0.0 - prod_h = 1.0 - - for t, term_base in enumerate(self.terms): - if not term_base.stopword: - sum_h += term_base.h - prod_h *= term_base.h - - else: - if STOPWORD_WEIGHT == "bi": - prob_t1 = 0.0 - if t > 0 and term_base.g.has_edge( - self.terms[t - 1].id, self.terms[t].id - ): - prob_t1 = ( - term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] - / self.terms[t - 1].tf - ) - prob_t2 = 0.0 - if t < len(self.terms) - 1 and term_base.g.has_edge( - self.terms[t].id, self.terms[t + 1].id - ): - prob_t2 = ( - term_base.g[self.terms[t].id][self.terms[t + 1].id]["tf"] - / self.terms[t + 1].tf - ) - - prob = prob_t1 * prob_t2 - prod_h *= 1 + (1 - prob) - sum_h -= 1 - prob - elif STOPWORD_WEIGHT == "h": - sum_h += term_base.h - prod_h *= term_base.h - elif STOPWORD_WEIGHT == "none": - pass - - tf_used = 1.0 - if features is None or "KPF" in features: - tf_used = self.tf - - if is_virtual: - tf_used = np.mean([term_obj.tf for term_obj in self.terms]) - - self.h = prod_h / ((sum_h + 1) * tf_used) - - def update_h_old(self, features=None, is_virtual=False): - """Legacy method for updating the term's score.""" - sum_h = 0.0 - prod_h = 1.0 - - for t, term_base in enumerate(self.terms): - if is_virtual and term_base.tf == 0: - continue - - if term_base.stopword: - prob_t1 = 0.0 - if term_base.g.has_edge(self.terms[t - 1].id, self.terms[t].id): - prob_t1 = ( - term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] - / self.terms[t - 1].tf - ) - - prob_t2 = 0.0 - if term_base.g.has_edge(self.terms[t].id, self.terms[t + 1].id): - prob_t2 = ( - term_base.g[self.terms[t].id][self.terms[t + 1].id]["tf"] - / self.terms[t + 1].tf - ) - - prob = prob_t1 * prob_t2 - prod_h *= 1 + (1 - prob) - sum_h -= 1 - prob - else: - sum_h += term_base.h - prod_h *= term_base.h - tf_used = 1.0 - if features is None or "KPF" in features: - tf_used = self.tf - if is_virtual: - tf_used = np.mean([term_obj.tf for term_obj in self.terms]) - self.h = prod_h / ((sum_h + 1) * tf_used) - - -class SingleWord: - """ - Class representing a single word in the document text with its associated metrics. - - Implementation uses a minimalist approach with only three instance attributes: - - id: The word's identifier in the graph - - g: Reference to the graph - - data: A consolidated dictionary containing all other attributes - - All access to word properties is through property accessors or dictionary methods, - maintaining backward compatibility with previous implementations. - """ - - def __init__(self, unique, idx, graph): - # Keep only the absolute minimum as direct attributes - just these 3 - self.id = idx # Fast access needed as it's used in graph operations - self.g = graph # Fast access needed for network calculations - - # Everything else goes in the data dictionary - no exceptions - self.data = { - # Basic information - "unique_term": unique, - "stopword": False, - "h": 0.0, # Final Score - # Term frequency statistics - "tf": 0.0, # Term frequency - "tf_a": 0.0, # Term Frequency for uppercase words - "tf_n": 0.0, # Term Frequency for proper nouns - # Word characteristic metrics - "wfreq": 0.0, # Word frequency - "wcase": 0.0, # Word case metric - "wrel": 1.0, # Word relevance metric - "wpos": 1.0, # Word position metric - "wspread": 0.0, # Word spread across document - "pl": 0.0, # Probability left - "pr": 0.0, # Probability right - "pagerank": 1.0, # PageRank score - # Ocurrence tracking - "occurs": {}, # Sentence Occurrences - } - - # Forward common dictionary operations to self.data - def __getitem__(self, key): - """Access attributes dictionary-style with obj['key'].""" - return self.data[key] - - def __setitem__(self, key, value): - """Set attributes dictionary-style with obj['key'] = value.""" - self.data[key] = value - - def get(self, key, default=None): - """Get with default, mimicking dict.get().""" - return self.data.get(key, default) - - # The most commonly used properties remain as explicit accessors for backward compatibility - @property - def unique_term(self): - return self.data["unique_term"] - - @property - def stopword(self): - return self.data["stopword"] - - @stopword.setter - def stopword(self, value): - self.data["stopword"] = value - - @property - def h(self): - return self.data["h"] - - @h.setter - def h(self, value): - self.data["h"] = value - - @property - def tf(self): - return self.data["tf"] - - @tf.setter - def tf(self, value): - self.data["tf"] = value - - @property - def occurs(self): - return self.data["occurs"] - - # Everything else uses the generic accessor methods - def get_metric(self, name): - """Get the value of any word metric.""" - return self.data.get(name, 0.0) - - def set_metric(self, name, value): - """Set the value of any word metric.""" - self.data[name] = value - - def get_graph_metrics(self): - """Calculate all graph-based metrics at once.""" - # Out-edges metrics - wdr = len(self.g.out_edges(self.id)) - wir = sum(d["tf"] for (_, _, d) in self.g.out_edges(self.id, data=True)) - pwr = 0 if wir == 0 else wdr / wir - - # In-edges metrics - wdl = len(self.g.in_edges(self.id)) - wil = sum(d["tf"] for (_, _, d) in self.g.in_edges(self.id, data=True)) - pwl = 0 if wil == 0 else wdl / wil - - return {"wdr": wdr, "wir": wir, "pwr": pwr, "wdl": wdl, "wil": wil, "pwl": pwl} - - def update_h(self, stats, features=None): - """Update the word's score based on statistics.""" - max_tf = stats["max_tf"] - avg_tf = stats["avg_tf"] - std_tf = stats["std_tf"] - number_of_sentences = stats["number_of_sentences"] - - # Get all graph metrics at once - graph_metrics = self.get_graph_metrics() - - # Update metrics based on features - if features is None or "wrel" in features: - self.data["pl"] = graph_metrics["wdl"] / max_tf - self.data["pr"] = graph_metrics["wdr"] / max_tf - self.data["wrel"] = (0.5 + (graph_metrics["pwl"] * (self.tf / max_tf))) + ( - 0.5 + (graph_metrics["pwr"] * (self.tf / max_tf)) - ) - - if features is None or "wfreq" in features: - self.data["wfreq"] = self.tf / (avg_tf + std_tf) - - if features is None or "wspread" in features: - self.data["wspread"] = len(self.occurs) / number_of_sentences - - if features is None or "wcase" in features: - self.data["wcase"] = max(self.data["tf_a"], self.data["tf_n"]) / ( - 1.0 + math.log(self.tf) - ) - - if features is None or "wpos" in features: - self.data["wpos"] = math.log( - math.log(3.0 + np.median(list(self.occurs.keys()))) - ) - - # Calculate final score - self.data["h"] = (self.data["wpos"] * self.data["wrel"]) / ( - self.data["wcase"] - + (self.data["wfreq"] / self.data["wrel"]) - + (self.data["wspread"] / self.data["wrel"]) - ) - - def add_occur(self, tag, sent_id, pos_sent, pos_text): - """Add occurrence information.""" - if sent_id not in self.occurs: - self.occurs[sent_id] = [] - - self.occurs[sent_id].append((pos_sent, pos_text)) - self.data["tf"] += 1.0 - - if tag == "a": - self.data["tf_a"] += 1.0 - if tag == "n": - self.data["tf_n"] += 1.0 - - # For backward compatibility, define access to common metrics as properties - # Not necessary but good practice to maintain consistency with other classes - - @property - def wfreq(self): - return self.data["wfreq"] - - @wfreq.setter - def wfreq(self, value): - self.data["wfreq"] = value - - @property - def wcase(self): - return self.data["wcase"] - - @wcase.setter - def wcase(self, value): - self.data["wcase"] = value - - @property - def wrel(self): - return self.data["wrel"] - - @wrel.setter - def wrel(self, value): - self.data["wrel"] = value - - @property - def wpos(self): - return self.data["wpos"] - - @wpos.setter - def wpos(self, value): - self.data["wpos"] = value - - @property - def wspread(self): - return self.data["wspread"] - - @wspread.setter - def wspread(self, value): - self.data["wspread"] = value - - @property - def pl(self): - return self.data["pl"] - - @pl.setter - def pl(self, value): - self.data["pl"] = value - - @property - def pr(self): - return self.data["pr"] - - @pr.setter - def pr(self, value): - self.data["pr"] = value From 6c2c99b9bf7e258c92ee3af82607629d97f3e956 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 19:13:26 +0100 Subject: [PATCH 062/118] =?UTF-8?q?workflow=20para=20atualiza=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20site?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 30 ++++++++++++++++++++++++++++++ docs-site/next.config.mjs | 12 ++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..a0a11702 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,30 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - core-seperation # ou master, dependendo da sua branch principal + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' # ou a versão que você usa + + - name: Install dependencies + run: npm ci # ou yarn install --frozen-lockfile + + - name: Build + run: npm run build # ou yarn build + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: out # pasta gerada pela build do Next.js + branch: gh-pages # branch onde será publicado \ No newline at end of file diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index 201541a6..bce42b67 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -5,7 +5,15 @@ const withMDX = createMDX(); /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, - output: 'export', + output: 'export', + // Configuração para GitHub Pages + basePath: process.env.NODE_ENV === 'production' ? '/yakerf' : '', + // Para garantir que as imagens sejam exportadas corretamente para páginas estáticas + images: { + unoptimized: true, + }, + // Desabilitar trailing slash para compatibilidade com GitHub Pages + trailingSlash: false, }; -export default withMDX(config); +export default withMDX(config); \ No newline at end of file From b89da6b6026161a0d8216cad84aedb34752e97c9 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 20:47:09 +0100 Subject: [PATCH 063/118] Update deploy.yml --- .github/workflows/deploy.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a0a11702..4b953247 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,7 +3,7 @@ name: Deploy to GitHub Pages on: push: branches: - - core-seperation # ou master, dependendo da sua branch principal + - main # ou master, dependendo da sua branch principal jobs: build-and-deploy: @@ -18,13 +18,17 @@ jobs: node-version: '18' # ou a versão que você usa - name: Install dependencies - run: npm ci # ou yarn install --frozen-lockfile + run: | + cd docs-site + npm ci - name: Build - run: npm run build # ou yarn build + run: | + cd docs-site + npm run build - name: Deploy uses: JamesIves/github-pages-deploy-action@v4 with: - folder: out # pasta gerada pela build do Next.js - branch: gh-pages # branch onde será publicado \ No newline at end of file + folder: docs-site/out # pasta gerada pela build do Next.js dentro do diretório docs-site + branch: gh-pages # branch onde será publicado \ No newline at end of file From 345ed66de0dcc93877b6298b163074612471fa67 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 20:49:17 +0100 Subject: [PATCH 064/118] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4b953247..1df76b75 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,7 +3,7 @@ name: Deploy to GitHub Pages on: push: branches: - - main # ou master, dependendo da sua branch principal + - core-seperation # ou master, dependendo da sua branch principal jobs: build-and-deploy: From 825ec7618f48c732182496b8c8d4ed51a71e15c1 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 21:05:27 +0100 Subject: [PATCH 065/118] ccs do site --- .github/workflows/deploy.yml | 14 +++++++++----- docs-site/.nojekyll | 0 docs-site/app/config.ts | 2 ++ docs-site/app/docs/layout.tsx | 33 ++++++++++++++++++++++++--------- docs-site/next.config.mjs | 6 ++++-- 5 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 docs-site/.nojekyll create mode 100644 docs-site/app/config.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1df76b75..23744a24 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,16 +19,20 @@ jobs: - name: Install dependencies run: | - cd docs-site - npm ci + cd docs-site # Ajuste conforme necessário + npm ci - name: Build run: | - cd docs-site + cd docs-site # Ajuste conforme necessário npm run build + - name: Create .nojekyll file + run: | + touch docs-site/out/.nojekyll # Ajuste conforme necessário + - name: Deploy uses: JamesIves/github-pages-deploy-action@v4 with: - folder: docs-site/out # pasta gerada pela build do Next.js dentro do diretório docs-site - branch: gh-pages # branch onde será publicado \ No newline at end of file + folder: docs-site/out # Ajuste conforme necessário + branch: gh-pages \ No newline at end of file diff --git a/docs-site/.nojekyll b/docs-site/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/docs-site/app/config.ts b/docs-site/app/config.ts new file mode 100644 index 00000000..f4f1e199 --- /dev/null +++ b/docs-site/app/config.ts @@ -0,0 +1,2 @@ +// app/config.ts +export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf' : ''; \ No newline at end of file diff --git a/docs-site/app/docs/layout.tsx b/docs-site/app/docs/layout.tsx index a91d5585..aca59ae0 100644 --- a/docs-site/app/docs/layout.tsx +++ b/docs-site/app/docs/layout.tsx @@ -1,12 +1,27 @@ -import { DocsLayout } from 'fumadocs-ui/layouts/docs'; -import type { ReactNode } from 'react'; -import { baseOptions } from '@/app/layout.config'; -import { source } from '@/lib/source'; +import { Metadata } from 'next'; +import { basePath } from '../config'; +import './global.css'; -export default function Layout({ children }: { children: ReactNode }) { +export const metadata: Metadata = { + title: { + template: '%s | YAKE!', + default: 'YAKE! Documentation', + }, + description: 'Documentation for YAKE!', + // Ajuste para caminhos absolutos que respeitam o basePath + icons: { + icon: `${basePath}/favicon.ico`, + }, +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { return ( - - {children} - + + {children} + ); -} +} \ No newline at end of file diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index bce42b67..2ad51a02 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -2,13 +2,15 @@ import { createMDX } from 'fumadocs-mdx/next'; const withMDX = createMDX(); +const REPO_NAME = 'yakerf'; // Substitua pelo nome exato do seu repositório + /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, output: 'export', // Configuração para GitHub Pages - basePath: process.env.NODE_ENV === 'production' ? '/yakerf' : '', - // Para garantir que as imagens sejam exportadas corretamente para páginas estáticas + basePath: process.env.NODE_ENV === 'production' ? `/${REPO_NAME}` : '', + assetPrefix: process.env.NODE_ENV === 'production' ? `/${REPO_NAME}/` : '', images: { unoptimized: true, }, From d52b8b75d68863e715886837058920cfd9048da9 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 6 May 2025 10:17:11 +0100 Subject: [PATCH 066/118] updated layout --- docs-site/app/docs/layout.tsx | 33 +++++++++------------------------ docs-site/app/layout.tsx | 21 +++++++++++++++++++-- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/docs-site/app/docs/layout.tsx b/docs-site/app/docs/layout.tsx index aca59ae0..a91d5585 100644 --- a/docs-site/app/docs/layout.tsx +++ b/docs-site/app/docs/layout.tsx @@ -1,27 +1,12 @@ -import { Metadata } from 'next'; -import { basePath } from '../config'; -import './global.css'; +import { DocsLayout } from 'fumadocs-ui/layouts/docs'; +import type { ReactNode } from 'react'; +import { baseOptions } from '@/app/layout.config'; +import { source } from '@/lib/source'; -export const metadata: Metadata = { - title: { - template: '%s | YAKE!', - default: 'YAKE! Documentation', - }, - description: 'Documentation for YAKE!', - // Ajuste para caminhos absolutos que respeitam o basePath - icons: { - icon: `${basePath}/favicon.ico`, - }, -}; - -export default function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { +export default function Layout({ children }: { children: ReactNode }) { return ( - - {children} - + + {children} + ); -} \ No newline at end of file +} diff --git a/docs-site/app/layout.tsx b/docs-site/app/layout.tsx index 9b67cddf..c254732d 100644 --- a/docs-site/app/layout.tsx +++ b/docs-site/app/layout.tsx @@ -1,13 +1,30 @@ +import { Metadata } from 'next'; +import { basePath } from './config'; import './global.css'; + import { RootProvider } from 'fumadocs-ui/provider'; import { Inter } from 'next/font/google'; -import type { ReactNode } from 'react'; const inter = Inter({ subsets: ['latin'], }); -export default function Layout({ children }: { children: ReactNode }) { +export const metadata: Metadata = { + title: { + template: '%s | YAKE!', + default: 'YAKE! Documentation', + }, + description: 'Documentation for YAKE!', + icons: { + icon: `${basePath}/favicon.ico`, + }, +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { return ( From 21a8883ded2e7bf816fc8fcf7a8dee7628816dd3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 6 May 2025 10:35:42 +0100 Subject: [PATCH 067/118] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ce4e5597..6da00a3e 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ custom_th = TextHighlighter( ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [Documentation](http://github.io/yakerf/docs/) +- 🔌 Documentation site: [Documentation](https://tiagolv.github.io/yakerf/docs) - 📦 Python package: [GitHub](https://github.com/LIAAD/yake_demo) ## Citation @@ -89,12 +89,14 @@ Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and YAKE! Keyword Extraction from Single Documents using Multiple Local Features. Information Sciences Journal. Elsevier, Vol 509, pp 257-289. ``` +[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) ``` Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. ``` +[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) ## Awards From dc569669a418b14c250efd36ee0318edf577b006 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 6 May 2025 11:44:26 +0100 Subject: [PATCH 068/118] added search back to page --- docs-site/app/api/search/route.ts | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs-site/app/api/search/route.ts diff --git a/docs-site/app/api/search/route.ts b/docs-site/app/api/search/route.ts new file mode 100644 index 00000000..5c5b5f54 --- /dev/null +++ b/docs-site/app/api/search/route.ts @@ -0,0 +1,4 @@ +import { source } from '@/lib/source'; +import { createFromSource } from 'fumadocs-core/search/server'; + +export const { GET } = createFromSource(source); \ No newline at end of file From dad527a6c86d8eed35c3ebf0d05034e5c2fbb15c Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:14:13 +0100 Subject: [PATCH 069/118] updated mdx for cleaner look --- .github/workflows/deploy.yml | 10 +- .gitignore | 1 + docs-site/app/api/search/route.ts | 4 - docs-site/app/config.ts | 2 +- docs-site/app/layout.config.tsx | 19 +- docs-site/app/layout.tsx | 3 +- docs-site/content/docs/core/Levenshtein.mdx | 7 - docs-site/content/docs/core/highlight.mdx | 7 - docs-site/content/docs/core/yake.mdx | 6 - docs-site/content/docs/data/composedword.mdx | 2 - docs-site/content/docs/data/datacore.mdx | 2 - docs-site/content/docs/data/singleword.mdx | 2 - docs-site/content/docs/data/utils.mdx | 1 - docs-site/next.config.mjs | 2 +- docs-site/package-lock.json | 7180 ++++++++++-------- docs-site/package.json | 7 +- docs-site/public/yakelogo.png | Bin 0 -> 549 bytes docs-site/tsconfig.json | 7 +- package-lock.json | 4112 +++++++++- 19 files changed, 8127 insertions(+), 3247 deletions(-) create mode 100644 .gitignore delete mode 100644 docs-site/app/api/search/route.ts create mode 100644 docs-site/public/yakelogo.png diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 23744a24..a6b35177 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,24 +15,24 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v3 with: - node-version: '18' # ou a versão que você usa + node-version: '18' - name: Install dependencies run: | - cd docs-site # Ajuste conforme necessário + cd docs-site npm ci - name: Build run: | - cd docs-site # Ajuste conforme necessário + cd docs-site npm run build - name: Create .nojekyll file run: | - touch docs-site/out/.nojekyll # Ajuste conforme necessário + touch docs-site/out/.nojekyll - name: Deploy uses: JamesIves/github-pages-deploy-action@v4 with: - folder: docs-site/out # Ajuste conforme necessário + folder: docs-site/out branch: gh-pages \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..40b878db --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/docs-site/app/api/search/route.ts b/docs-site/app/api/search/route.ts deleted file mode 100644 index 5c5b5f54..00000000 --- a/docs-site/app/api/search/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { source } from '@/lib/source'; -import { createFromSource } from 'fumadocs-core/search/server'; - -export const { GET } = createFromSource(source); \ No newline at end of file diff --git a/docs-site/app/config.ts b/docs-site/app/config.ts index f4f1e199..689dc135 100644 --- a/docs-site/app/config.ts +++ b/docs-site/app/config.ts @@ -1,2 +1,2 @@ // app/config.ts -export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf' : ''; \ No newline at end of file +export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf/docs-site' : ''; \ No newline at end of file diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index 79556bf9..be3a29f8 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -1,4 +1,6 @@ import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; +import { basePath } from './config'; +import Image from 'next/image'; /** * Shared layout configurations @@ -11,16 +13,15 @@ export const baseOptions: BaseLayoutProps = { nav: { title: ( <> - - - + YAKE Logo YAKE! ), }, -}; +}; \ No newline at end of file diff --git a/docs-site/app/layout.tsx b/docs-site/app/layout.tsx index c254732d..3f262270 100644 --- a/docs-site/app/layout.tsx +++ b/docs-site/app/layout.tsx @@ -16,7 +16,8 @@ export const metadata: Metadata = { }, description: 'Documentation for YAKE!', icons: { - icon: `${basePath}/favicon.ico`, + icon: `yakelogo.png`, + shortcut: `yakelogo.png`, }, }; diff --git a/docs-site/content/docs/core/Levenshtein.mdx b/docs-site/content/docs/core/Levenshtein.mdx index 951e9440..ddc2de76 100644 --- a/docs-site/content/docs/core/Levenshtein.mdx +++ b/docs-site/content/docs/core/Levenshtein.mdx @@ -1,10 +1,3 @@ - ---- -title: "Levenshtein" -description: "Module providing Levenshtein distance and ratio calculations" ---- - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # Levenshtein diff --git a/docs-site/content/docs/core/highlight.mdx b/docs-site/content/docs/core/highlight.mdx index 07b6559e..c853e2e1 100644 --- a/docs-site/content/docs/core/highlight.mdx +++ b/docs-site/content/docs/core/highlight.mdx @@ -1,10 +1,3 @@ - ---- -title: "TextHighlighter" -description: "Module for highlighting text based on keywords in YAKE" ---- - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # TextHighlighter diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/core/yake.mdx index 3c944376..7a467c81 100644 --- a/docs-site/content/docs/core/yake.mdx +++ b/docs-site/content/docs/core/yake.mdx @@ -1,9 +1,3 @@ - ---- -title: "Yake" -description: "Core class for YAKE keyword extraction from text documents" ---- - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # KeywordExtractor Class diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/data/composedword.mdx index e5da072c..949b4e63 100644 --- a/docs-site/content/docs/data/composedword.mdx +++ b/docs-site/content/docs/data/composedword.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # ComposedWord diff --git a/docs-site/content/docs/data/datacore.mdx b/docs-site/content/docs/data/datacore.mdx index 30af9afc..4c9fe476 100644 --- a/docs-site/content/docs/data/datacore.mdx +++ b/docs-site/content/docs/data/datacore.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # DataCore diff --git a/docs-site/content/docs/data/singleword.mdx b/docs-site/content/docs/data/singleword.mdx index 2fa7dfbb..e854cc4b 100644 --- a/docs-site/content/docs/data/singleword.mdx +++ b/docs-site/content/docs/data/singleword.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # SingleWord diff --git a/docs-site/content/docs/data/utils.mdx b/docs-site/content/docs/data/utils.mdx index 8831d2ff..14ecff45 100644 --- a/docs-site/content/docs/data/utils.mdx +++ b/docs-site/content/docs/data/utils.mdx @@ -1,4 +1,3 @@ - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # Utils diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index 2ad51a02..a6e5d82a 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -2,7 +2,7 @@ import { createMDX } from 'fumadocs-mdx/next'; const withMDX = createMDX(); -const REPO_NAME = 'yakerf'; // Substitua pelo nome exato do seu repositório +const REPO_NAME = 'yakerf'; /** @type {import('next').NextConfig} */ const config = { diff --git a/docs-site/package-lock.json b/docs-site/package-lock.json index ab39305b..502a5c55 100644 --- a/docs-site/package-lock.json +++ b/docs-site/package-lock.json @@ -14,10 +14,10 @@ "clsx": "^2.1.1", "fumadocs-core": "15.2.9", "fumadocs-mdx": "11.6.1", - "fumadocs-ui": "15.2.9", + "fumadocs-ui": "^15.2.9", "lucide-react": "^0.503.0", "next": "15.3.1", - "nextra": "^4.2.17", + "nextra": "^1.1.0", "react": "^19.1.0", "react-dom": "^19.1.0", "tailwind-merge": "^3.2.0", @@ -31,6 +31,8 @@ "@types/react-dom": "^19.1.2", "eslint": "^8", "eslint-config-next": "15.3.1", + "glob": "^8.1.0", + "gray-matter": "^4.0.3", "postcss": "^8.5.3", "tailwindcss": "^4.1.4", "typescript": "^5.8.3" @@ -48,65 +50,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@antfu/install-pkg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", - "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==", - "dependencies": { - "package-manager-detector": "^0.2.8", - "tinyexec": "^0.3.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", - "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@braintree/sanitize-url": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", - "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==" - }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" - }, - "node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" - }, - "node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" - }, "node_modules/@emnapi/core": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", @@ -588,20 +531,6 @@ "@floating-ui/utils": "^0.2.9" } }, - "node_modules/@floating-ui/react": { - "version": "0.26.28", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", - "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", - "dependencies": { - "@floating-ui/react-dom": "^2.1.2", - "@floating-ui/utils": "^0.2.8", - "tabbable": "^6.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, "node_modules/@floating-ui/react-dom": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", @@ -627,25 +556,6 @@ "tslib": "^2.8.0" } }, - "node_modules/@headlessui/react": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.2.tgz", - "integrity": "sha512-zbniWOYBQ8GHSUIOPY7BbdIn6PzUOq0z41RFrF30HbjsxG6Rrfk+6QulR8Kgf2Vwj2a/rE6i62q5vo+2gI5dJA==", - "dependencies": { - "@floating-ui/react": "^0.26.16", - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@tanstack/react-virtual": "^3.13.6", - "use-sync-external-store": "^1.5.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -681,37 +591,6 @@ "deprecated": "Use @eslint/object-schema instead", "dev": true }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" - }, - "node_modules/@iconify/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", - "dependencies": { - "@antfu/install-pkg": "^1.0.0", - "@antfu/utils": "^8.1.0", - "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.14.0", - "kolorist": "^1.8.0", - "local-pkg": "^1.0.0", - "mlly": "^1.7.4" - } - }, - "node_modules/@iconify/utils/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", @@ -1069,281 +948,1177 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@mdx-js/mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.3.0.tgz", + "integrity": "sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==", + "dependencies": { + "@mdx-js/mdx": "^2.0.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "webpack": ">=4" + } + }, + "node_modules/@mdx-js/loader/node_modules/@mdx-js/mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", + "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", "dependencies": { - "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/@mermaid-js/parser": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.4.0.tgz", - "integrity": "sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==", + "node_modules/@mdx-js/loader/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", "dependencies": { - "langium": "3.3.1" + "@types/unist": "^2" } }, - "node_modules/@napi-rs/simple-git": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.19.tgz", - "integrity": "sha512-jMxvwzkKzd3cXo2EB9GM2ic0eYo2rP/BS6gJt6HnWbsDO1O8GSD4k7o2Cpr2YERtMpGF/MGcDfsfj2EbQPtrXw==", - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@mdx-js/loader/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/@mdx-js/loader/node_modules/estree-util-attach-comments": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", + "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", + "dependencies": { + "@types/estree": "^1.0.0" }, - "optionalDependencies": { - "@napi-rs/simple-git-android-arm-eabi": "0.1.19", - "@napi-rs/simple-git-android-arm64": "0.1.19", - "@napi-rs/simple-git-darwin-arm64": "0.1.19", - "@napi-rs/simple-git-darwin-x64": "0.1.19", - "@napi-rs/simple-git-freebsd-x64": "0.1.19", - "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.19", - "@napi-rs/simple-git-linux-arm64-gnu": "0.1.19", - "@napi-rs/simple-git-linux-arm64-musl": "0.1.19", - "@napi-rs/simple-git-linux-powerpc64le-gnu": "0.1.19", - "@napi-rs/simple-git-linux-s390x-gnu": "0.1.19", - "@napi-rs/simple-git-linux-x64-gnu": "0.1.19", - "@napi-rs/simple-git-linux-x64-musl": "0.1.19", - "@napi-rs/simple-git-win32-arm64-msvc": "0.1.19", - "@napi-rs/simple-git-win32-x64-msvc": "0.1.19" - } - }, - "node_modules/@napi-rs/simple-git-android-arm-eabi": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.19.tgz", - "integrity": "sha512-XryEH/hadZ4Duk/HS/HC/cA1j0RHmqUGey3MsCf65ZS0VrWMqChXM/xlTPWuY5jfCc/rPubHaqI7DZlbexnX/g==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-android-arm64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.19.tgz", - "integrity": "sha512-ZQ0cPvY6nV9p7zrR9ZPo7hQBkDAcY/CHj3BjYNhykeUCiSNCrhvwX+WEeg5on8M1j4d5jcI/cwVG2FslfiByUg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-build-jsx": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", + "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-darwin-arm64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.19.tgz", - "integrity": "sha512-viZB5TYgjA1vH+QluhxZo0WKro3xBA+1xSzYx8mcxUMO5gnAoUMwXn0ZO/6Zy6pai+aGae+cj6XihGnrBRu3Pg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-is-identifier-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-darwin-x64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.19.tgz", - "integrity": "sha512-6dNkzSNUV5X9rsVYQbpZLyJu4Gtkl2vNJ3abBXHX/Etk0ILG5ZasO3ncznIANZQpqcbn/QPHr49J2QYAXGoKJA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-to-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", + "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-freebsd-x64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-freebsd-x64/-/simple-git-freebsd-x64-0.1.19.tgz", - "integrity": "sha512-sB9krVIchzd20FjI2ZZ8FDsTSsXLBdnwJ6CpeVyrhXHnoszfcqxt49ocZHujAS9lMpXq7i2Nv1EXJmCy4KdhwA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-visit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", + "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-arm-gnueabihf": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.19.tgz", - "integrity": "sha512-6HPn09lr9N1n5/XKfP8Np53g4fEXVxOFqNkS6rTH3Rm1lZHdazTRH62RggXLTguZwjcE+MvOLvoTIoR5kAS8+g==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/hast-util-to-estree": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", + "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.1", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-arm64-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.19.tgz", - "integrity": "sha512-G0gISckt4cVDp3oh5Z6PV3GHJrJO6Z8bIS+9xA7vTtKdqB1i5y0n3cSFLlzQciLzhr+CajFD27doW4lEyErQ/Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-arm64-musl": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.19.tgz", - "integrity": "sha512-OwTRF+H4IZYxmDFRi1IrLMfqbdIpvHeYbJl2X94NVsLVOY+3NUHvEzL3fYaVx5urBaMnIK0DD3wZLbcueWvxbA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@mdx-js/loader/node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/@mdx-js/loader/node_modules/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/@napi-rs/simple-git-linux-powerpc64le-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-powerpc64le-gnu/-/simple-git-linux-powerpc64le-gnu-0.1.19.tgz", - "integrity": "sha512-p7zuNNVyzpRvkCt2RIGv9FX/WPcPbZ6/FRUgUTZkA2WU33mrbvNqSi4AOqCCl6mBvEd+EOw5NU4lS9ORRJvAEg==", - "cpu": [ - "powerpc64le" + "node_modules/@mdx-js/loader/node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", + "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx-expression": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", + "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx-jsx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", + "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "mdast-util-from-markdown": "^1.1.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdxjs-esm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", + "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-expression": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", + "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", + "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-md": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", + "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdxjs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", + "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^1.0.0", + "micromark-extension-mdx-jsx": "^1.0.0", + "micromark-extension-mdx-md": "^1.0.0", + "micromark-extension-mdxjs-esm": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdxjs-esm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", + "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-core-commonmark": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.1.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-mdx-expression": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", + "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "optional": true, - "os": [ - "linux" + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "engines": { - "node": ">= 10" + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-events-to-acorn": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", + "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^2.0.0", + "estree-util-visit": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/remark-mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", + "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", + "dependencies": { + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/@mdx-js/loader/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-position-from-estree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", + "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-s390x-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-s390x-gnu/-/simple-git-linux-s390x-gnu-0.1.19.tgz", - "integrity": "sha512-6N2vwJUPLiak8GLrS0a3is0gSb0UwI2CHOOqtvQxPmv+JVI8kn3vKiUscsktdDb0wGEPeZ8PvZs0y8UWix7K4g==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-x64-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.19.tgz", - "integrity": "sha512-61YfeO1J13WK7MalLgP3QlV6of2rWnVw1aqxWkAgy/lGxoOFSJ4Wid6ANVCEZk4tJpPX/XNeneqkUz5xpeb2Cw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-x64-musl": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.19.tgz", - "integrity": "sha512-cCTWNpMJnN3PrUBItWcs3dQKCydsIasbrS3laMzq8k7OzF93Zrp2LWDTPlLCO9brbBVpBzy2Qk5Xg9uAfe/Ukw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-win32-arm64-msvc": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.19.tgz", - "integrity": "sha512-sWavb1BjeLKKBA+PbTsRSSzVNfb7V/dOpaJvkgR5d2kWFn/AHmCZHSSj/3nyZdYf0BdDC+DIvqk3daAEZ6QMVw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-win32-x64-msvc": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.19.tgz", - "integrity": "sha512-FmNuPoK4+qwaSCkp8lm3sJlrxk374enW+zCE5ZksXlZzj/9BDJAULJb5QUJ7o9Y8A/G+d8LkdQLPBE2Jaxe5XA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/@napi-rs/wasm-runtime": { @@ -2246,96 +3021,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" }, - "node_modules/@react-aria/focus": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.2.tgz", - "integrity": "sha512-Q3rouk/rzoF/3TuH6FzoAIKrl+kzZi9LHmr8S5EqLAOyP9TXIKG34x2j42dZsAhrw7TbF9gA8tBKwnCNH4ZV+Q==", - "dependencies": { - "@react-aria/interactions": "^3.25.0", - "@react-aria/utils": "^3.28.2", - "@react-types/shared": "^3.29.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/interactions": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.0.tgz", - "integrity": "sha512-GgIsDLlO8rDU/nFn6DfsbP9rfnzhm8QFjZkB9K9+r+MTSCn7bMntiWQgMM+5O6BiA8d7C7x4zuN4bZtc0RBdXQ==", - "dependencies": { - "@react-aria/ssr": "^3.9.8", - "@react-aria/utils": "^3.28.2", - "@react-stately/flags": "^3.1.1", - "@react-types/shared": "^3.29.0", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/ssr": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.8.tgz", - "integrity": "sha512-lQDE/c9uTfBSDOjaZUJS8xP2jCKVk4zjQeIlCH90xaLhHDgbpCdns3xvFpJJujfj3nI4Ll9K7A+ONUBDCASOuw==", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/utils": { - "version": "3.28.2", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.28.2.tgz", - "integrity": "sha512-J8CcLbvnQgiBn54eeEvQQbIOfBF3A1QizxMw9P4cl9MkeR03ug7RnjTIdJY/n2p7t59kLeAB3tqiczhcj+Oi5w==", - "dependencies": { - "@react-aria/ssr": "^3.9.8", - "@react-stately/flags": "^3.1.1", - "@react-stately/utils": "^3.10.6", - "@react-types/shared": "^3.29.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-stately/flags": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.1.tgz", - "integrity": "sha512-XPR5gi5LfrPdhxZzdIlJDz/B5cBf63l4q6/AzNqVWFKgd0QqY5LvWJftXkklaIUpKSJkIKQb8dphuZXDtkWNqg==", - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, - "node_modules/@react-stately/utils": { - "version": "3.10.6", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.6.tgz", - "integrity": "sha512-O76ip4InfTTzAJrg8OaZxKU4vvjMDOpfA/PGNOytiXwBbkct2ZeZwaimJ8Bt9W1bj5VsZ81/o/tW4BacbdDOMA==", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-types/shared": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.29.0.tgz", - "integrity": "sha512-IDQYu/AHgZimObzCFdNl1LpZvQW/xcfLt3v20sorl5qRucDVj4S9os98sVTZ4IRIBjmS+MkjqpR5E70xan7ooA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -2416,67 +3101,6 @@ "@shikijs/types": "3.3.0" } }, - "node_modules/@shikijs/twoslash": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-2.5.0.tgz", - "integrity": "sha512-OdyoZRbzTB80qHFHdaXT070OG9hiljxbsJMZmrMAPWXG2e4FV8wbC63VBM5BJXa1DH645nw20VX1MzASkO5V9g==", - "dependencies": { - "@shikijs/core": "2.5.0", - "@shikijs/types": "2.5.0", - "twoslash": "^0.2.12" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", - "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", - "dependencies": { - "@shikijs/engine-javascript": "2.5.0", - "@shikijs/engine-oniguruma": "2.5.0", - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/engine-javascript": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", - "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", - "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^3.1.0" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/engine-oniguruma": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", - "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", - "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/types": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", - "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/twoslash/node_modules/oniguruma-to-es": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", - "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, "node_modules/@shikijs/types": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.3.0.tgz", @@ -2491,6 +3115,14 @@ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" }, + "node_modules/@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "engines": { + "node": ">=4" + } + }, "node_modules/@standard-schema/spec": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", @@ -2762,40 +3394,6 @@ "tailwindcss": "4.1.4" } }, - "node_modules/@tanstack/react-virtual": { - "version": "3.13.6", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.6.tgz", - "integrity": "sha512-WT7nWs8ximoQ0CDx/ngoFP7HbQF9Q2wQe4nh2NB+u2486eX3nZRE40P9g6ccCVq7ZfTSH5gFOuCoVH5DLNS/aA==", - "dependencies": { - "@tanstack/virtual-core": "3.13.6" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/@tanstack/virtual-core": { - "version": "3.13.6", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.6.tgz", - "integrity": "sha512-cnQUeWnhNP8tJ4WsGcYiX24Gjkc9ALstLbHcBj1t3E7EimN6n6kHH+DPV4PpDnuw00NApQp+ViojMj1GRdwYQg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@theguild/remark-npm2yarn": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@theguild/remark-npm2yarn/-/remark-npm2yarn-0.3.3.tgz", - "integrity": "sha512-ma6DvR03gdbvwqfKx1omqhg9May/VYGdMHvTzB4VuxkyS7KzfZ/lzrj43hmcsggpMje0x7SADA/pcMph0ejRnA==", - "dependencies": { - "npm-to-yarn": "^3.0.0", - "unist-util-visit": "^5.0.0" - } - }, "node_modules/@tybys/wasm-util": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", @@ -2806,226 +3404,12 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" - }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" - }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==" - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==" - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==" - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==" - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==" - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==" - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==" - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==" - }, - "node_modules/@types/d3-selection": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==" - }, - "node_modules/@types/d3-shape": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", - "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" - }, - "node_modules/@types/d3-transition": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", - "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" + "@types/estree": "*" } }, "node_modules/@types/debug": { @@ -3036,6 +3420,26 @@ "@types/ms": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", @@ -3049,11 +3453,6 @@ "@types/estree": "*" } }, - "node_modules/@types/geojson": { - "version": "7946.0.16", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", - "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==" - }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", @@ -3062,17 +3461,18 @@ "@types/unist": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "peer": true + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, - "node_modules/@types/katex": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", - "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==" - }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -3091,19 +3491,10 @@ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" }, - "node_modules/@types/nlcst": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", - "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/node": { "version": "22.14.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", - "dev": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3126,12 +3517,6 @@ "@types/react": "^19.0.0" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "optional": true - }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -3373,17 +3758,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript/vfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.1.tgz", - "integrity": "sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==", - "dependencies": { - "debug": "^4.1.1" - }, - "peerDependencies": { - "typescript": "*" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", @@ -3600,14 +3974,164 @@ "win32" ] }, - "node_modules/@xmldom/xmldom": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", - "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", - "engines": { - "node": ">=14.6" + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "peer": true + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -3643,344 +4167,142 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "peer": true, "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "ajv": "^8.0.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-iterate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", - "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", "funding": { "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "bin": { - "astring": "bin/astring" + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/async-function": { + "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "possible-typed-array-names": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", - "dev": true, + "node_modules/archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", + "dependencies": { + "file-type": "^4.2.0" + }, "engines": { "node": ">=4" } }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, + "node_modules/archive-type/node_modules/file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">=4" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/better-react-mathjax": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/better-react-mathjax/-/better-react-mathjax-2.3.0.tgz", - "integrity": "sha512-K0ceQC+jQmB+NLDogO5HCpqmYf18AU2FxDbLdduYgkHYWZApFggkHE4dIaXCV1NqeoscESYXXo1GSkY6fA295w==", + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "dependencies": { - "mathjax-full": "^3.2.2" + "tslib": "^2.0.0" }, - "peerDependencies": { - "react": ">=16.8" + "engines": { + "node": ">=10" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, "dependencies": { - "streamsearch": "^1.1.0" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=10.16.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "is-string": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -3989,27 +4311,39 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", "es-errors": "^1.3.0", - "function-bind": "^1.1.2" + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4018,758 +4352,660 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001715", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", - "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, "dependencies": { - "readdirp": "^4.0.1" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">= 14.16.0" + "node": ">= 0.4" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, "dependencies": { - "clsx": "^2.1.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, - "funding": { - "url": "https://polar.sh/cva" + "engines": { + "node": ">= 0.4" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "node_modules/clipboardy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", - "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, "dependencies": { - "execa": "^8.0.1", - "is-wsl": "^3.1.0", - "is64bit": "^2.0.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true }, - "node_modules/collapse-white-space": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "bin": { + "astring": "bin/astring" } }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, "engines": { - "node": ">=12.5.0" + "node": ">= 0.4" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" } }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, - "node_modules/compute-scroll-into-view": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", - "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==" + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } }, - "node_modules/cose-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { - "layout-base": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/browserslist": { + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, "bin": { - "cssesc": "bin/cssesc" + "browserslist": "cli.js" }, "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true - }, - "node_modules/cytoscape": { - "version": "3.31.2", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.31.2.tgz", - "integrity": "sha512-/eOXg2uGdMdpGlEes5Sf6zE+jUG+05f3htFNQIxLxduOH/SsaUZiPBfAwP1btVIVzsnhiNOdi+hvDRLYfMZjGw==", - "engines": { - "node": ">=0.10" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "cose-base": "^1.0.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/cytoscape-fcose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", - "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dependencies": { - "cose-base": "^2.2.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, - "node_modules/cytoscape-fcose/node_modules/cose-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", - "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", - "dependencies": { - "layout-base": "^2.0.0" - } + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, - "node_modules/cytoscape-fcose/node_modules/layout-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "peer": true + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { - "internmap": "1 - 2" + "streamsearch": "^1.1.0" }, "engines": { - "node": ">=12" + "node": ">=10.16.0" } }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" + "node_modules/cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" } }, - "node_modules/d3-brush": { + "node_modules/cacheable-request/node_modules/get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" + "json-buffer": "3.0.0" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "dependencies": { - "d3-array": "^3.2.0" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dependencies": { - "delaunator": "5" + "node": ">= 0.4" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "engines": { - "node": ">= 10" + "node": ">=6" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" + "node_modules/caniuse-lite": { + "version": "1.0.30001717", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", + "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "d3-dsv": "1 - 3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dependencies": { - "d3-color": "1 - 3" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "peer": true, "engines": { - "node": ">=12" + "node": ">=6.0" } }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" } }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" + "mimic-response": "^1.0.0" } }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "dependencies": { - "internmap": "^1.0.0" + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" } }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "dependencies": { - "d3-path": "1" + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" }, "engines": { - "node": ">=12" + "node": ">=12.5.0" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "d3-time": "1 - 3" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" + "node": ">= 8" } }, - "node_modules/d3-zoom": { + "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/dagre-d3-es": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", - "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", - "dependencies": { - "d3": "^7.9.0", - "lodash-es": "^4.17.21" - } + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -4828,11 +5064,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" - }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -4861,6 +5092,177 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress/node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -4901,14 +5303,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -4943,6 +5337,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -4955,12 +5357,25 @@ "node": ">=6.0.0" } }, - "node_modules/dompurify": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz", - "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" + "node_modules/download": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz", + "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==", + "dependencies": { + "archive-type": "^4.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.2.1", + "ext-name": "^5.0.0", + "file-type": "^11.1.0", + "filenamify": "^3.0.0", + "get-stream": "^4.1.0", + "got": "^8.3.1", + "make-dir": "^2.1.0", + "p-event": "^2.1.0", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/dunder-proto": { @@ -4977,6 +5392,17 @@ "node": ">= 0.4" } }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.150", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.150.tgz", + "integrity": "sha512-rOOkP2ZUMx1yL4fCxXQKDHQ8ZXwisb2OycOQVKHgvB3ZI4CvehOd4y2tfnnLDieJ3Zs1RL1Dlp3cMkyIn7nnXA==", + "peer": true + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -4988,11 +5414,26 @@ "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5001,17 +5442,6 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", - "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/es-abstract": { "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", @@ -5122,6 +5552,12 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "peer": true + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -5247,11 +5683,19 @@ "@esbuild/win32-x64": "0.25.3" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -5624,14 +6068,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "engines": { - "node": ">=6" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -5677,7 +6113,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -5689,7 +6124,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -5798,32 +6232,37 @@ "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "mime-db": "^1.28.0" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/exsolve": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz", - "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==" + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } }, "node_modules/extend": { "version": "3.0.2", @@ -5844,8 +6283,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { "version": "3.3.1", @@ -5887,6 +6325,22 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "peer": true + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -5895,16 +6349,12 @@ "reusify": "^1.0.4" } }, - "node_modules/fault": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", - "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "pend": "~1.2.0" } }, "node_modules/file-entry-cache": { @@ -5919,6 +6369,35 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz", + "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz", + "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -5981,14 +6460,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", - "engines": { - "node": ">=0.4.x" + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6226,14 +6711,14 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, "node_modules/get-symbol-description": { @@ -6271,21 +6756,20 @@ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6303,6 +6787,33 @@ "node": ">=10.13.0" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "peer": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -6346,11 +6857,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dependencies": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -6392,11 +6945,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/hachure-fill": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==" - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -6413,7 +6961,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -6445,6 +6992,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "engines": { + "node": "*" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -6457,6 +7012,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", @@ -6484,119 +7050,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-from-dom": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", - "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", - "dependencies": { - "@types/hast": "^3.0.0", - "hastscript": "^9.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-html": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", - "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.1.0", - "hast-util-from-parse5": "^8.0.0", - "parse5": "^7.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-html-isomorphic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", - "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-dom": "^5.0.0", - "hast-util-from-html": "^2.0.0", - "unist-util-remove-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", - "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^9.0.0", - "property-information": "^7.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", - "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-estree": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", @@ -6672,33 +7125,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5/node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/hast-util-to-string": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", @@ -6711,21 +7137,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-text": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unist-util-find-after": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -6738,22 +7149,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hastscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", - "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", @@ -6763,24 +7158,29 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" - } + "node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/ignore": { "version": "5.3.2", @@ -6841,8 +7241,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inline-style-parser": { "version": "0.2.4", @@ -6863,12 +7262,16 @@ "node": ">= 0.4" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "node_modules/into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", + "dependencies": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, "node_modules/is-alphabetical": { @@ -6966,6 +7369,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, "node_modules/is-bun-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", @@ -7044,20 +7469,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -7127,23 +7538,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -7156,6 +7550,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7180,6 +7579,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -7200,6 +7607,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -7218,6 +7633,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -7246,14 +7669,11 @@ } }, "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/is-string": { @@ -7347,34 +7767,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is64bit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", - "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", - "dependencies": { - "system-architecture": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -7386,6 +7778,18 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -7403,6 +7807,35 @@ "node": ">= 0.4" } }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/jiti": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", @@ -7436,6 +7869,12 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "peer": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -7475,21 +7914,6 @@ "node": ">=4.0" } }, - "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7499,11 +7923,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/khroma": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -7512,24 +7931,12 @@ "node": ">=0.10.0" } }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" - }, - "node_modules/langium": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", - "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "engines": { - "node": ">=16.0.0" + "node": ">=6" } }, "node_modules/language-subtag-registry": { @@ -7550,11 +7957,6 @@ "node": ">=0.10" } }, - "node_modules/layout-base": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -7796,20 +8198,37 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/local-pkg": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", - "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { - "mlly": "^1.7.4", - "pkg-types": "^2.0.1", - "quansync": "^0.2.8" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=14" + "node": ">=8.9.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=6" } }, "node_modules/locate-path": { @@ -7827,11 +8246,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -7858,6 +8272,14 @@ "loose-envify": "cli.js" } }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/lru-cache": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", @@ -7874,6 +8296,26 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -7894,17 +8336,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/marked": { - "version": "15.0.9", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.9.tgz", - "integrity": "sha512-9AW/bn9DxQeZVjR52l5jsc0W2pwuhP04QaQewPvylil12Cfr2GBfWmgp6mu8i9Jy8UlBjqDZ9uMTDuJ8QOGZJA==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -7914,15 +8345,70 @@ "node": ">= 0.4" } }, - "node_modules/mathjax-full": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", - "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/mdast-util-definitions/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "dependencies": { - "esm": "^3.2.25", - "mhchemparser": "^4.1.0", - "mj-context-menu": "^0.6.1", - "speech-rule-engine": "^4.0.6" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-find-and-replace": { @@ -7974,34 +8460,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", - "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "escape-string-regexp": "^5.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mdast-util-gfm": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", @@ -8097,24 +8555,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-math": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", - "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "longest-streak": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.1.0", - "unist-util-remove-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-mdx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", @@ -8256,7 +8696,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "peer": true }, "node_modules/merge2": { "version": "1.4.1", @@ -8266,38 +8707,6 @@ "node": ">= 8" } }, - "node_modules/mermaid": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.6.0.tgz", - "integrity": "sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==", - "dependencies": { - "@braintree/sanitize-url": "^7.0.4", - "@iconify/utils": "^2.1.33", - "@mermaid-js/parser": "^0.4.0", - "@types/d3": "^7.4.3", - "cytoscape": "^3.29.3", - "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.2.0", - "d3": "^7.9.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.11", - "dayjs": "^1.11.13", - "dompurify": "^3.2.4", - "katex": "^0.16.9", - "khroma": "^2.1.0", - "lodash-es": "^4.17.21", - "marked": "^15.0.7", - "roughjs": "^4.6.6", - "stylis": "^4.3.6", - "ts-dedent": "^2.2.0", - "uuid": "^11.1.0" - } - }, - "node_modules/mhchemparser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" - }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -8365,21 +8774,6 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-frontmatter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", - "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", - "dependencies": { - "fault": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", @@ -8494,24 +8888,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-math": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", - "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", - "dependencies": { - "@types/katex": "^0.16.0", - "devlop": "^1.0.0", - "katex": "^0.16.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-extension-mdx-expression": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", @@ -9022,18 +9398,44 @@ "picomatch": "^2.3.1" }, "engines": { - "node": ">=8.6" + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "peer": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" } }, "node_modules/minimatch": { @@ -9057,35 +9459,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mj-context-menu": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", - "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" - }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" - } - }, - "node_modules/mlly/node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==" - }, - "node_modules/mlly/node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" } }, "node_modules/ms": { @@ -9122,338 +9501,668 @@ "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/napi-postinstall" + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "peer": true + }, + "node_modules/next": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.1.tgz", + "integrity": "sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==", + "dependencies": { + "@next/env": "15.3.1", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.1", + "@next/swc-darwin-x64": "15.3.1", + "@next/swc-linux-arm64-gnu": "15.3.1", + "@next/swc-linux-arm64-musl": "15.3.1", + "@next/swc-linux-x64-gnu": "15.3.1", + "@next/swc-linux-x64-musl": "15.3.1", + "@next/swc-win32-arm64-msvc": "15.3.1", + "@next/swc-win32-x64-msvc": "15.3.1", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/nextra": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nextra/-/nextra-1.1.0.tgz", + "integrity": "sha512-WxD1c05gs4cyPHWvqOei9ofIQkLjtzQaDQo8+56f5ss7yJ6ZyI7Ohx7nyyjm6yTo1fO8gfj3v1l/AZmLnjh4FA==", + "dependencies": { + "@mdx-js/loader": "^2.0.0-next.9", + "download": "^8.0.0", + "graceful-fs": "^4.2.6", + "gray-matter": "^4.0.3", + "loader-utils": "^2.0.0", + "remark": "^13.0.0", + "remark-gfm": "^1.0.0", + "slash": "^3.0.0", + "strip-markdown": "^4.0.0" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, + "node_modules/nextra/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/nextra/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/nextra/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/nextra/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dependencies": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dependencies": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dependencies": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "engines": { - "node": ">= 0.6" + "node_modules/nextra/node_modules/mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dependencies": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/next": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-15.3.1.tgz", - "integrity": "sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==", + "node_modules/nextra/node_modules/mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", "dependencies": { - "@next/env": "15.3.1", - "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.15", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" + "mdast-util-to-markdown": "~0.6.0" }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.3.1", - "@next/swc-darwin-x64": "15.3.1", - "@next/swc-linux-arm64-gnu": "15.3.1", - "@next/swc-linux-arm64-musl": "15.3.1", - "@next/swc-linux-x64-gnu": "15.3.1", - "@next/swc-linux-x64-musl": "15.3.1", - "@next/swc-win32-arm64-msvc": "15.3.1", - "@next/swc-win32-x64-msvc": "15.3.1", - "sharp": "^0.34.1" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/next-themes": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", - "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + "node_modules/nextra/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "node_modules/nextra/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "github", - "url": "https://github.com/sponsors/ai" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" + "debug": "^4.0.0", + "parse-entities": "^2.0.0" } }, - "node_modules/nextra": { - "version": "4.2.17", - "resolved": "https://registry.npmjs.org/nextra/-/nextra-4.2.17.tgz", - "integrity": "sha512-WBZGSUeUJqkYm3F3F7+4N1oMP84r/YK/rAg96wkywu/MIsuUREY8fLXQgQbKkvcLbBl/7Wk2Iy+9xlhDu+weNg==", - "dependencies": { - "@formatjs/intl-localematcher": "^0.6.0", - "@headlessui/react": "^2.1.2", - "@mdx-js/mdx": "^3.0.0", - "@napi-rs/simple-git": "^0.1.9", - "@shikijs/twoslash": "^2.0.0", - "@theguild/remark-mermaid": "^0.2.0", - "@theguild/remark-npm2yarn": "^0.3.2", - "better-react-mathjax": "^2.0.3", - "clsx": "^2.1.0", - "estree-util-to-js": "^2.0.0", - "estree-util-value-to-estree": "^3.0.1", - "fast-glob": "^3.3.2", - "github-slugger": "^2.0.0", - "hast-util-to-estree": "^3.1.0", - "katex": "^0.16.21", - "mdast-util-from-markdown": "^2.0.1", - "mdast-util-gfm": "^3.0.0", - "mdast-util-to-hast": "^13.2.0", - "negotiator": "^1.0.0", - "react-compiler-runtime": "0.0.0-experimental-22c6e49-20241219", - "react-medium-image-zoom": "^5.2.12", - "rehype-katex": "^7.0.0", - "rehype-pretty-code": "0.14.1", - "rehype-raw": "^7.0.0", - "remark-frontmatter": "^5.0.0", - "remark-gfm": "^4.0.0", - "remark-math": "^6.0.0", - "remark-reading-time": "^2.0.1", - "remark-smartypants": "^3.0.0", - "shiki": "^2.0.0", - "slash": "^5.1.0", - "title": "^4.0.1", - "unist-util-remove": "^4.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-children": "^3.0.0", - "yaml": "^2.3.2", - "zod": "^3.22.3", - "zod-validation-error": "^3.0.0" - }, - "engines": { - "node": ">=18" + "node_modules/nextra/node_modules/micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" }, - "peerDependencies": { - "next": ">=14", - "react": ">=18", - "react-dom": ">=18" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", - "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "node_modules/nextra/node_modules/micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", "dependencies": { - "@shikijs/engine-javascript": "2.5.0", - "@shikijs/engine-oniguruma": "2.5.0", - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" + "micromark": "~2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/engine-javascript": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", - "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "node_modules/nextra/node_modules/micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^3.1.0" + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/engine-oniguruma": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", - "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "node_modules/nextra/node_modules/micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2" + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/langs": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", - "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", - "dependencies": { - "@shikijs/types": "2.5.0" + "node_modules/nextra/node_modules/micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/themes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", - "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "node_modules/nextra/node_modules/micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", "dependencies": { - "@shikijs/types": "2.5.0" + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/types": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", - "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "node_modules/nextra/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/nextra/node_modules/@theguild/remark-mermaid": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@theguild/remark-mermaid/-/remark-mermaid-0.2.0.tgz", - "integrity": "sha512-o8n57TJy0OI4PCrNw8z6S+vpHtrwoQZzTA5Y3fL0U1NDRIoMg/78duWgEBFsCZcWM1G6zjE91yg1aKCsDwgE2Q==", + "node_modules/nextra/node_modules/remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", "dependencies": { - "mermaid": "^11.0.0", - "unist-util-visit": "^5.0.0" + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" }, - "peerDependencies": { - "react": "^18.2.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/nextra/node_modules/remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" }, - "engines": { - "node": ">=8.6.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/nextra/node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dependencies": { - "is-glob": "^4.0.1" + "mdast-util-from-markdown": "^0.8.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/oniguruma-to-es": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", - "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "node_modules/nextra/node_modules/remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/shiki": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", - "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "node_modules/nextra/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", "dependencies": { - "@shikijs/core": "2.5.0", - "@shikijs/engine-javascript": "2.5.0", - "@shikijs/engine-oniguruma": "2.5.0", - "@shikijs/langs": "2.5.0", - "@shikijs/themes": "2.5.0", - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nlcst-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", - "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "node_modules/nextra/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dependencies": { - "@types/nlcst": "^2.0.0" + "@types/unist": "^2.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/nextra/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "dependencies": { - "path-key": "^4.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" + "node_modules/nextra/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-to-yarn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-3.0.1.tgz", - "integrity": "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node_modules/nextra/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "peer": true + }, + "node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" }, - "funding": { - "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + "engines": { + "node": ">=4" } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9568,25 +10277,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/oniguruma-parser": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.11.2.tgz", @@ -9637,6 +10331,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dependencies": { + "p-timeout": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -9667,12 +10396,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-manager-detector": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", - "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", + "node_modules/p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dependencies": { - "quansync": "^0.2.7" + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/parent-module": { @@ -9710,44 +10442,6 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" }, - "node_modules/parse-latin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", - "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "@types/unist": "^3.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-modify-children": "^4.0.0", - "unist-util-visit-children": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -9780,10 +10474,20 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==" + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } }, "node_modules/picocolors": { "version": "1.1.1", @@ -9801,28 +10505,31 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", - "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", - "dependencies": { - "confbox": "^0.2.1", - "exsolve": "^1.0.1", - "pathe": "^2.0.3" + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" } }, - "node_modules/points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dependencies": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/possible-typed-array-names": { @@ -9883,6 +10590,19 @@ "node": ">= 0.8.0" } }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -9903,6 +10623,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -9912,20 +10641,18 @@ "node": ">=6" } }, - "node_modules/quansync": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", - "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ] + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -9946,6 +10673,15 @@ } ] }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/react": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", @@ -9954,14 +10690,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-compiler-runtime": { - "version": "0.0.0-experimental-22c6e49-20241219", - "resolved": "https://registry.npmjs.org/react-compiler-runtime/-/react-compiler-runtime-0.0.0-experimental-22c6e49-20241219.tgz", - "integrity": "sha512-bOAGaRL1ldfIIpbDsl+uV025Ta6RS6/cOjvvh8r2Vo7KtqB+RSvihVYRsWQz7ECKNPWdq5MClS845acwAwieDw==", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/react-dom": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", @@ -10060,6 +10788,30 @@ } } }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -10072,11 +10824,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" - }, "node_modules/recma-build-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", @@ -10200,71 +10947,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rehype-katex": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", - "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/katex": "^0.16.0", - "hast-util-from-html-isomorphic": "^2.0.0", - "hast-util-to-text": "^4.0.0", - "katex": "^0.16.0", - "unist-util-visit-parents": "^6.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-html": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-pretty-code": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.14.1.tgz", - "integrity": "sha512-IpG4OL0iYlbx78muVldsK86hdfNoht0z63AP7sekQNW2QOTmjxB7RbTO+rhIYNGRljgHxgVZoPwUl6bIC9SbjA==", - "dependencies": { - "@types/hast": "^3.0.4", - "hast-util-to-string": "^3.0.0", - "parse-numeric-range": "^1.3.0", - "rehype-parse": "^9.0.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "shiki": "^1.0.0 || ^2.0.0 || ^3.0.0" - } - }, - "node_modules/rehype-raw": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", - "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-raw": "^9.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/rehype-recma": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", @@ -10294,21 +10976,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-frontmatter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", - "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-frontmatter": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-gfm": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", @@ -10318,137 +10985,36 @@ "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-math": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", - "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-math": "^3.0.0", - "micromark-extension-math": "^3.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", - "dependencies": { - "mdast-util-mdx": "^3.0.0", - "micromark-extension-mdxjs": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-reading-time/-/remark-reading-time-2.0.1.tgz", - "integrity": "sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==", - "dependencies": { - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-value-to-estree": "^1.3.0", - "reading-time": "^1.3.0", - "unist-util-visit": "^3.1.0" - } - }, - "node_modules/remark-reading-time/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" - }, - "node_modules/remark-reading-time/node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time/node_modules/estree-util-value-to-estree": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", - "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", - "dependencies": { - "is-plain-obj": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/remark-reading-time/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remark-reading-time/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dependencies": { - "@types/unist": "^2.0.0" + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-reading-time/node_modules/unist-util-visit": { + "node_modules/remark-mdx": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-reading-time/node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -10471,20 +11037,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-smartypants": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", - "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", - "dependencies": { - "retext": "^9.0.0", - "retext-smartypants": "^6.0.0", - "unified": "^11.0.4", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/remark-stringify": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", @@ -10499,6 +11051,23 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -10537,61 +11106,12 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/retext": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", - "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "retext-latin": "^4.0.0", - "retext-stringify": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-latin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", - "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "parse-latin": "^7.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", - "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-stringify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", - "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "lowercase-keys": "^1.0.0" } }, "node_modules/reusify": { @@ -10619,20 +11139,25 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" - }, - "node_modules/roughjs": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", - "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { - "hachure-fill": "^0.5.2", - "path-data-parser": "^0.1.0", - "points-on-curve": "^0.2.0", - "points-on-path": "^0.2.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { @@ -10657,10 +11182,16 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/safe-array-concat": { "version": "1.1.3", @@ -10681,6 +11212,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -10714,16 +11264,64 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" }, + "node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + }, "node_modules/scroll-into-view-if-needed": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", @@ -10744,6 +11342,18 @@ "node": ">=4" } }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, "node_modules/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", @@ -10756,6 +11366,15 @@ "node": ">=10" } }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -10948,17 +11567,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -10969,14 +11577,60 @@ } }, "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, "engines": { - "node": ">=14.16" + "node": ">=4" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dependencies": { + "sort-keys": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length/node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" } }, "node_modules/source-map": { @@ -10995,6 +11649,25 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/space-separated-tokens": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", @@ -11004,27 +11677,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/speech-rule-engine": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz", - "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==", - "dependencies": { - "@xmldom/xmldom": "0.9.8", - "commander": "13.1.0", - "wicked-good-xpath": "1.3.0" - }, - "bin": { - "sre": "bin/sre" - } - }, - "node_modules/speech-rule-engine/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "engines": { - "node": ">=18" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -11044,6 +11696,27 @@ "node": ">=10.0.0" } }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/string.prototype.includes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", @@ -11193,15 +11866,12 @@ "node": ">=0.10.0" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dependencies": { + "is-natural-number": "^4.0.1" } }, "node_modules/strip-json-comments": { @@ -11216,6 +11886,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-markdown": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/strip-markdown/-/strip-markdown-4.2.0.tgz", + "integrity": "sha512-sZYHI1KoKOOBfIq78R3E62NHg7kk6aKtZSqiH7wWxFB6Ak6PTZe4N88aJnzjV00Lbfw91oyLpy3baYfTTqNYBA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/style-to-js": { "version": "1.1.16", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", @@ -11254,11 +11952,6 @@ } } }, - "node_modules/stylis": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11273,32 +11966,16 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/system-architecture": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", - "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" - }, "node_modules/tailwind-merge": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", @@ -11318,21 +11995,97 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, "engines": { "node": ">=6" } }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/tinyglobby": { "version": "0.2.13", @@ -11376,29 +12129,10 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/title": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/title/-/title-4.0.1.tgz", - "integrity": "sha512-xRnPkJx9nvE5MF6LkB5e8QJjE2FW8269wTu/LQdf7zZqBgPly0QJPf/CWAo7srj5so4yXfoLEdCFgurlpi47zg==", - "dependencies": { - "arg": "^5.0.0", - "chalk": "^5.0.0", - "clipboardy": "^4.0.0" - }, - "bin": { - "title": "dist/esm/bin.js" - } - }, - "node_modules/title/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -11420,6 +12154,25 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", @@ -11441,14 +12194,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "engines": { - "node": ">=6.10" - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -11474,23 +12219,6 @@ "url": "https://github.com/sponsors/Wombosvideo" } }, - "node_modules/twoslash": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/twoslash/-/twoslash-0.2.12.tgz", - "integrity": "sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw==", - "dependencies": { - "@typescript/vfs": "^1.6.0", - "twoslash-protocol": "0.2.12" - }, - "peerDependencies": { - "typescript": "*" - } - }, - "node_modules/twoslash-protocol": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/twoslash-protocol/-/twoslash-protocol-0.2.12.tgz", - "integrity": "sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg==" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -11593,6 +12321,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11601,11 +12330,6 @@ "node": ">=14.17" } }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==" - }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -11624,11 +12348,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, "node_modules/unified": { "version": "11.0.5", @@ -11648,14 +12380,10 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-find-after": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, + "node_modules/unist-util-generated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -11673,19 +12401,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-modify-children": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", - "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", - "dependencies": { - "@types/unist": "^3.0.0", - "array-iterate": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", @@ -11710,27 +12425,57 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", - "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", + "node_modules/unist-util-remove-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", + "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", @@ -11763,18 +12508,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit-children": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", - "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-visit-parents": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", @@ -11819,6 +12552,36 @@ "@unrs/resolver-binding-win32-x64-msvc": "1.6.4" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -11828,6 +12591,25 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "engines": { + "node": ">= 4" + } + }, "node_modules/use-callback-ref": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", @@ -11869,29 +12651,26 @@ } } }, - "node_modules/use-sync-external-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", - "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, "bin": { - "uuid": "dist/esm/bin/uuid" + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" } }, "node_modules/vfile": { @@ -11907,19 +12686,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-location": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", @@ -11933,56 +12699,95 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, "engines": { - "node": ">=14.0.0" + "node": ">=10.13.0" } }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "node_modules/webpack": { + "version": "5.99.8", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.8.tgz", + "integrity": "sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==", + "peer": true, "dependencies": { - "vscode-languageserver-protocol": "3.17.5" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "peer": true, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "peer": true, + "engines": { + "node": ">=4.0" } }, "node_modules/which": { @@ -12084,11 +12889,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wicked-good-xpath": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -12101,18 +12901,23 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", - "bin": { - "yaml": "bin.mjs" - }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { - "node": ">= 14" + "node": ">=0.4" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "node_modules/yocto-queue": { @@ -12128,24 +12933,13 @@ } }, "node_modules/zod": { - "version": "3.24.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", - "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", + "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-validation-error": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.4.0.tgz", - "integrity": "sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "zod": "^3.18.0" - } - }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/docs-site/package.json b/docs-site/package.json index 23abea67..57d2852d 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -3,6 +3,7 @@ "version": "0.0.0", "private": true, "scripts": { + "prebuild": "node scripts/generate-search-index.js", "build": "next build", "dev": "next dev --turbopack", "start": "next start", @@ -14,10 +15,10 @@ "clsx": "^2.1.1", "fumadocs-core": "15.2.9", "fumadocs-mdx": "11.6.1", - "fumadocs-ui": "15.2.9", + "fumadocs-ui": "^15.2.9", "lucide-react": "^0.503.0", "next": "15.3.1", - "nextra": "^4.2.17", + "nextra": "^1.1.0", "react": "^19.1.0", "react-dom": "^19.1.0", "tailwind-merge": "^3.2.0", @@ -31,6 +32,8 @@ "@types/react-dom": "^19.1.2", "eslint": "^8", "eslint-config-next": "15.3.1", + "glob": "^8.1.0", + "gray-matter": "^4.0.3", "postcss": "^8.5.3", "tailwindcss": "^4.1.4", "typescript": "^5.8.3" diff --git a/docs-site/public/yakelogo.png b/docs-site/public/yakelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2f7afdfd52342d63a8b2bd1d4c016a2facfdf2 GIT binary patch literal 549 zcmV+=0^0qFP)iIujExT8HSXGxUOs?exk zguZtVj7NLDgUp#mZnQ)IwrvutHUOCy0HuMZ06cK7k*dv|K5TT6b$*=Ap+uy1HRrnk z@y7tXZ3xST0Mm~H*qH|V%L4x90Le)h>#0NTd;sgaQumhti(5%`QeyC`0PxIc&29?R zfB^B(0Q>QA#BN2Jj(xIpKfzy2no@w;a{#hQJk(equv2r=kRHcp0QtTEnQU^qbQ1X5 z0Lg(?nPxuz^IyhoF7e!f`t6OFP*wd}SDOF;03&o#PE!Dk!Hh3B1Pv5r=J&hrKB6zM znBih#f}yx_OvqpQ-?+Kg^Hf@OR{#J2$4Nv%R49?%kHr?kFcd_CRG_%KB~_$_7I*jm z{~d}h(u6(CYR!q~mo&(NVt3sj$KI7+by}o7PfaYnm7_s^G1bj1jV5Q!W+P3b n(eb=q57THUmP$mZrG7*=wNMe(#A;rN00000NkvXXu0mjfSYG<~ literal 0 HcmV?d00001 diff --git a/docs-site/tsconfig.json b/docs-site/tsconfig.json index 4fd260f7..7e4699b6 100644 --- a/docs-site/tsconfig.json +++ b/docs-site/tsconfig.json @@ -17,7 +17,8 @@ "incremental": true, "paths": { "@/.source": ["./.source/index.ts"], - "@/*": ["./*"] + "@/*": ["./*"], + "fumadocs-ui/*": ["./node_modules/fumadocs-ui/*"] }, "plugins": [ { @@ -25,6 +26,6 @@ } ] }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "types/**/*.d.ts"], "exclude": ["node_modules"] -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c15d6f5f..b7c742cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,5 +2,4115 @@ "name": "yake-2.0", "lockfileVersion": 3, "requires": true, - "packages": {} + "packages": { + "": { + "dependencies": { + "@maximai/fumadocs-ui": "^12.5.4-beta1", + "fumadocs-ui": "^15.2.15" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", + "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", + "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", + "dependencies": { + "@floating-ui/core": "^1.7.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", + "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", + "dependencies": { + "tslib": "2" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", + "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", + "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", + "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", + "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", + "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", + "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", + "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", + "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", + "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/runtime": "^1.4.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", + "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", + "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@maximai/fumadocs-ui": { + "version": "12.5.4-beta1", + "resolved": "https://registry.npmjs.org/@maximai/fumadocs-ui/-/fumadocs-ui-12.5.4-beta1.tgz", + "integrity": "sha512-lC/LfNmU02aWFz7k14LJiGojIfUrps4nPBQPc0xvlx5fhQATseYMWfJatzNhUxfRnE5TnSOa/OIX9+wsoqbJbw==", + "dependencies": { + "@radix-ui/react-accordion": "^1.2.0", + "@radix-ui/react-collapsible": "^1.1.0", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-direction": "^1.1.0", + "@radix-ui/react-popover": "^1.1.1", + "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@tailwindcss/typography": "^0.5.13", + "class-variance-authority": "^0.7.0", + "cmdk": "^1.0.0", + "fumadocs-core": "12.5.4", + "lucide-react": "^0.408.0", + "next-themes": "^0.3.0", + "react-medium-image-zoom": "^5.2.8", + "swr": "^2.2.5", + "tailwind-merge": "^2.4.0" + }, + "peerDependencies": { + "next": ">= 14.1.0", + "react": ">= 18", + "react-dom": ">= 18" + } + }, + "node_modules/@next/env": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.2.tgz", + "integrity": "sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.2.tgz", + "integrity": "sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz", + "integrity": "sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz", + "integrity": "sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz", + "integrity": "sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz", + "integrity": "sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz", + "integrity": "sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz", + "integrity": "sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz", + "integrity": "sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@orama/orama": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.6.tgz", + "integrity": "sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==", + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.10.tgz", + "integrity": "sha512-x+URzV1siKmeXPSUIQ22L81qp2eOhjpy3tgteF+zOr4d1u0qJnFuyBF4MoQRhmKP6ivDxlvDAvqaF77gh7DOIw==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collapsible": "1.1.10", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.6.tgz", + "integrity": "sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.10.tgz", + "integrity": "sha512-O2mcG3gZNkJ/Ena34HurA3llPOEA/M4dJtIRMa6y/cknRDC8XY5UZBInKTsUwW5cUue9A4k0wi1XU5fKBzKe1w==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.6.tgz", + "integrity": "sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.13.tgz", + "integrity": "sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.9", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.6", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.8", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.9.tgz", + "integrity": "sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.6.tgz", + "integrity": "sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.12.tgz", + "integrity": "sha512-iExvawdu7n6DidDJRU5pMTdi+Z3DaVPN4UZbAGuTs7nJA8P4RvvkEz+XYI2UJjb/Hh23RrH19DakgZNLdaq9Bw==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.9", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.13.tgz", + "integrity": "sha512-84uqQV3omKDR076izYgcha6gdpN8m3z6w/AeJ83MSBJYVG/AbOHdLjAgsPZkeC/kt+k64moXFCnio8BbqXszlw==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.9", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.6", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.6", + "@radix-ui/react-portal": "1.1.8", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.6.tgz", + "integrity": "sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.8.tgz", + "integrity": "sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.2.tgz", + "integrity": "sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==", + "dependencies": { + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.9.tgz", + "integrity": "sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.8.tgz", + "integrity": "sha512-K5h1RkYA6M0Sn61BV5LQs686zqBsSC0sGzL4/Gw4mNnjzrQcGSc6YXfC6CRFNaGydSdv5+M8cb0eNsOGo0OXtQ==", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.2.tgz", + "integrity": "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.11.tgz", + "integrity": "sha512-4FiKSVoXqPP/KfzlB7lwwqoFV6EPwkrrqGp9cUYXjwDYHhvpnqq79P+EPHKcdoTE7Rl8w/+6s9rTlsfXHES9GA==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-roving-focus": "1.1.9", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.2.tgz", + "integrity": "sha512-ORCmRUbNiZIv6uV5mhFrhsIKw4UX/N3syZtyqvry61tbGm4JlgQuSn0hk5TwCARsCjkcnuRkSdCE3xfb+ADHew==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" + }, + "node_modules/@shikijs/core": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", + "dependencies": { + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/rehype": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-1.29.2.tgz", + "integrity": "sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "1.29.2", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/transformers": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.29.2.tgz", + "integrity": "sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA==", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001717", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", + "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/flexsearch": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz", + "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==" + }, + "node_modules/fumadocs-core": { + "version": "12.5.4", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-12.5.4.tgz", + "integrity": "sha512-KE6vWCSijo2xYEq+xvebNcNrPK9gcIbigMoZn20AIoOVg7aKGkkshTjwR6M2lXdq9PyV/BdgAO5u+sWlTMebeQ==", + "dependencies": { + "@formatjs/intl-localematcher": "^0.5.4", + "@shikijs/rehype": "^1.10.3", + "@shikijs/transformers": "^1.10.3", + "flexsearch": "0.7.21", + "github-slugger": "^2.0.0", + "negotiator": "^0.6.3", + "npm-to-yarn": "^2.2.1", + "react-remove-scroll": "^2.5.10", + "remark": "^15.0.0", + "remark-gfm": "^4.0.0", + "remark-mdx": "^3.0.1", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^1.10.3", + "swr": "^2.2.5", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "next": ">= 14.1.0", + "react": ">= 18", + "react-dom": ">= 18" + } + }, + "node_modules/fumadocs-ui": { + "version": "15.2.15", + "resolved": "https://registry.npmjs.org/fumadocs-ui/-/fumadocs-ui-15.2.15.tgz", + "integrity": "sha512-2CkzLkv0bP7B0jShrpmHmWLXMcpbHdaFiWDG/l4AWkGf5nN1QhirM1tSsXuwYLmQX9OZXO7xB3HU6smAuUA+kA==", + "dependencies": { + "@radix-ui/react-accordion": "^1.2.8", + "@radix-ui/react-collapsible": "^1.1.8", + "@radix-ui/react-dialog": "^1.1.11", + "@radix-ui/react-direction": "^1.1.1", + "@radix-ui/react-navigation-menu": "^1.2.10", + "@radix-ui/react-popover": "^1.1.11", + "@radix-ui/react-scroll-area": "^1.2.6", + "@radix-ui/react-slot": "^1.2.0", + "@radix-ui/react-tabs": "^1.1.9", + "class-variance-authority": "^0.7.1", + "fumadocs-core": "15.2.15", + "lodash.merge": "^4.6.2", + "next-themes": "^0.4.6", + "postcss-selector-parser": "^7.1.0", + "react-medium-image-zoom": "^5.2.14", + "tailwind-merge": "^3.2.0" + }, + "peerDependencies": { + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x", + "tailwindcss": "^3.4.14 || ^4.0.0" + }, + "peerDependenciesMeta": { + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/fumadocs-ui/node_modules/@formatjs/intl-localematcher": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.4.0.tgz", + "integrity": "sha512-0YOzTSRDn/IAfQWtK791gs1u8v87HNGToU6IwcA3K7nPoVOrS2Dh6X6A6YfXgPTSkTwR5y6myk0MnI0htjnwrA==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/engine-javascript": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.4.0.tgz", + "integrity": "sha512-1ywDoe+z/TPQKj9Jw0eU61B003J9DqUFRfH+DVSzdwPUFhR7yOmfyLzUrFz0yw8JxFg/NgzXoQyyykXgO21n5Q==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/engine-oniguruma": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.0.tgz", + "integrity": "sha512-zwcWlZ4OQuJ/+1t32ClTtyTU1AiDkK1lhtviRWoq/hFqPjCNyLj22bIg9rB7BfoZKOEOfrsGz7No33BPCf+WlQ==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/langs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.0.tgz", + "integrity": "sha512-bQkR+8LllaM2duU9BBRQU0GqFTx7TuF5kKlw/7uiGKoK140n1xlLAwCgXwSxAjJ7Htk9tXTFwnnsJTCU5nDPXQ==", + "dependencies": { + "@shikijs/types": "3.4.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/rehype": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-3.4.0.tgz", + "integrity": "sha512-wm7RTSmrcmjZg+F9JRrsH0Brwi36joUMXkUWIDmBGW+XExNEi8Xjmmp2NOBXa3DujZtnL6Dbcg7V6gtZabGoXw==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "3.4.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/themes": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.0.tgz", + "integrity": "sha512-YPP4PKNFcFGLxItpbU0ZW1Osyuk8AyZ24YEFaq04CFsuCbcqydMvMUTi40V2dkc0qs1U2uZFrnU6s5zI6IH+uA==", + "dependencies": { + "@shikijs/types": "3.4.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/transformers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.4.0.tgz", + "integrity": "sha512-GrGaOj1/I6h75IU0VvjdWDpqGCynx0bqHzd1rErBTGxrcmusYIBhrV7aEySWyJ6HHb9figeXfcNxUFS1HKUfBw==", + "dependencies": { + "@shikijs/core": "3.4.0", + "@shikijs/types": "3.4.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.0.tgz", + "integrity": "sha512-EUT/0lGiE//7j5N/yTMNMT3eCWNcHJLrRKxT0NDXWIfdfSmFJKfPX7nMmRBrQnWboAzIsUziCThrYMMhjbMS1A==", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/fumadocs-ui/node_modules/fumadocs-core": { + "version": "15.2.15", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-15.2.15.tgz", + "integrity": "sha512-Ly1xMGW8HYirs/O2yLX3cGHcOM/1nfKTk7gKiQ5J4wycGE1KdWFnGW2S60nLP8itgeqlYAp35FaNDNRDxCzWgA==", + "dependencies": { + "@formatjs/intl-localematcher": "^0.6.1", + "@orama/orama": "^3.1.6", + "@shikijs/rehype": "^3.3.0", + "@shikijs/transformers": "^3.3.0", + "github-slugger": "^2.0.0", + "hast-util-to-estree": "^3.1.3", + "hast-util-to-jsx-runtime": "^2.3.6", + "image-size": "^2.0.2", + "negotiator": "^1.0.0", + "react-remove-scroll": "^2.6.3", + "remark": "^15.0.0", + "remark-gfm": "^4.0.1", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^3.3.0", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@oramacloud/client": "1.x.x || 2.x.x", + "algoliasearch": "4.24.0", + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x" + }, + "peerDependenciesMeta": { + "@oramacloud/client": { + "optional": true + }, + "algoliasearch": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fumadocs-ui/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fumadocs-ui/node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/fumadocs-ui/node_modules/oniguruma-to-es": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/fumadocs-ui/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fumadocs-ui/node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/fumadocs-ui/node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/fumadocs-ui/node_modules/shiki": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.4.0.tgz", + "integrity": "sha512-Ni80XHcqhOEXv5mmDAvf5p6PAJqbUc/RzFeaOqk+zP5DLvTPS3j0ckvA+MI87qoxTQ5RGJDVTbdl/ENLSyyAnQ==", + "dependencies": { + "@shikijs/core": "3.4.0", + "@shikijs/engine-javascript": "3.4.0", + "@shikijs/engine-oniguruma": "3.4.0", + "@shikijs/langs": "3.4.0", + "@shikijs/themes": "3.4.0", + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/fumadocs-ui/node_modules/tailwind-merge": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", + "integrity": "sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true, + "peer": true + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lucide-react": { + "version": "0.408.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.408.0.tgz", + "integrity": "sha512-8kETAAeWmOvtGIr7HPHm51DXoxlfkNncQ5FZWXR+abX8saQwMYXANWIkUstaYtcKSo/imOe/q+tVFA8ANzdSVA==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.2.tgz", + "integrity": "sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==", + "peer": true, + "dependencies": { + "@next/env": "15.3.2", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.2", + "@next/swc-darwin-x64": "15.3.2", + "@next/swc-linux-arm64-gnu": "15.3.2", + "@next/swc-linux-arm64-musl": "15.3.2", + "@next/swc-linux-x64-gnu": "15.3.2", + "@next/swc-linux-x64-musl": "15.3.2", + "@next/swc-win32-arm64-msvc": "15.3.2", + "@next/swc-win32-x64-msvc": "15.3.2", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", + "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" + } + }, + "node_modules/npm-to-yarn": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-2.2.1.tgz", + "integrity": "sha512-O/j/ROyX0KGLG7O6Ieut/seQ0oiTpHF2tXAcFbpdTLQFiaNtkyTXXocM1fwpaa60dg1qpWj0nHlbNhx6qwuENQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==" + }, + "node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "peer": true + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-medium-image-zoom": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.14.tgz", + "integrity": "sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/rpearce" + } + ], + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==" + }, + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", + "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", + "hasInstallScript": true, + "optional": true, + "peer": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.7.1" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.1", + "@img/sharp-darwin-x64": "0.34.1", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.1", + "@img/sharp-linux-arm64": "0.34.1", + "@img/sharp-linux-s390x": "0.34.1", + "@img/sharp-linux-x64": "0.34.1", + "@img/sharp-linuxmusl-arm64": "0.34.1", + "@img/sharp-linuxmusl-x64": "0.34.1", + "@img/sharp-wasm32": "0.34.1", + "@img/sharp-win32-ia32": "0.34.1", + "@img/sharp-win32-x64": "0.34.1" + } + }, + "node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "peer": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "dependencies": { + "style-to-object": "1.0.8" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "peer": true, + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/swr": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", + "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz", + "integrity": "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==", + "peer": true + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } } From c153ec0a54623e01f1ae0357f6b5c1b731974689 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:29:16 +0100 Subject: [PATCH 070/118] updated gitignore --- .gitignore | 7 ++++++- docs-site/content/docs/data/composedword.mdx | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 40b878db..2e295bc2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ -node_modules/ \ No newline at end of file +# Dependency directories +node_modules/ +.npm +# Don't ignore these files +!.next/ +!out/ \ No newline at end of file diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/data/composedword.mdx index 949b4e63..e5da072c 100644 --- a/docs-site/content/docs/data/composedword.mdx +++ b/docs-site/content/docs/data/composedword.mdx @@ -1,3 +1,5 @@ + + import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # ComposedWord From aaa590d540316f9312cc81f0d62bd725d059f5eb Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:33:57 +0100 Subject: [PATCH 071/118] Update package.json --- docs-site/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/docs-site/package.json b/docs-site/package.json index 57d2852d..0a95f634 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "scripts": { - "prebuild": "node scripts/generate-search-index.js", "build": "next build", "dev": "next dev --turbopack", "start": "next start", From 5e430f5c18e558215da9f21e39b854e76b86263f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:36:21 +0100 Subject: [PATCH 072/118] Update layout.tsx --- docs-site/app/layout.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs-site/app/layout.tsx b/docs-site/app/layout.tsx index 3f262270..e7c6271c 100644 --- a/docs-site/app/layout.tsx +++ b/docs-site/app/layout.tsx @@ -1,5 +1,4 @@ import { Metadata } from 'next'; -import { basePath } from './config'; import './global.css'; import { RootProvider } from 'fumadocs-ui/provider'; From 19d27dbc533b06d26ec04f30d8a48a23bf7e980e Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:39:05 +0100 Subject: [PATCH 073/118] Update layout.config.tsx --- docs-site/app/layout.config.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index be3a29f8..5a25d622 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -14,7 +14,7 @@ export const baseOptions: BaseLayoutProps = { title: ( <> YAKE Logo Date: Wed, 7 May 2025 12:47:19 +0100 Subject: [PATCH 074/118] cleaned pke and updated logo layout --- docs-site/app/layout.config.tsx | 2 +- docs-site/app/layout.tsx | 5 +- pke/yake.py | 459 -------------------------------- 3 files changed, 4 insertions(+), 462 deletions(-) delete mode 100644 pke/yake.py diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index 5a25d622..be3a29f8 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -14,7 +14,7 @@ export const baseOptions: BaseLayoutProps = { title: ( <> YAKE Logoyakelogo.png`, - shortcut: `yakelogo.png`, + icon: `${basePath}/yakelogo.png`, + shortcut: `${basePath}/yakelogo.png`, }, }; diff --git a/pke/yake.py b/pke/yake.py deleted file mode 100644 index 4c2ea94b..00000000 --- a/pke/yake.py +++ /dev/null @@ -1,459 +0,0 @@ -# -*- coding: utf-8 -*- -# Author: Florian Boudin and Vítor Mangaravite -# Date: 09-10-2018 - -"""YAKE keyphrase extraction model. - -Statistical approach to keyphrase extraction described in: - -* Ricardo Campos, Vítor Mangaravite, Arian Pasquali, Alípio Mário Jorge, - Célia Nunes and Adam Jatowt. - YAKE! Collection-Independent Automatic Keyword Extractor. - *Proceedings of ECIR*, pages 806-810, 2018. - -""" - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import math -import re -import string -from collections import defaultdict - -import numpy -from nltk.metrics import edit_distance - -from pke.base import LoadFile - - -class YAKE(LoadFile): - """YAKE keyphrase extraction model. - - Parameterized example:: - - import pke - from nltk.corpus import stopwords - - # 1. create a YAKE extractor. - extractor = pke.unsupervised.YAKE() - - # 2. load the content of the document. - extractor.load_document(input='path/to/input', - language='en', - normalization=None) - - - # 3. select {1-3}-grams not containing punctuation marks and not - # beginning/ending with a stopword as candidates. - stoplist = stopwords.words('english') - extractor.candidate_selection(n=3, stoplist=stoplist) - - # 4. weight the candidates using YAKE weighting scheme, a window (in - # words) for computing left/right contexts can be specified. - window = 2 - use_stems = False # use stems instead of words for weighting - extractor.candidate_weighting(window=window, - stoplist=stoplist, - use_stems=use_stems) - - # 5. get the 10-highest scored candidates as keyphrases. - # redundant keyphrases are removed from the output using levenshtein - # distance and a threshold. - threshold = 0.8 - keyphrases = extractor.get_n_best(n=10, threshold=threshold) - """ - - def __init__(self): - """Redefining initializer for YAKE. - """ - - super().__init__() - - self.words = defaultdict(set) - """ Container for the vocabulary. """ - - self.contexts = defaultdict(lambda: ([], [])) - """ Container for word contexts. """ - - self.features = defaultdict(dict) - """ Container for word features. """ - - self.surface_to_lexical = {} - """ Mapping from surface form to lexical form. """ - - def candidate_selection(self, n=3, stoplist=None): - """Select 1-3 grams as keyphrase candidates. Candidates beginning or - ending with a stopword are filtered out. Words that do not contain - at least one alpha-numeric character are not allowed. - - Args: - n (int): the n-gram length, defaults to 3. - stoplist (list): the stoplist for filtering candidates, defaults to - the nltk stoplist. - """ - - # select ngrams from 1 to 3 grams - self.ngram_selection(n=n) - - # filter candidates containing punctuation marks - self.candidate_filtering( - stoplist=list(string.punctuation) + - ['-lrb-', '-rrb-', '-lcb-', '-rcb-', '-lsb-', '-rsb-'] - ) - - # initialize empty list if stoplist is not provided - if stoplist is None: - stoplist = self.stoplist - - # further filter candidates - for k in list(self.candidates): - - # get the candidate - v = self.candidates[k] - - # filter candidates starting/ending with a stopword - if v.surface_forms[0][0].lower() in stoplist or \ - v.surface_forms[0][-1].lower() in stoplist or \ - len(v.surface_forms[0][0]) < 3 or \ - len(v.surface_forms[0][-1]) < 3: - del self.candidates[k] - - def _vocabulary_building(self, use_stems=False): - """Build the vocabulary that will be used to weight candidates. Only - words containing at least one alpha-numeric character are kept. - - Args: - use_stems (bool): whether to use stems instead of lowercase words - for weighting, defaults to False. - """ - - # loop through sentences - for i, sentence in enumerate(self.sentences): - - # compute the offset shift for the sentence - shift = sum(s.length for s in self.sentences[0:i]) - - # loop through words in sentence - for j, word in enumerate(sentence.words): - - # consider words containing at least one alpha-numeric character - if self._is_alphanum(word) and \ - not re.search('(?i)^-[lr][rcs]b-$', word): - - # get the word or stem - index = word.lower() - if use_stems: - index = sentence.stems[j] - - # add the word occurrence - self.words[index].add((shift + j, shift, i, word)) - - def _contexts_building(self, use_stems=False, window=2): - """Build the contexts of the words for computing the relatdeness - feature. Words that occur within a window of n words are considered as - context words. - - Args: - use_stems (bool): whether to use stems instead of lowercase words - for weighting, defaults to False. - window (int): the size in words of the window used for computing - co-occurrence counts, defaults to 2. - """ - # change: split sentence to block of words - # (this is important to avoid consider cooccurrence between terms like - # word1 and word2 on sentence "word1, word2") - - # loop through sentences - for sentence in enumerate(self.sentences): - - # lowercase the words - words = [w.lower() for w in sentence.words] - - # replace with stems if needed - if use_stems: - words = sentence.stems - - buffer = [] - # loop through words in sentence - for word in enumerate(words): - - # skip if word is not in vocabulary - if word not in self.words: - buffer = [] - continue - - # add the right context - for w in [ w for w in list(buffer[max(0, len(buffer) - window):len(buffer)]) ]: - self.contexts[word][0].append(w) - self.contexts[w][1].append(word) - - buffer.append(word) - buffer = [] - - def _feature_extraction(self, stoplist=None): - """Compute the weight of individual words using the following five - features: - - 1. CASING: gives importance to acronyms or words starting with a - capital letter. - - CASING(w) = max(tf(U(w)), tf(A(w))) / (1 + log(tf(w))) - - with tf(U(w) being the # times the word starts with an uppercase - letter, excepts beginning of sentences. tf(A(w)) is the # times - the word is marked as an acronym. - - 2. POSITION: gives importance to words occurring at the beginning of - the document. - - POSITION(w) = log( log( 3 + Median(Sen(w)) ) ) - - with Sen(w) contains the position of the sentences where w - occurs. - - 3. FREQUENCY: gives importance to frequent words. - - FREQUENCY(w) = tf(w) / ( MEAN_tf + STD_tf) - - with MEAN_tf and STD_tf computed on valid_tfs which are words - that are not stopwords. - - 4. RELATEDNESS: gives importance to words that do not have the - characteristics of stopwords. - - RELATEDNESS(w) = 1 + (WR+WL)*(tf(w)/MAX_tf) + PL + PR - - 5. DIFFERENT: gives importance to words that occurs in multiple - sentences. - - DIFFERENT(w) = SF(w) / # sentences - - with SF(w) being the sentence frequency of word w. - - Args: - stoplist (list): the stoplist for filtering candidates, defaults to - the nltk stoplist. - """ - # change: Update the WRel feature generation - - # initialize stoplist list if not provided - if stoplist is None: - stoplist = self.stoplist - - # get the Term Frequency of each word - tf = [len(self.words[w]) for w in self.words] - - # get the Term Frequency of non-stop words - tf_nsw = [len(self.words[w]) for w in self.words if w not in stoplist] - - # compute statistics - mean_tf = numpy.mean(tf_nsw) - std_tf = numpy.std(tf_nsw) - max_tf = max(tf) - - # Loop through the words - for word in self.words: - self.features[word]['isstop'] = word in stoplist or len(word) < 3 - - # Term Frequency - self.features[word]['tf'] = len(self.words[word]) - - # Uppercase/Acronym Term Frequencies - self.features[word]['tf_A'] = 0 - self.features[word]['tf_U'] = 0 - for (offset, shift, surface_form) in self.words[word]: - if surface_form.isupper() and len(word) > 1: - self.features[word]['tf_A'] += 1 - elif surface_form[0].isupper() and offset != shift: - self.features[word]['tf_U'] += 1 - - # 1. CASING feature - self.features[word]['CASING'] = max(self.features[word]['tf_A'], - self.features[word]['tf_U']) - self.features[word]['CASING'] /= 1.0 + math.log( - self.features[word]['tf']) - - # 2. POSITION feature - sentence_ids = list(set([t[2] for t in self.words[word]])) - self.features[word]['POSITION'] = math.log(3.0 + numpy.median(sentence_ids)) - self.features[word]['POSITION'] = math.log(self.features[word]['POSITION']) - - # 3. FREQUENCY feature - self.features[word]['FREQUENCY'] = self.features[word]['tf'] - self.features[word]['FREQUENCY'] /= (mean_tf + std_tf) - - # 4. RELATEDNESS feature - self.features[word]['WL'] = 0.0 - if len(self.contexts[word][0]): - self.features[word]['WL'] = len(set(self.contexts[word][0])) - self.features[word]['WL'] /= len(self.contexts[word][0]) - self.features[word]['PL'] = len(set(self.contexts[word][0])) / max_tf - - self.features[word]['WR'] = 0.0 - if len(self.contexts[word][1]): - self.features[word]['WR'] = len(set(self.contexts[word][1])) - self.features[word]['WR'] /= len(self.contexts[word][1]) - self.features[word]['PR'] = len(set(self.contexts[word][1])) / max_tf - - self.features[word]['RELATEDNESS'] = 1 - #self.features[word]['RELATEDNESS'] += self.features[word]['PL'] - #self.features[word]['RELATEDNESS'] += self.features[word]['PR'] - self.features[word]['RELATEDNESS'] += (self.features[word]['WR'] + - self.features[word]['WL']) * \ - (self.features[word]['tf'] / max_tf) - - # 5. DIFFERENT feature - self.features[word]['DIFFERENT'] = len(set(sentence_ids)) - self.features[word]['DIFFERENT'] /= len(self.sentences) - - # assemble the features to weight words - A = self.features[word]['CASING'] - B = self.features[word]['POSITION'] - C = self.features[word]['FREQUENCY'] - D = self.features[word]['RELATEDNESS'] - E = self.features[word]['DIFFERENT'] - self.features[word]['weight'] = (D * B) / (A + (C / D) + (E / D)) - - def candidate_weighting(self, window=2, stoplist=None, use_stems=False): - """Candidate weight calculation as described in the YAKE paper. - - Args: - stoplist (list): the stoplist for filtering candidates, defaults to - the nltk stoplist. - use_stems (bool): whether to use stems instead of lowercase words - for weighting, defaults to False. - window (int): the size in words of the window used for computing - co-occurrence counts, defaults to 2. - """ - # change: Consider stopwords between non-stopwords on condidate weight generation - - # build the vocabulary - self._vocabulary_building(use_stems=use_stems) - - # extract the contexts - self._contexts_building(use_stems=use_stems, window=window) - - # compute the word features - self._feature_extraction(stoplist=stoplist) - - # compute candidate weights - for k, v in self.candidates.items(): - - # use stems - if use_stems: - weights = [self.features[t]['weight'] for t in v.lexical_form] - self.weights[k] = numpy.prod(weights) - self.weights[k] /= len(v.offsets) * (1 + sum(weights)) - - # use words - else: - lowercase_forms = [' '.join(t).lower() for t in v.surface_forms] - for i, candidate in enumerate(lowercase_forms): - tf = lowercase_forms.count(candidate) - words_cand = [t.lower() for t in v.surface_forms[i]] - prod_ = 1. - sum_ = 0. - for j, word_cand in enumerate(words_cand): - if self.features[word_cand]['isstop']: - term_left = words_cand[j-1] - term_right = words_cand[j+1] - term_stop = word_cand - - prob_t1 = self.contexts[ - term_left][1].count(term_stop) / self.features[term_left]['tf'] - - prob_t2 = self.contexts[ - term_stop][0].count(term_right) / self.features[term_right]['tf'] - - prob = prob_t1 * prob_t2 - prod_ *= (1 + (1 - prob ) ) - sum_ -= (1 - prob) - else: - prod_ *= self.features[word_cand]['weight'] - sum_ += self.features[word_cand]['weight'] - self.weights[candidate] = prod_ - self.weights[candidate] /= tf * (1 + sum_) - self.surface_to_lexical[candidate] = k - - def is_redundant(self, candidate, prev, threshold=0.8): - """Test if one candidate is redundant with respect to a list of already - selected candidates. A candidate is considered redundant if its - levenshtein distance, with another candidate that is ranked higher in - the list, is greater than a threshold. - - Args: - candidate (str): the lexical form of the candidate. - prev (list): the list of already selected candidates. - threshold (float): the threshold used when computing the - levenshtein distance, defaults to 0.8. - """ - - # loop through the already selected candidates - for prev_candidate in prev: - dist = edit_distance(candidate, prev_candidate) - dist /= max(len(candidate), len(prev_candidate)) - if (1.0 - dist) > threshold: - return True - return False - - def get_n_best(self, - n=10, - redundancy_removal=True, - stemming=False,): - """ Returns the n-best candidates given the weights. - - Args: - n (int): the number of candidates, defaults to 10. - redundancy_removal (bool): whether redundant keyphrases are - filtered out from the n-best list using levenshtein - distance, defaults to True. - stemming (bool): whether to extract stems or surface forms - (lowercased, first occurring form of candidate), default to - stems. - threshold (float): the threshold used when computing the - levenshtein distance, defaults to 0.8. - """ - - # sort candidates by ascending weight - best = sorted(self.weights, key=self.weights.get, reverse=False) - - # remove redundant candidates - if redundancy_removal: - - # initialize a new container for non redundant candidates - non_redundant_best = [] - - # loop through the best candidates - for candidate in best: - - # test wether candidate is redundant - if self.is_redundant(candidate, non_redundant_best): - continue - - # add the candidate otherwise - non_redundant_best.append(candidate) - - # break computation if the n-best are found - if len(non_redundant_best) >= n: - break - - # copy non redundant candidates in best container - best = non_redundant_best - - # get the list of best candidates as (lexical form, weight) tuples - n_best = [(u, self.weights[u]) for u in best[:min(n, len(best))]] - - # replace with surface forms if no stemming - if stemming: - for i, (candidate, weight) in enumerate(n_best): - - if candidate not in self.candidates: - candidate = self.surface_to_lexical[candidate] - - candidate = ' '.join(self.candidates[candidate].lexical_form) - n_best[i] = (candidate, weight) - - # return the list of best candidates - return n_best From fc8cf81ac6a0bcc9cf744a5ba95659be57ae43dc Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:52:58 +0100 Subject: [PATCH 075/118] Update config.ts --- docs-site/app/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/app/config.ts b/docs-site/app/config.ts index 689dc135..f4f1e199 100644 --- a/docs-site/app/config.ts +++ b/docs-site/app/config.ts @@ -1,2 +1,2 @@ // app/config.ts -export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf/docs-site' : ''; \ No newline at end of file +export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf' : ''; \ No newline at end of file From 954feca4ac706ff6074b73f43f3c47fa2b974f11 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 13:01:23 +0100 Subject: [PATCH 076/118] Update layout.config.tsx --- docs-site/app/layout.config.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index be3a29f8..9e0a9ad0 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -13,10 +13,10 @@ export const baseOptions: BaseLayoutProps = { nav: { title: ( <> - YAKE Logo From f5366339a4cfb97b947173362050f70b7b37f747 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 13:07:30 +0100 Subject: [PATCH 077/118] Update layout.config.tsx --- docs-site/app/layout.config.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index 9e0a9ad0..25fbf162 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -1,5 +1,4 @@ -import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; -import { basePath } from './config'; +import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';; import Image from 'next/image'; /** @@ -13,8 +12,8 @@ export const baseOptions: BaseLayoutProps = { nav: { title: ( <> - YAKE Logo Date: Wed, 7 May 2025 13:52:46 +0100 Subject: [PATCH 078/118] updated documentation --- docs-site/app/(home)/page.tsx | 2 +- docs-site/content/docs/core/yake.mdx | 141 +++++++++++-- docs-site/content/docs/data/composedword.mdx | 181 +++++++++++++++-- docs-site/content/docs/data/singleword.mdx | 186 +++++++++++++++--- yake/__pycache__/yake.cpython-310.pyc | Bin 4059 -> 8232 bytes .../__pycache__/composed_word.cpython-310.pyc | Bin 7005 -> 11292 bytes .../__pycache__/single_word.cpython-310.pyc | Bin 6086 -> 10979 bytes yake/data/__pycache__/utils.cpython-310.pyc | Bin 2268 -> 4415 bytes yake/data/composed_word.py | 184 ++++++++++++++++- yake/data/single_word.py | 167 ++++++++++++++-- yake/data/utils.py | 94 +++++++-- yake/yake.py | 143 +++++++++++++- 12 files changed, 1003 insertions(+), 95 deletions(-) diff --git a/docs-site/app/(home)/page.tsx b/docs-site/app/(home)/page.tsx index 3500b956..8d3c00bb 100644 --- a/docs-site/app/(home)/page.tsx +++ b/docs-site/app/(home)/page.tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; export default function HomePage() { return (
    -

    Hello

    +

    Welcome to YAKE! Documentation website

    Open{' '} **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. @@ -10,7 +9,14 @@ The `KeywordExtractor` class is the main entry point for YAKE (Yet Another Keywo ## Module Overview ```python -"""Module for keyword extraction from text documents.""" +""" +Keyword extraction module for YAKE. + +This module provides the KeywordExtractor class which serves as the main entry point +for the YAKE keyword extraction algorithm. It handles configuration, stopword loading, +deduplication of similar keywords, and the entire extraction pipeline from raw text +to ranked keywords. +""" import os import jellyfish @@ -18,7 +24,7 @@ from yake.data import DataCore from .Levenshtein import Levenshtein ``` -The `KeywordExtractor` class provides an interface to extract and process keywords from text documents using statistical features and deduplication. +The `KeywordExtractor` class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. ## Class Definition @@ -30,7 +36,21 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def __init__(self, **kwargs): - """Initialize the KeywordExtractor with configuration parameters.""" + """ + Initialize the KeywordExtractor with configuration parameters. + + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values self.config = { "lan": kwargs.get("lan", "en"), "n": kwargs.get("n", 3), @@ -41,6 +61,7 @@ The `KeywordExtractor` class provides an interface to extract and process keywor "features": kwargs.get("features", None), } + # Load appropriate stopwords and deduplication function self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) ``` @@ -51,11 +72,11 @@ The `KeywordExtractor` class provides an interface to extract and process keywor **Parameters:** - `lan` (str, optional): Language for stopwords (default: "en") - `n` (int, optional): Maximum n-gram size (default: 3) -- `dedup_lim` (float, optional): Deduplication similarity threshold (default: 0.9) +- `dedup_lim` (float, optional): Similarity threshold for deduplication (default: 0.9) - `dedup_func` (str, optional): Deduplication function to use (default: "seqm") -- `window_size` (int, optional): Window size for co-occurrence (default: 1) +- `window_size` (int, optional): Size of word window for co-occurrence (default: 1) - `top` (int, optional): Maximum number of keywords to return (default: 20) -- `features` (dict, optional): Custom features for keyword scoring (default: None) +- `features` (list, optional): List of features to use for scoring (default: None = all features) - `stopwords` (set, optional): Custom stopwords set (default: None, loads from language file) ## Core Methods @@ -68,35 +89,58 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def extract_keywords(self, text): - """Extract keywords from text.""" + """ + Extract keywords from text. + + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from + + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input if not text: return [] + # Normalize text by replacing newlines with spaces text = text.replace("\n", " ") - # Create a config dictionary for DataCore + # Create a configuration dictionary for DataCore core_config = { "windows_size": self.config["window_size"], "n": self.config["n"], } + # Initialize the data core with the text dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + # Build features for single terms and multi-word terms dc.build_single_terms_features(features=self.config["features"]) dc.build_mult_terms_features(features=self.config["features"]) + # Collect and sort all valid candidates by score (lower is better) result_set = [] candidates_sorted = sorted( [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h ) + # If deduplication is disabled, return all candidates up to the limit if self.config["dedup_lim"] >= 1.0: return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ : self.config["top"] ] + # Perform deduplication by comparing candidates for cand in candidates_sorted: should_add = True + # Check if this candidate is too similar to any already selected for h, cand_result in result_set: if ( self.dedup_function(cand.unique_kw, cand_result.unique_kw) @@ -105,11 +149,15 @@ The `KeywordExtractor` class provides an interface to extract and process keywor should_add = False break + # Add candidate if it passes deduplication if should_add: result_set.append((cand.h, cand)) + + # Stop once we have enough candidates if len(result_set) == self.config["top"]: break + # Format results as (keyword, score) tuples return [(cand.kw, h) for (h, cand) in result_set] ``` @@ -120,7 +168,7 @@ The `KeywordExtractor` class provides an interface to extract and process keywor - `text` (str): The text to extract keywords from **Returns:** -- list: A list of tuples containing (keyword, score) pairs, sorted by relevance +- list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) ## Helper Methods @@ -132,24 +180,41 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def _load_stopwords(self, stopwords): - """Load stopwords from file or use provided set.""" + """ + Load stopwords from file or use provided set. + + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use + + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available if stopwords is not None: return set(stopwords) + # Determine the path to the appropriate stopword list dir_path = os.path.dirname(os.path.realpath(__file__)) local_path = os.path.join( "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" ) + # Fall back to language-agnostic list if specific language not available if not os.path.exists(os.path.join(dir_path, local_path)): local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") resource_path = os.path.join(dir_path, local_path) + # Attempt to read the stopword file with UTF-8 encoding try: with open(resource_path, encoding="utf-8") as stop_file: return set(stop_file.read().lower().split("\n")) except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails print("Warning: reading stopword list as ISO-8859-1") with open(resource_path, encoding="ISO-8859-1") as stop_file: return set(stop_file.read().lower().split("\n")) @@ -164,7 +229,19 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def _get_dedup_function(self, func_name): - """Retrieve the appropriate deduplication function.""" + """ + Retrieve the appropriate deduplication function. + + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use + + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations return { "jaro_winkler": self.jaro, "jaro": self.jaro, @@ -186,6 +263,19 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def jaro(self, cand1, cand2): + """ + Calculate Jaro similarity between two strings. + + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return jellyfish.jaro(cand1, cand2) ``` @@ -198,6 +288,19 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def levs(self, cand1, cand2): + """ + Calculate normalized Levenshtein similarity between two strings. + + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) ``` @@ -210,6 +313,20 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def seqm(self, cand1, cand2): + """ + Calculate sequence matcher ratio between two strings. + + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return Levenshtein.ratio(cand1, cand2) ``` diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/data/composedword.mdx index e5da072c..400d763b 100644 --- a/docs-site/content/docs/data/composedword.mdx +++ b/docs-site/content/docs/data/composedword.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # ComposedWord @@ -16,7 +14,7 @@ class ComposedWord: # Initialize a composed word from term tuples [(tag, word, term_obj)] ``` -The `ComposedWord` class processes and scores multi-word candidates for keyword extraction based on their constituent terms and statistical properties. +The `ComposedWord` class stores and aggregates information about multi-word keyword candidates, calculating combined scores from the properties of their constituent terms. It tracks statistics like term frequency, integrity, and provides methods to validate whether a phrase is likely to be a good keyword. ## Constructor @@ -27,7 +25,15 @@ The `ComposedWord` class processes and scores multi-word candidates for keyword ```python - def __init__(self, terms): # [ (tag, word, term_obj) ] + def __init__(self, terms): + """ + Initialize a ComposedWord object representing a multi-word term. + + Args: + terms (list): List of tuples (tag, word, term_obj) representing + the individual words in this phrase. Can be None to + initialize an invalid candidate. + """ # If terms is None, initialize an invalid candidate if terms is None: self.data = { @@ -96,18 +102,33 @@ invalid_composed = ComposedWord(None) ```python def update_h(self, features=None, is_virtual=False): - """Update the term's score based on its constituent terms.""" + """ + Update the term's score based on its constituent terms. + + Calculates a combined relevance score for the multi-word term by + aggregating scores of its constituent words, with special handling for + stopwords to improve keyword quality. + + Args: + features (list, optional): Specific features to use for scoring + is_virtual (bool): Whether this is a virtual candidate not in text + """ sum_h = 0.0 prod_h = 1.0 + # Process each term in the phrase for t, term_base in enumerate(self.terms): + # Handle non-stopwords directly if not term_base.stopword: sum_h += term_base.h prod_h *= term_base.h + # Handle stopwords according to configured weight method else: if STOPWORD_WEIGHT == "bi": + # BiWeight: use probabilities of adjacent term connections prob_t1 = 0.0 + # Check connection with previous term if t > 0 and term_base.g.has_edge( self.terms[t - 1].id, self.terms[t].id ): @@ -115,7 +136,9 @@ invalid_composed = ComposedWord(None) term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] / self.terms[t - 1].tf ) + prob_t2 = 0.0 + # Check connection with next term if t < len(self.terms) - 1 and term_base.g.has_edge( self.terms[t].id, self.terms[t + 1].id ): @@ -124,22 +147,28 @@ invalid_composed = ComposedWord(None) / self.terms[t + 1].tf ) + # Calculate combined probability and update scores prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob elif STOPWORD_WEIGHT == "h": + # HWeight: treat stopwords like normal words sum_h += term_base.h prod_h *= term_base.h elif STOPWORD_WEIGHT == "none": + # None: ignore stopwords entirely pass + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) ``` @@ -152,10 +181,21 @@ invalid_composed = ComposedWord(None) ```python def is_valid(self): - """Check if this candidate is valid.""" + """ + Check if this candidate is a valid keyword phrase. + + A valid keyword phrase doesn't contain unusual characters or digits, + and doesn't start or end with stopwords. + + Returns: + bool: True if this is a valid keyword candidate, False otherwise + """ is_valid = False + # Check that at least one tag sequence has no unusual characters or digits for tag in self.tags: is_valid = is_valid or ("u" not in tag and "d" not in tag) + + # A valid keyword cannot start or end with a stopword return is_valid and not self.start_or_end_stopwords ``` @@ -168,7 +208,16 @@ invalid_composed = ComposedWord(None) ```python def uptade_cand(self, cand): - """Update this candidate with data from another candidate.""" + """ + Update this candidate with data from another candidate. + + Merges tag information from another candidate representing + the same keyword phrase. + + Args: + cand (ComposedWord): Another instance of the same keyword to merge with + """ + # Add all tags from the other candidate to this one's tags for tag in cand.tags: self.tags.add(tag) ``` @@ -182,14 +231,30 @@ invalid_composed = ComposedWord(None) ```python def get_composed_feature(self, feature_name, discart_stopword=True): - """Get composed features from constituent terms.""" + """ + Get composed features from constituent terms. + + Calculates combined metrics for the phrase based on individual term metrics. + + Args: + feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") + discart_stopword (bool): Whether to ignore stopwords in calculation + + Returns: + tuple: (sum, prod, prod_over_sum) of the feature values + """ + # Get feature values from each term, filtering stopwords if requested list_of_features = [ getattr(term, feature_name) for term in self.terms if (discart_stopword and not term.stopword) or not discart_stopword ] + + # Calculate aggregate statistics sum_f = sum(list_of_features) prod_f = np.prod(list_of_features) + + # Return the three aggregated values return (sum_f, prod_f, prod_f / (sum_f + 1)) ``` @@ -202,23 +267,50 @@ invalid_composed = ComposedWord(None) ```python def build_features(self, params): - """Build features for machine learning or evaluation.""" + """ + Build features for machine learning or evaluation. + + Generates feature vectors that can be used for model training, + evaluation, or visualization of keyword properties. + + Args: + params (dict): Parameters for feature generation including: + - features (list): Features to include + - _stopword (list): Whether to consider stopwords [True, False] + - doc_id (str): Document identifier + - keys (list): Gold standard keywords for evaluation + - rel (bool): Whether to include relevance feature + - rel_approx (bool): Whether to include approximate relevance + - is_virtual (bool): Whether this is a virtual candidate + + Returns: + tuple: (features_list, column_names, matched_gold_standards) + """ + # Get feature configuration from parameters features = params.get( "features", ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] ) _stopword = params.get("_stopword", [True, False]) + + # Use defaults if not provided if features is None: features = ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] if _stopword is None: _stopword = [True, False] + + # Initialize feature collection columns = [] features_cand = [] seen = set() + + # Add document identifier if provided if params.get("doc_id") is not None: columns.append("doc_id") features_cand.append(params["doc_id"]) + # Add gold standard match features if keys are provided if params.get("keys") is not None: + # Exact match feature if params.get("rel", True): columns.append("rel") if self.unique_kw in params["keys"] or params.get("is_virtual", False): @@ -227,10 +319,12 @@ invalid_composed = ComposedWord(None) else: features_cand.append(0) + # Approximate match feature using string similarity if params.get("rel_approx", True): columns.append("rel_approx") max_gold_ = ("", 0.0) for gold_key in params["keys"]: + # Calculate normalized Levenshtein similarity dist = 1.0 - jellyfish.levenshtein_distance( gold_key, self.unique_kw, @@ -239,6 +333,7 @@ invalid_composed = ComposedWord(None) features_cand.append(max_gold_[1]) features_cand.append(max_gold_[1]) + # Add basic candidate properties columns.append("kw") features_cand.append(self.unique_kw) columns.append("h") @@ -250,21 +345,28 @@ invalid_composed = ComposedWord(None) columns.append("is_virtual") columns.append("is_virtual") features_cand.append(int(params.get("is_virtual", False))) + + # Add all requested features with different stopword handling for feature_name in features: for discart_stopword in _stopword: + # Calculate aggregate feature metrics (f_sum, f_prod, f_sum_prod) = self.get_composed_feature( feature_name, discart_stopword=discart_stopword ) + + # Add sum feature columns.append( f"{'n' if discart_stopword else ''}s_sum_K{feature_name}" ) features_cand.append(f_sum) + # Add product feature columns.append( f"{'n' if discart_stopword else ''}s_prod_K{feature_name}" ) features_cand.append(f_prod) + # Add sum-product feature columns.append( f"{'n' if discart_stopword else ''}s_sum_prod_K{feature_name}" ) @@ -282,15 +384,28 @@ invalid_composed = ComposedWord(None) ```python def update_h_old(self, features=None, is_virtual=False): - """Legacy method for updating the term's score.""" + """ + Legacy method for updating the term's score. + + Preserved for backward compatibility but uses a slightly different + approach to calculate scores. + + Args: + features (list, optional): Specific features to use for scoring + is_virtual (bool): Whether this is a virtual candidate not in text + """ sum_h = 0.0 prod_h = 1.0 + # Process each term in the phrase for t, term_base in enumerate(self.terms): + # Skip terms with zero frequency in virtual candidates if is_virtual and term_base.tf == 0: continue + # Handle stopwords with probability-based weighting if term_base.stopword: + # Calculate probability of co-occurrence with previous term prob_t1 = 0.0 if term_base.g.has_edge(self.terms[t - 1].id, self.terms[t].id): prob_t1 = ( @@ -298,6 +413,7 @@ invalid_composed = ComposedWord(None) / self.terms[t - 1].tf ) + # Calculate probability of co-occurrence with next term prob_t2 = 0.0 if term_base.g.has_edge(self.terms[t].id, self.terms[t + 1].id): prob_t2 = ( @@ -305,17 +421,25 @@ invalid_composed = ComposedWord(None) / self.terms[t + 1].tf ) + # Update scores based on combined probability prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob else: + # Handle normal words directly sum_h += term_base.h prod_h *= term_base.h + + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) ``` @@ -374,10 +498,21 @@ Candidates are considered valid if: ```python def is_valid(self): - """Check if this candidate is valid.""" + """ + Check if this candidate is a valid keyword phrase. + + A valid keyword phrase doesn't contain unusual characters or digits, + and doesn't start or end with stopwords. + + Returns: + bool: True if this is a valid keyword candidate, False otherwise + """ is_valid = False + # Check that at least one tag sequence has no unusual characters or digits for tag in self.tags: is_valid = is_valid or ("u" not in tag and "d" not in tag) + + # A valid keyword cannot start or end with a stopword return is_valid and not self.start_or_end_stopwords ``` @@ -387,14 +522,30 @@ When analyzing multi-word terms, the `ComposedWord` class composes features from ```python def get_composed_feature(self, feature_name, discart_stopword=True): - """Get composed features from constituent terms.""" + """ + Get composed features from constituent terms. + + Calculates combined metrics for the phrase based on individual term metrics. + + Args: + feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") + discart_stopword (bool): Whether to ignore stopwords in calculation + + Returns: + tuple: (sum, prod, prod_over_sum) of the feature values + """ + # Get feature values from each term, filtering stopwords if requested list_of_features = [ getattr(term, feature_name) for term in self.terms if (discart_stopword and not term.stopword) or not discart_stopword ] + + # Calculate aggregate statistics sum_f = sum(list_of_features) prod_f = np.prod(list_of_features) + + # Return the three aggregated values return (sum_f, prod_f, prod_f / (sum_f + 1)) ``` @@ -417,9 +568,9 @@ Lower scores indicate better keyword candidates. The `ComposedWord` class handles stopwords differently based on the `STOPWORD_WEIGHT` configuration: -- `"bi"`: Uses co-occurrence probabilities to weight stopwords -- `"h"`: Uses stopword h-scores directly -- `"none"`: Ignores stopwords in scoring +- `"bi"`: Uses bi-directional co-occurrence probabilities to weight stopwords +- `"h"`: Uses stopword h-scores directly (treats stopwords like normal words) +- `"none"`: Ignores stopwords in scoring completely ## Complete Usage Example diff --git a/docs-site/content/docs/data/singleword.mdx b/docs-site/content/docs/data/singleword.mdx index e854cc4b..79d74cf3 100644 --- a/docs-site/content/docs/data/singleword.mdx +++ b/docs-site/content/docs/data/singleword.mdx @@ -2,19 +2,27 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/ # SingleWord -The `SingleWord` class represents individual terms (words) in YAKE (Yet Another Keyword Extractor), providing statistical features used in keyword scoring. +The `SingleWord` class represents individual terms in YAKE (Yet Another Keyword Extractor), providing the statistical features and measurements used in keyword extraction. > **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. -## Class Overview +## Module Overview ```python -class SingleWord: - def __init__(self, unique, idx, graph): - # Initialize a single word term with attributes and metrics +""" +Single word term representation module for YAKE keyword extraction. + +This module contains the SingleWord class which represents individual terms +in a document for keyword extraction. It tracks statistical features like +term frequency, position, and relationships with other terms to calculate +a relevance score for each word. +""" + +import math +import numpy as np ``` -The `SingleWord` class tracks term frequency, position, and other statistical features that help determine the term's importance in the document. +The `SingleWord` class stores and calculates statistical features for individual terms, including frequency, position, spread, and relationship metrics. These features are used to calculate a relevance score that indicates the word's importance in the document. ## Constructor @@ -26,7 +34,14 @@ The `SingleWord` class tracks term frequency, position, and other statistical fe ```python def __init__(self, unique, idx, graph): - """Initialize a single word term with attributes and metrics.""" + """ + Initialize a SingleWord term object. + + Args: + unique (str): The unique normalized term this object represents + idx (int): Unique identifier for the term in the document + graph (networkx.DiGraph): Word co-occurrence graph from the document + """ self.id = idx # Fast access needed as it's used in graph operations self.g = graph # Fast access needed for network calculations @@ -57,14 +72,14 @@ The `SingleWord` class tracks term frequency, position, and other statistical fe **Parameters:** -- `unique` (str): The unique term (normalized word form) -- `idx` (int): Numeric identifier for the term -- `graph` (networkx.DiGraph): Reference to the co-occurrence graph +- `unique` (str): The unique normalized term this object represents +- `idx` (int): Unique identifier for the term in the document +- `graph` (networkx.DiGraph): Word co-occurrence graph from the document **Example:** ```python import networkx as nx -from yake.datarepresentation import SingleWord +from yake.data import SingleWord # Create a graph g = nx.DiGraph() @@ -75,7 +90,7 @@ term = SingleWord("algorithm", 1, g) ## Dictionary-Style Access -The `SingleWord` class supports dictionary-style attribute access for flexibility: +The `SingleWord` class provides dictionary-style attribute access for flexibility: @@ -85,7 +100,15 @@ The `SingleWord` class supports dictionary-style attribute access for flexibilit ```python def __getitem__(self, key): - """Access attributes dictionary-style with obj['key'].""" + """ + Access attributes dictionary-style with obj['key']. + + Args: + key (str): The attribute key to access + + Returns: + Any: The value associated with the key + """ return self.data[key] ``` @@ -98,7 +121,13 @@ The `SingleWord` class supports dictionary-style attribute access for flexibilit ```python def __setitem__(self, key, value): - """Set attributes dictionary-style with obj['key'] = value.""" + """ + Set attributes dictionary-style with obj['key'] = value. + + Args: + key (str): The attribute key to set + value (Any): The value to associate with the key + """ self.data[key] = value ``` @@ -111,7 +140,16 @@ The `SingleWord` class supports dictionary-style attribute access for flexibilit ```python def get(self, key, default=None): - """Get with default, mimicking dict.get().""" + """ + Get with default, mimicking dict.get(). + + Args: + key (str): The attribute key to access + default (Any, optional): The default value if key doesn't exist + + Returns: + Any: The value associated with the key or the default value + """ return self.data.get(key, default) ``` @@ -136,13 +174,28 @@ position = term.get("wpos", 1.0) ```python def add_occur(self, tag, sent_id, pos_sent, pos_text): - """Add occurrence information.""" + """ + Add occurrence information for this term. + + Records where in the document this term appears, tracking sentence ID, + position within sentence, global position in text, and updates term + frequency counters. + + Args: + tag (str): Part-of-speech tag for this occurrence ('a' for acronym, 'n' for proper noun, etc.) + sent_id (int): Sentence ID where the term appears + pos_sent (int): Position within the sentence + pos_text (int): Global position in the entire text + """ + # Create empty list for this sentence if it's the first occurrence if sent_id not in self.occurs: self.occurs[sent_id] = [] + # Record position information for this occurrence self.occurs[sent_id].append((pos_sent, pos_text)) self.data["tf"] += 1.0 + # Update special counters for acronyms and proper nouns if tag == "a": self.data["tf_a"] += 1.0 if tag == "n": @@ -158,7 +211,15 @@ position = term.get("wpos", 1.0) ```python def get_metric(self, name): - """Get the value of any word metric.""" + """ + Get the value of any word metric. + + Args: + name (str): The name of the metric to retrieve + + Returns: + float: The value of the requested metric + """ return self.data.get(name, 0.0) ``` @@ -171,7 +232,13 @@ position = term.get("wpos", 1.0) ```python def set_metric(self, name, value): - """Set the value of any word metric.""" + """ + Set the value of any word metric. + + Args: + name (str): The name of the metric to set + value (float): The new value for the metric + """ self.data[name] = value ``` @@ -184,7 +251,21 @@ position = term.get("wpos", 1.0) ```python def get_graph_metrics(self): - """Calculate all graph-based metrics at once.""" + """ + Calculate all graph-based metrics at once. + + Analyzes the term's connections in the co-occurrence graph to compute + various relationship metrics that measure its contextual importance. + + Returns: + dict: Dictionary containing the calculated graph metrics: + - wdr: Word different right (number of outgoing edges) + - wir: Word importance right (sum of outgoing edge weights) + - pwr: Probability weight right (wdr/wir) + - wdl: Word different left (number of incoming edges) + - wil: Word importance left (sum of incoming edge weights) + - pwl: Probability weight left (wdl/wil) + """ # Out-edges metrics wdr = len(self.g.out_edges(self.id)) wir = sum(d["tf"] for (_, _, d) in self.g.out_edges(self.id, data=True)) @@ -207,7 +288,20 @@ position = term.get("wpos", 1.0) ```python def update_h(self, stats, features=None): - """Update the word's score based on statistics.""" + """ + Update the word's score based on statistics. + + Calculates all the statistical features that determine the word's + relevance score, using document-level statistics for normalization. + + Args: + stats (dict): Document statistics including: + - max_tf (float): Maximum term frequency in the document + - avg_tf (float): Average term frequency + - std_tf (float): Standard deviation of term frequency + - number_of_sentences (int): Total number of sentences + features (list, optional): Specific features to calculate, or None for all + """ max_tf = stats["max_tf"] avg_tf = stats["avg_tf"] std_tf = stats["std_tf"] @@ -218,6 +312,7 @@ position = term.get("wpos", 1.0) # Update metrics based on features if features is None or "wrel" in features: + # Calculate relatedness metrics using graph connections self.data["pl"] = graph_metrics["wdl"] / max_tf self.data["pr"] = graph_metrics["wdr"] / max_tf self.data["wrel"] = (0.5 + (graph_metrics["pwl"] * (self.tf / max_tf))) + ( @@ -225,17 +320,21 @@ position = term.get("wpos", 1.0) ) if features is None or "wfreq" in features: + # Calculate frequency metric normalized by corpus statistics self.data["wfreq"] = self.tf / (avg_tf + std_tf) if features is None or "wspread" in features: + # Calculate spread as proportion of sentences containing the term self.data["wspread"] = len(self.occurs) / number_of_sentences if features is None or "wcase" in features: + # Calculate case feature from uppercase and proper noun occurrences self.data["wcase"] = max(self.data["tf_a"], self.data["tf_n"]) / ( 1.0 + math.log(self.tf) ) if features is None or "wpos" in features: + # Calculate position feature from median position of occurrences self.data["wpos"] = math.log( math.log(3.0 + np.median(list(self.occurs.keys()))) ) @@ -253,7 +352,7 @@ position = term.get("wpos", 1.0) ## Properties -The `SingleWord` class provides property accessors for compatibility with direct attribute access: +The `SingleWord` class provides property accessors for its main attributes: ### Basic Properties @@ -270,6 +369,11 @@ is_stopword = term.stopword score = term.h frequency = term.tf occurrences = term.occurs + +# Setter examples +term.stopword = True +term.h = 0.25 +term.tf = 5.0 ``` ### Feature Properties @@ -291,6 +395,11 @@ position_metric = term.wpos spread_metric = term.wspread left_probability = term.pl right_probability = term.pr + +# Setter examples +term.wfreq = 0.75 +term.wcase = 0.5 +term.wrel = 1.2 ``` ## Feature Calculation Logic @@ -299,60 +408,84 @@ The `SingleWord` class calculates several features that contribute to keyword sc ### Word Frequency (`wfreq`) -Measures how frequent the term is compared to the average document term frequency. +Measures how frequent the term is compared to the average document term frequency. ```python +# Normalized term frequency compared to document statistics wfreq = term_frequency / (average_term_frequency + standard_deviation) ``` +Higher values indicate more frequent terms relative to the document average. + ### Word Case (`wcase`) Represents the significance of capitalization in determining proper nouns and acronyms. ```python +# Case significance: higher values for acronyms and proper nouns wcase = max(uppercase_freq, proper_noun_freq) / (1.0 + log(term_frequency)) ``` +Higher values indicate terms more likely to be acronyms or proper nouns. + ### Word Relevance (`wrel`) Evaluates the term's importance based on its co-occurrence relationships. ```python -wrel = (0.5 + (probability_weighted_left * (tf / max_tf))) + - (0.5 + (probability_weighted_right * (tf / max_tf))) +# Relevance based on graph connection probabilities and term frequency +wrel = (0.5 + (graph_metrics["pwl"] * (tf / max_tf))) + + (0.5 + (graph_metrics["pwr"] * (tf / max_tf))) ``` +Higher values indicate terms with more meaningful contextual relationships. + ### Word Position (`wpos`) Considers the typical position of the word in sentences, with the intuition that important terms appear earlier. ```python -wpos = log(log(3.0 + median_position_in_sentences)) +# Position score based on median sentence position +wpos = math.log(math.log(3.0 + median_position_in_sentences)) ``` +Lower values indicate terms that tend to appear earlier in sentences. + ### Word Spread (`wspread`) Measures how widely the term is distributed across the document's sentences. ```python +# Document coverage: proportion of sentences containing the term wspread = number_of_sentences_with_term / total_number_of_sentences ``` +Higher values indicate terms that appear throughout the document. + ## Final Score Calculation The final score (`h`) combines all metrics in a formula designed to rank candidate keywords: ```python +# Lower scores indicate better keyword candidates h = (wpos * wrel) / (wcase + (wfreq / wrel) + (wspread / wrel)) ``` +The formula balances: +- Term position (earlier is better) +- Term relevance (more connections is better) +- Term case (proper nouns and acronyms preferred) +- Term frequency (higher is better) +- Term spread (wider distribution is better) + Lower scores indicate better keyword candidates in YAKE's ranking system. ## Usage Example ```python import networkx as nx -from yake.datarepresentation import SingleWord +import numpy as np +from yake.data import SingleWord # Create a graph for co-occurrence g = nx.DiGraph() @@ -364,6 +497,7 @@ term = SingleWord("algorithm", 1, g) # Add occurrences term.add_occur("n", 0, 5, 5) # In sentence 0, position 5 term.add_occur("n", 1, 2, 15) # In sentence 1, position 2 +term.add_occur("n", 2, 8, 35) # In sentence 2, position 8 # Update the score with statistics stats = { diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 6c3609a663ed83ef03610236cef74a8dfef09280..72120fef68e56d9d6725100bbed8500b0cae0814 100644 GIT binary patch literal 8232 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 B_x1n) delta 712 zcmZ8fTWb?h5bm5kNjIC#HY|y0-CQ;X#3)T;ZC`AS#XGIH`eg9dHM^n3G#kz)sQci9 zKcG+s`lO(53WAh8>$8GCK;q93l!`RYDQcm+>^HMB-+VhebKWd`D;Rzvp^ebh`J%4A z8{0HiX2R)fzT0bgcGDO3Bk$>BU%0mSq$`|8cg=6xP2sQGT?*K)-{`G-?QT%P_wZ^u zte$T9;VNP+&ROr8G3!l?-hFId}9#~+p#+0(-N*%G}! z&%Qiym8c|rh0K6AXp#p-7b$a(9BLk~{b@_pES}yg}6IbUc#W z&KQhC zbZBrLblQW;i9wrC$>$0O_M1nOKs;bWLkWwxku74aa06CwqmZr0GZ>fz>Ietg=a`yN eW2&Mmx*{SJE{_VAj3`N%!>@(QF_M;_GWj2A0+})Z diff --git a/yake/data/__pycache__/composed_word.cpython-310.pyc b/yake/data/__pycache__/composed_word.cpython-310.pyc index 77d89d44bca4a8ddc930279a8b3871d199481358..7ce1e8bc2bd9be404ee0b5740c0d6ee63e917748 100644 GIT binary patch literal 11292 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 diff --git a/yake/data/__pycache__/single_word.cpython-310.pyc b/yake/data/__pycache__/single_word.cpython-310.pyc index 8995ea2a5946d84a061560a97dd0a42f110a79a7..1b5318cdba17f963ff1d8a5985c4650e2de49143 100644 GIT binary patch literal 10979 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 GV*dfNG$XM9 diff --git a/yake/data/__pycache__/utils.cpython-310.pyc b/yake/data/__pycache__/utils.cpython-310.pyc index f5f2b9dc6fddef8cb7c7f11f219a3eda4eb1cfac..ddb2312bd5f7195c510c718bea4b7952ef3ffe26 100644 GIT binary patch literal 4415 zcma)A&2Jn@74NSZk2`TO2``DmLTES{SEMQV0^o9#1nh;YobNiRBt2(lU)CI-?2tvuTs<%XGepr-G5NVZ@Cj z!qw?M+a60TXIG3NDsDGnB*ZW)QekOXxuQh!lo6RIOLeTl(u7tVp7P`nGdQKPVl>VQ zV+mYT56k0RCUGkJ;n%R6^GVMwFXV{}x zSxwV|z;S zeQgz`a~@&7Zx7qXI!A49xLEB5(7WOX6vl-mv%b;=-`+YooxO0J=Hx6C6S(%?DP<|<=WORQ z30czyHPETZ)UrTWOXmO~)36JsPi3>pX;{gUK3e*1_c!{(?yooQ?0nhlm2Ox%uU&TJ zh2d*=vDYd+CCh~H8|+&pA06c8AOB6VHZ8vj`=7XY-UkG;j0G^WAmuk8yxa|dFP}4UE3KT z6#0OVNcZ!@GK5WchjC)0dWYP81x44IE9sJxT$=+4pnB?2x0Ww{aq?T7XZaUb|;a~ zB;c?CQtNCOD{YvF0h;7mghJM)MBB=8%Db@048#M4+j=fkje%0F(eboqK;$Hk;2ATp zwB)SJacUVB0Ov}43K^d0tO`0rO%r{r3ss8OjF3)Fa&u^@AuYt|GXxGik*?KL#D5Qk z3t>=e^?yY{0vujv8!VN;V~SR&Zywojd*GBvzO6@w`hQ}$vHPmYbwc=BZRu3gO z&Pc(C^;%)Ln>~Tl0W_FpGJEihgHd88K;FWuKSDEdrUbgKaR9mQ3EWFK`+@Rij^`PF z3b(5q@6X;-O2fV)H@!f%^(L|)iu?~8zX}fq8R6~++MD$~Vl;JYvaj9SUlV0Z9=Rq2 zd?QW?F-kv?DW<&s-O@dA#~v z=C#;z;*rtywZ_;HzVMJ|eOgi1MQh73UR9S(9m1a%?y--V4pnONnZS5|bcU{2#B66i zi_9%TSoz*Gps#*p$DZ1>V-Mq&2(bQhacPTW^1<xL0G^r>BkxZ&dsA zwA!N~%TiMoQ1p}*SGF8+74Evs|AK4VP}oEgRTC-$D7YwL7f^N_F~e=@<`!bu9@mK0 zEM>6)x{Q&^Bb>84o1k&FT9_AZKqL!P737MTatu(7nZq1QbJ~y~R#mZ(DKpM&wE$6u zl2hK-tUFKivx-q5vJL79oy&-7)wyK4S7G|Ltrc+>U_X$hpj#j#pu|OSJ3OSCIS0(7 zs2o9tM=DDXC+MZcWDkk1Do(7TinP##xYpHBmKfZh&LCFnR$J!BY+M7oQls1 zdNFEbnX}+Zx?znv!;T?klyH>u!wRbj=wjAI0zftLIMXqe(o|fL-RucM1wbBIsE%mX zy~}<)OH#C_H^)u+oC2 zzv>*lH3tsy`s@Y& zTiSPf{o9a+QRYqeB%qBGL>>7dQ>3o}F5(&ar&e|SA`SNs)s z)$O9Neg`k}SG~XueDxzN_b!zSySpNbc6Sy1TTw1o2@fV+dwz>PogO49R+O`$DO|OW_%~RLkgPG=bAuyzDN!LA&F1 JzH|A5{{TDd(tQ8` delta 368 zcmYjM!AiqG5bbWZ+jL2j7__Z=SrxQaEeIYgy$T-npcgL^(`~yp&6aFLjbBms1N1C- z5Dy;p13dTvg5cdBC|KO+#ew%`VCKDPKxVhko#@57EnfQLmPsCISgSz|_ccSwrpSTO?gM5PcSDA2rI);&TzVWkcN; zzADvBX=}nc2u%RLs|K84s2)sSsr>6<7vM30Xo9iYEFL>ESr2DANH88h-V`0+q|F_s zKNw`E>MztASyzF51y 0 and term_base.g.has_edge( self.terms[t - 1].id, self.terms[t].id ): @@ -203,7 +337,9 @@ def update_h(self, features=None, is_virtual=False): term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] / self.terms[t - 1].tf ) + prob_t2 = 0.0 + # Check connection with next term if t < len(self.terms) - 1 and term_base.g.has_edge( self.terms[t].id, self.terms[t + 1].id ): @@ -212,34 +348,53 @@ def update_h(self, features=None, is_virtual=False): / self.terms[t + 1].tf ) + # Calculate combined probability and update scores prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob elif STOPWORD_WEIGHT == "h": + # HWeight: treat stopwords like normal words sum_h += term_base.h prod_h *= term_base.h elif STOPWORD_WEIGHT == "none": + # None: ignore stopwords entirely pass + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) def update_h_old(self, features=None, is_virtual=False): - """Legacy method for updating the term's score.""" + """ + Legacy method for updating the term's score. + + Preserved for backward compatibility but uses a slightly different + approach to calculate scores. + + Args: + features (list, optional): Specific features to use for scoring + is_virtual (bool): Whether this is a virtual candidate not in text + """ sum_h = 0.0 prod_h = 1.0 + # Process each term in the phrase for t, term_base in enumerate(self.terms): + # Skip terms with zero frequency in virtual candidates if is_virtual and term_base.tf == 0: continue + # Handle stopwords with probability-based weighting if term_base.stopword: + # Calculate probability of co-occurrence with previous term prob_t1 = 0.0 if term_base.g.has_edge(self.terms[t - 1].id, self.terms[t].id): prob_t1 = ( @@ -247,6 +402,7 @@ def update_h_old(self, features=None, is_virtual=False): / self.terms[t - 1].tf ) + # Calculate probability of co-occurrence with next term prob_t2 = 0.0 if term_base.g.has_edge(self.terms[t].id, self.terms[t + 1].id): prob_t2 = ( @@ -254,15 +410,23 @@ def update_h_old(self, features=None, is_virtual=False): / self.terms[t + 1].tf ) + # Update scores based on combined probability prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob else: + # Handle normal words directly sum_h += term_base.h prod_h *= term_base.h + + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) diff --git a/yake/data/single_word.py b/yake/data/single_word.py index 5afcdf4e..c64e6cce 100644 --- a/yake/data/single_word.py +++ b/yake/data/single_word.py @@ -1,13 +1,37 @@ -"""SingleWord class for representing individual terms.""" +""" +Single word term representation module for YAKE keyword extraction. + +This module contains the SingleWord class which represents individual terms +in a document for keyword extraction. It tracks statistical features like +term frequency, position, and relationships with other terms to calculate +a relevance score for each word. +""" import math import numpy as np class SingleWord: - """Representation of a single word term in the document.""" + """ + Representation of a single word term in the document. + + This class stores and calculates statistical features for individual terms, + including frequency, position, spread, and relationship metrics. These features + are used to calculate a relevance score that indicates the word's importance + in the document. + + Attributes: + See property accessors below for available attributes. + """ def __init__(self, unique, idx, graph): - + """ + Initialize a SingleWord term object. + + Args: + unique (str): The unique normalized term this object represents + idx (int): Unique identifier for the term in the document + graph (networkx.DiGraph): Word co-occurrence graph from the document + """ self.id = idx # Fast access needed as it's used in graph operations self.g = graph # Fast access needed for network calculations @@ -35,61 +59,135 @@ def __init__(self, unique, idx, graph): # Forward common dictionary operations to self.data def __getitem__(self, key): - """Access attributes dictionary-style with obj['key'].""" + """ + Access attributes dictionary-style with obj['key']. + + Args: + key (str): The attribute key to access + + Returns: + Any: The value associated with the key + """ return self.data[key] def __setitem__(self, key, value): - """Set attributes dictionary-style with obj['key'] = value.""" + """ + Set attributes dictionary-style with obj['key'] = value. + + Args: + key (str): The attribute key to set + value (Any): The value to associate with the key + """ self.data[key] = value def get(self, key, default=None): - """Get with default, mimicking dict.get().""" + """ + Get with default, mimicking dict.get(). + + Args: + key (str): The attribute key to access + default (Any, optional): The default value if key doesn't exist + + Returns: + Any: The value associated with the key or the default value + """ return self.data.get(key, default) # The most commonly used properties remain as explicit accessors for backward compatibility @property def unique_term(self): + """Get the unique normalized term this object represents.""" return self.data["unique_term"] @property def stopword(self): + """Get whether this term is a stopword.""" return self.data["stopword"] @stopword.setter def stopword(self, value): + """ + Set whether this term is a stopword. + + Args: + value (bool): True if the term is a stopword, False otherwise + """ self.data["stopword"] = value @property def h(self): + """Get the final relevance score of this term (lower is better).""" return self.data["h"] @h.setter def h(self, value): + """ + Set the final relevance score of this term. + + Args: + value (float): The new score value + """ self.data["h"] = value @property def tf(self): + """Get the term frequency (number of occurrences) in the document.""" return self.data["tf"] @tf.setter def tf(self, value): + """ + Set the term frequency value. + + Args: + value (float): The new term frequency value + """ self.data["tf"] = value @property def occurs(self): + """Get the dictionary of sentence occurrences for this term.""" return self.data["occurs"] # Everything else uses the generic accessor methods def get_metric(self, name): - """Get the value of any word metric.""" + """ + Get the value of any word metric. + + Args: + name (str): The name of the metric to retrieve + + Returns: + float: The value of the requested metric + """ return self.data.get(name, 0.0) def set_metric(self, name, value): - """Set the value of any word metric.""" + """ + Set the value of any word metric. + + Args: + name (str): The name of the metric to set + value (float): The new value for the metric + """ self.data[name] = value def get_graph_metrics(self): - """Calculate all graph-based metrics at once.""" + """ + Calculate all graph-based metrics at once. + + Analyzes the term's connections in the co-occurrence graph to compute + various relationship metrics that measure its contextual importance. + + Returns: + dict: Dictionary containing the calculated graph metrics: + - wdr: Word different right (number of outgoing edges) + - wir: Word importance right (sum of outgoing edge weights) + - pwr: Probability weight right (wdr/wir) + - wdl: Word different left (number of incoming edges) + - wil: Word importance left (sum of incoming edge weights) + - pwl: Probability weight left (wdl/wil) + """ # Out-edges metrics wdr = len(self.g.out_edges(self.id)) wir = sum(d["tf"] for (_, _, d) in self.g.out_edges(self.id, data=True)) @@ -103,7 +201,20 @@ def get_graph_metrics(self): return {"wdr": wdr, "wir": wir, "pwr": pwr, "wdl": wdl, "wil": wil, "pwl": pwl} def update_h(self, stats, features=None): - """Update the word's score based on statistics.""" + """ + Update the word's score based on statistics. + + Calculates all the statistical features that determine the word's + relevance score, using document-level statistics for normalization. + + Args: + stats (dict): Document statistics including: + - max_tf (float): Maximum term frequency in the document + - avg_tf (float): Average term frequency + - std_tf (float): Standard deviation of term frequency + - number_of_sentences (int): Total number of sentences + features (list, optional): Specific features to calculate, or None for all + """ max_tf = stats["max_tf"] avg_tf = stats["avg_tf"] std_tf = stats["std_tf"] @@ -114,6 +225,7 @@ def update_h(self, stats, features=None): # Update metrics based on features if features is None or "wrel" in features: + # Calculate relatedness metrics using graph connections self.data["pl"] = graph_metrics["wdl"] / max_tf self.data["pr"] = graph_metrics["wdr"] / max_tf self.data["wrel"] = (0.5 + (graph_metrics["pwl"] * (self.tf / max_tf))) + ( @@ -121,17 +233,21 @@ def update_h(self, stats, features=None): ) if features is None or "wfreq" in features: + # Calculate frequency metric normalized by corpus statistics self.data["wfreq"] = self.tf / (avg_tf + std_tf) if features is None or "wspread" in features: + # Calculate spread as proportion of sentences containing the term self.data["wspread"] = len(self.occurs) / number_of_sentences if features is None or "wcase" in features: + # Calculate case feature from uppercase and proper noun occurrences self.data["wcase"] = max(self.data["tf_a"], self.data["tf_n"]) / ( 1.0 + math.log(self.tf) ) if features is None or "wpos" in features: + # Calculate position feature from median position of occurrences self.data["wpos"] = math.log( math.log(3.0 + np.median(list(self.occurs.keys()))) ) @@ -144,13 +260,28 @@ def update_h(self, stats, features=None): ) def add_occur(self, tag, sent_id, pos_sent, pos_text): - """Add occurrence information.""" + """ + Add occurrence information for this term. + + Records where in the document this term appears, tracking sentence ID, + position within sentence, global position in text, and updates term + frequency counters. + + Args: + tag (str): Part-of-speech tag for this occurrence ('a' for acronym, 'n' for proper noun, etc.) + sent_id (int): Sentence ID where the term appears + pos_sent (int): Position within the sentence + pos_text (int): Global position in the entire text + """ + # Create empty list for this sentence if it's the first occurrence if sent_id not in self.occurs: self.occurs[sent_id] = [] + # Record position information for this occurrence self.occurs[sent_id].append((pos_sent, pos_text)) self.data["tf"] += 1.0 + # Update special counters for acronyms and proper nouns if tag == "a": self.data["tf_a"] += 1.0 if tag == "n": @@ -159,56 +290,70 @@ def add_occur(self, tag, sent_id, pos_sent, pos_text): # For backward compatibility, define access to common metrics as properties @property def wfreq(self): + """Get the word frequency metric.""" return self.data["wfreq"] @wfreq.setter def wfreq(self, value): + """Set the word frequency metric.""" self.data["wfreq"] = value @property def wcase(self): + """Get the word case metric.""" return self.data["wcase"] @wcase.setter def wcase(self, value): + """Set the word case metric.""" self.data["wcase"] = value @property def wrel(self): + """Get the word relevance metric.""" return self.data["wrel"] @wrel.setter def wrel(self, value): + """Set the word relevance metric.""" self.data["wrel"] = value @property def wpos(self): + """Get the word position metric.""" return self.data["wpos"] @wpos.setter def wpos(self, value): + """Set the word position metric.""" self.data["wpos"] = value @property def wspread(self): + """Get the word spread metric.""" return self.data["wspread"] @wspread.setter def wspread(self, value): + """Set the word spread metric.""" self.data["wspread"] = value @property def pl(self): + """Get the probability left metric.""" return self.data["pl"] @pl.setter def pl(self, value): + """Set the probability left metric.""" self.data["pl"] = value @property def pr(self): + """Get the probability right metric.""" return self.data["pr"] @pr.setter def pr(self, value): + """Set the probability right metric.""" self.data["pr"] = value diff --git a/yake/data/utils.py b/yake/data/utils.py index 666af817..761b1b22 100644 --- a/yake/data/utils.py +++ b/yake/data/utils.py @@ -1,59 +1,129 @@ -"""Utility functions for text processing.""" +""" +Text processing utility module for YAKE keyword extraction. + +This module provides essential text preprocessing functions for the YAKE algorithm, +including text normalization, sentence segmentation, tokenization, and word +categorization. These utilities form the foundation for clean and consistent +text analysis throughout the keyword extraction pipeline. +""" import re from segtok.segmenter import split_multi from segtok.tokenizer import web_tokenizer, split_contractions +# Stopword weighting method for multi-word term scoring: +# - "bi": Use bi-directional weighting (default, considers term connections) +# - "h": Use direct term scores (treat stopwords like normal words) +# - "none": Ignore stopwords completely STOPWORD_WEIGHT = "bi" def pre_filter(text): - """Pre-filter the text to normalize line breaks and spacing.""" + """ + Normalize text by standardizing line breaks and spacing. + + This function preprocesses raw text to ensure consistent handling of + paragraphs, line breaks, and whitespace. It preserves paragraph structure + by detecting capitalized line beginnings while normalizing other whitespace. + + Args: + text (str): The raw input text to be normalized + + Returns: + str: The normalized text with standardized whitespace and line breaks + """ + # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") + + # Split the text into lines parts = text.split("\n") buffer = "" + + # Process each line for part in parts: + # Determine separator: preserve paragraph breaks for lines starting with capital letters sep = " " if prog.match(part): sep = "\n\n" + + # Append the processed line to the buffer, replacing tabs with spaces buffer += sep + part.replace("\t", " ") + return buffer def tokenize_sentences(text): - """Tokenize text into sentences and words.""" + """ + Split text into sentences and tokenize into words. + + This function performs two-level tokenization: first dividing the text into + sentences using segtok's sentence segmenter, then tokenizing each sentence + into individual words. It also handles contractions and filters out empty + or invalid tokens. + + Args: + text (str): The input text to be tokenized + + Returns: + list: A nested list structure where each inner list contains the tokens + for a single sentence in the original text + """ return [ + # Inner list: tokenize each sentence into words [ - w + w # Keep only valid word tokens for w in split_contractions(web_tokenizer(s)) + # Filter out standalone apostrophes and empty tokens if not (w.startswith("'") and len(w) > 1) and len(w) > 0 ] + # Outer list: iterate through sentences for s in list(split_multi(text)) + # Skip empty sentences if len(s.strip()) > 0 ] def get_tag(word, i, exclude): - """Determine the tag of a word based on its characteristics.""" - - # Check if word is numeric + """ + Determine the linguistic tag of a word based on its characteristics. + + This function categorizes words into different types based on their + orthographic features (capitalization, digits, special characters). + These tags are used to identify proper nouns, acronyms, numbers, and + unusual token patterns, which affect keyword scoring and filtering. + + Args: + word (str): The word to classify + i (int): Position of the word within its sentence (0 = first word) + exclude (set): Set of characters to consider as punctuation/special chars + + Returns: + str: A single character tag representing the word type: + - "d": Digit or numeric value + - "u": Unusual word (mixed alphanumeric or special characters) + - "a": Acronym (all uppercase) + - "n": Proper noun (capitalized, not at start of sentence) + - "p": Plain word (default) + """ + # Check if word is numeric (with possible commas and a decimal point) if word.replace(",", "").isdigit() or word.replace(",", "").replace(".", "", 1).isdigit(): return "d" - # Use counting instead of list comprehensions for better performance + # Count character types for classification cdigit = sum(c.isdigit() for c in word) calpha = sum(c.isalpha() for c in word) cexclude = sum(c in exclude for c in word) - # Check for unusual combinations + # Classify unusual tokens: mixed alphanumeric, special chars, or multiple punctuation if (cdigit > 0 and calpha > 0) or (cdigit == 0 and calpha == 0) or cexclude > 1: return "u" - # Check for ALL CAPS (acronym) + # Identify acronyms (all uppercase words) if word.isupper() and len(word) > 0: return "a" - # Check for Proper noun (capitalized) + # Identify proper nouns (capitalized words not at sentence beginning) if len(word) > 1 and word[0].isupper() and i > 0: - # Optimized check for single uppercase letter + # Check that only the first letter is uppercase (not an all-caps word) if sum(c.isupper() for c in word) == 1: return "n" + # Default case: plain word return "p" diff --git a/yake/yake.py b/yake/yake.py index 949bc9d8..e926d2a4 100644 --- a/yake/yake.py +++ b/yake/yake.py @@ -1,4 +1,11 @@ -"""Module for keyword extraction from text documents.""" +""" +Keyword extraction module for YAKE. + +This module provides the KeywordExtractor class which serves as the main entry point +for the YAKE keyword extraction algorithm. It handles configuration, stopword loading, +deduplication of similar keywords, and the entire extraction pipeline from raw text +to ranked keywords. +""" import os import jellyfish @@ -6,12 +13,35 @@ from .Levenshtein import Levenshtein - class KeywordExtractor: - """Class to extract and process keywords from text.""" + """ + Main entry point for YAKE keyword extraction. + + This class handles the configuration, preprocessing, and extraction of keywords + from text documents using statistical features without relying on dictionaries + or external corpora. It integrates components for text processing, candidate + generation, feature extraction, and keyword ranking. + + Attributes: + See initialization parameters for configurable attributes. + """ def __init__(self, **kwargs): - """Initialize the KeywordExtractor with configuration parameters.""" + """ + Initialize the KeywordExtractor with configuration parameters. + + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values self.config = { "lan": kwargs.get("lan", "en"), "n": kwargs.get("n", 3), @@ -22,34 +52,64 @@ def __init__(self, **kwargs): "features": kwargs.get("features", None), } + # Load appropriate stopwords and deduplication function self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) def _load_stopwords(self, stopwords): - """Load stopwords from file or use provided set.""" + """ + Load stopwords from file or use provided set. + + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use + + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available if stopwords is not None: return set(stopwords) + # Determine the path to the appropriate stopword list dir_path = os.path.dirname(os.path.realpath(__file__)) local_path = os.path.join( "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" ) + # Fall back to language-agnostic list if specific language not available if not os.path.exists(os.path.join(dir_path, local_path)): local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") resource_path = os.path.join(dir_path, local_path) + # Attempt to read the stopword file with UTF-8 encoding try: with open(resource_path, encoding="utf-8") as stop_file: return set(stop_file.read().lower().split("\n")) except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails print("Warning: reading stopword list as ISO-8859-1") with open(resource_path, encoding="ISO-8859-1") as stop_file: return set(stop_file.read().lower().split("\n")) def _get_dedup_function(self, func_name): - """Retrieve the appropriate deduplication function.""" + """ + Retrieve the appropriate deduplication function. + + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use + + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations return { "jaro_winkler": self.jaro, "jaro": self.jaro, @@ -58,44 +118,107 @@ def _get_dedup_function(self, func_name): }.get(func_name.lower(), self.levs) def jaro(self, cand1, cand2): + """ + Calculate Jaro similarity between two strings. + + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return jellyfish.jaro(cand1, cand2) def levs(self, cand1, cand2): + """ + Calculate normalized Levenshtein similarity between two strings. + + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) def seqm(self, cand1, cand2): + """ + Calculate sequence matcher ratio between two strings. + + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return Levenshtein.ratio(cand1, cand2) def extract_keywords(self, text): - """Extract keywords from text.""" + """ + Extract keywords from text. + + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from + + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input if not text: return [] + # Normalize text by replacing newlines with spaces text = text.replace("\n", " ") - # Create a config dictionary for DataCore + # Create a configuration dictionary for DataCore core_config = { "windows_size": self.config["window_size"], "n": self.config["n"], } + # Initialize the data core with the text dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + # Build features for single terms and multi-word terms dc.build_single_terms_features(features=self.config["features"]) dc.build_mult_terms_features(features=self.config["features"]) + # Collect and sort all valid candidates by score (lower is better) result_set = [] candidates_sorted = sorted( [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h ) + # If deduplication is disabled, return all candidates up to the limit if self.config["dedup_lim"] >= 1.0: return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ : self.config["top"] ] + # Perform deduplication by comparing candidates for cand in candidates_sorted: should_add = True + # Check if this candidate is too similar to any already selected for h, cand_result in result_set: if ( self.dedup_function(cand.unique_kw, cand_result.unique_kw) @@ -104,9 +227,13 @@ def extract_keywords(self, text): should_add = False break + # Add candidate if it passes deduplication if should_add: result_set.append((cand.h, cand)) + + # Stop once we have enough candidates if len(result_set) == self.config["top"]: break + # Format results as (keyword, score) tuples return [(cand.kw, h) for (h, cand) in result_set] From 57dda5d2245975ece4c6b72f37d2f34fa6946bc7 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 15:00:48 +0100 Subject: [PATCH 079/118] moved core files to core folder --- .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 20159 -> 20164 bytes tests/test_yake.py | 2 +- yake/__init__.py | 2 +- yake/__pycache__/__init__.cpython-310.pyc | Bin 343 -> 348 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 8232 -> 8232 bytes yake/{ => core}/Levenshtein.py | 0 .../{ => core}/StopwordsList/stopwords_ar.txt | 322 ++-- .../{ => core}/StopwordsList/stopwords_bg.txt | 516 ++--- .../{ => core}/StopwordsList/stopwords_br.txt | 782 ++++---- .../{ => core}/StopwordsList/stopwords_cz.txt | 510 ++--- .../{ => core}/StopwordsList/stopwords_da.txt | 126 +- .../{ => core}/StopwordsList/stopwords_de.txt | 1206 ++++++------ .../{ => core}/StopwordsList/stopwords_el.txt | 1686 ++++++++--------- .../{ => core}/StopwordsList/stopwords_en.txt | 1148 +++++------ .../{ => core}/StopwordsList/stopwords_es.txt | 700 +++---- .../{ => core}/StopwordsList/stopwords_et.txt | 68 +- .../{ => core}/StopwordsList/stopwords_fa.txt | 664 +++---- .../{ => core}/StopwordsList/stopwords_fi.txt | 1492 +++++++-------- .../{ => core}/StopwordsList/stopwords_fr.txt | 924 ++++----- .../{ => core}/StopwordsList/stopwords_hi.txt | 324 ++-- .../{ => core}/StopwordsList/stopwords_hr.txt | 356 ++-- .../{ => core}/StopwordsList/stopwords_hu.txt | 1472 +++++++------- .../{ => core}/StopwordsList/stopwords_hy.txt | 88 +- .../{ => core}/StopwordsList/stopwords_id.txt | 716 +++---- .../{ => core}/StopwordsList/stopwords_it.txt | 794 ++++---- .../{ => core}/StopwordsList/stopwords_ja.txt | 86 +- .../{ => core}/StopwordsList/stopwords_lt.txt | 128 +- .../{ => core}/StopwordsList/stopwords_lv.txt | 332 ++-- .../{ => core}/StopwordsList/stopwords_nl.txt | 1000 +++++----- .../{ => core}/StopwordsList/stopwords_no.txt | 236 +-- .../StopwordsList/stopwords_noLang.txt | 0 .../{ => core}/StopwordsList/stopwords_pl.txt | 276 +-- .../{ => core}/StopwordsList/stopwords_pt.txt | 790 ++++---- .../{ => core}/StopwordsList/stopwords_ro.txt | 560 +++--- .../{ => core}/StopwordsList/stopwords_ru.txt | 844 ++++----- .../{ => core}/StopwordsList/stopwords_sk.txt | 218 +-- .../{ => core}/StopwordsList/stopwords_sl.txt | 890 ++++----- .../{ => core}/StopwordsList/stopwords_sv.txt | 770 ++++---- .../{ => core}/StopwordsList/stopwords_tr.txt | 422 ++--- .../{ => core}/StopwordsList/stopwords_uk.txt | 768 ++++---- .../{ => core}/StopwordsList/stopwords_zh.txt | 248 +-- .../__pycache__/Levenshtein.cpython-310.pyc | Bin 0 -> 2215 bytes .../__pycache__/highlight.cpython-310.pyc | Bin 0 -> 12667 bytes yake/core/__pycache__/yake.cpython-310.pyc | Bin 0 -> 8237 bytes yake/{ => core}/highlight.py | 0 yake/{ => core}/yake.py | 0 46 files changed, 10733 insertions(+), 10733 deletions(-) rename yake/{ => core}/Levenshtein.py (100%) rename yake/{ => core}/StopwordsList/stopwords_ar.txt (88%) rename yake/{ => core}/StopwordsList/stopwords_bg.txt (90%) rename yake/{ => core}/StopwordsList/stopwords_br.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_cz.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_da.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_de.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_el.txt (91%) rename yake/{ => core}/StopwordsList/stopwords_en.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_es.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_et.txt (81%) rename yake/{ => core}/StopwordsList/stopwords_fa.txt (89%) rename yake/{ => core}/StopwordsList/stopwords_fi.txt (88%) rename yake/{ => core}/StopwordsList/stopwords_fr.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_hi.txt (92%) rename yake/{ => core}/StopwordsList/stopwords_hr.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_hu.txt (90%) rename yake/{ => core}/StopwordsList/stopwords_hy.txt (87%) rename yake/{ => core}/StopwordsList/stopwords_id.txt (88%) rename yake/{ => core}/StopwordsList/stopwords_it.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_ja.txt (87%) rename yake/{ => core}/StopwordsList/stopwords_lt.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_lv.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_nl.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_no.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_noLang.txt (100%) rename yake/{ => core}/StopwordsList/stopwords_pl.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_pt.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_ro.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_ru.txt (91%) rename yake/{ => core}/StopwordsList/stopwords_sk.txt (79%) rename yake/{ => core}/StopwordsList/stopwords_sl.txt (84%) rename yake/{ => core}/StopwordsList/stopwords_sv.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_tr.txt (87%) rename yake/{ => core}/StopwordsList/stopwords_uk.txt (91%) rename yake/{ => core}/StopwordsList/stopwords_zh.txt (80%) create mode 100644 yake/core/__pycache__/Levenshtein.cpython-310.pyc create mode 100644 yake/core/__pycache__/highlight.cpython-310.pyc create mode 100644 yake/core/__pycache__/yake.cpython-310.pyc rename yake/{ => core}/highlight.py (100%) rename yake/{ => core}/yake.py (100%) diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc index b1c9affbe42e4b1858258a5dde4806182e3c891e..79fdc372c379f46c487cee41980fd9bc1059cfc4 100644 GIT binary patch delta 38 scmdl#m+{D4M&5j0UM>b8c$qJq@nj>fr5~qoWny-!UUGiXWG}x`0OhOymvR4GM&5j0UM>b8C^*BBaepJPr5_7lWn%VZf4@=ysY?nh diff --git a/tests/test_yake.py b/tests/test_yake.py index 6f3e4158..d724b992 100644 --- a/tests/test_yake.py +++ b/tests/test_yake.py @@ -7,7 +7,7 @@ from click.testing import CliRunner import yake -from yake.highlight import TextHighlighter +from yake.core.highlight import TextHighlighter def test_phraseless_example(): text_content = "- not yet" diff --git a/yake/__init__.py b/yake/__init__.py index 06b468fc..237be329 100644 --- a/yake/__init__.py +++ b/yake/__init__.py @@ -6,5 +6,5 @@ __email__ = "vitordouzi@gmail.com" __version__ = "0.4.8" -from yake.yake import KeywordExtractor as KeywordExtractor +from yake.core.yake import KeywordExtractor as KeywordExtractor diff --git a/yake/__pycache__/__init__.cpython-310.pyc b/yake/__pycache__/__init__.cpython-310.pyc index 5e61b8b0c3ce74612ca070730680fa192ece1609..80f412fa5e5e33199a2d646840264afb82120609 100644 GIT binary patch delta 34 ocmcc4bccyIpO=@50SM#^q%-bM0H4|l)c^nh delta 29 jcmcb^be)MepO=@50SF4taAe$?$a|TEvobMz;>%(HdbA0S diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 72120fef68e56d9d6725100bbed8500b0cae0814..60ce8dd516a49a734f93d1e1dba2cb76c48a9f32 100644 GIT binary patch delta 22 ccmZ4Cu)={ipO=@50SMR%q%+ty@=7ZJ06I_vX#fBK delta 22 ccmZ4Cu)={ipO=@50SL+iq%#CI@=7ZJ06lvI!~g&Q diff --git a/yake/Levenshtein.py b/yake/core/Levenshtein.py similarity index 100% rename from yake/Levenshtein.py rename to yake/core/Levenshtein.py diff --git a/yake/StopwordsList/stopwords_ar.txt b/yake/core/StopwordsList/stopwords_ar.txt similarity index 88% rename from yake/StopwordsList/stopwords_ar.txt rename to yake/core/StopwordsList/stopwords_ar.txt index 926226ba..da635d77 100644 --- a/yake/StopwordsList/stopwords_ar.txt +++ b/yake/core/StopwordsList/stopwords_ar.txt @@ -1,162 +1,162 @@ -ب -ا -أ -، -عشر -عدد -عدة -عشرة -عدم -عام -عاما -عن -عند -عندما -على -عليه -عليها -زيارة -سنة -سنوات -تم -ضد -بعد -بعض -اعادة -اعلنت -بسبب -حتى -اذا -احد -اثر -برس -باسم -غدا -شخصا -صباح -اطار -اربعة -اخرى -بان -اجل -غير -بشكل -حاليا -بن -به -ثم -اف -ان -او -اي -بها -صفر -حيث -اكد -الا -اما -امس -السابق -التى -التي -اكثر -ايار -ايضا -ثلاثة -الذاتي -الاخيرة -الثاني -الثانية -الذى -الذي -الان -امام -ايام -خلال -حوالى -الذين -الاول -الاولى -بين -ذلك -دون -حول -حين -الف -الى -انه -اول -ضمن -انها -جميع -الماضي -الوقت -المقبل -اليوم -ـ -ف -و -و6 -قد -لا -ما -مع -مساء -هذا -واحد -واضاف -واضافت -فان -قبل -قال -كان -لدى -نحو -هذه -وان -واكد -كانت -واوضح -مايو -فى -في -كل -لم -لن -له -من -هو -هي -قوة -كما -لها -منذ -وقد -ولا -نفسه -لقاء -مقابل -هناك -وقال -وكان -نهاية -وقالت -وكانت -للامم -فيه -كلم -لكن -وفي -وقف -ولم -ومن -وهو -وهي -يوم -فيها -منها -مليار -لوكالة -يكون -يمكن +ب +ا +أ +، +عشر +عدد +عدة +عشرة +عدم +عام +عاما +عن +عند +عندما +على +عليه +عليها +زيارة +سنة +سنوات +تم +ضد +بعد +بعض +اعادة +اعلنت +بسبب +حتى +اذا +احد +اثر +برس +باسم +غدا +شخصا +صباح +اطار +اربعة +اخرى +بان +اجل +غير +بشكل +حاليا +بن +به +ثم +اف +ان +او +اي +بها +صفر +حيث +اكد +الا +اما +امس +السابق +التى +التي +اكثر +ايار +ايضا +ثلاثة +الذاتي +الاخيرة +الثاني +الثانية +الذى +الذي +الان +امام +ايام +خلال +حوالى +الذين +الاول +الاولى +بين +ذلك +دون +حول +حين +الف +الى +انه +اول +ضمن +انها +جميع +الماضي +الوقت +المقبل +اليوم +ـ +ف +و +و6 +قد +لا +ما +مع +مساء +هذا +واحد +واضاف +واضافت +فان +قبل +قال +كان +لدى +نحو +هذه +وان +واكد +كانت +واوضح +مايو +فى +في +كل +لم +لن +له +من +هو +هي +قوة +كما +لها +منذ +وقد +ولا +نفسه +لقاء +مقابل +هناك +وقال +وكان +نهاية +وقالت +وكانت +للامم +فيه +كلم +لكن +وفي +وقف +ولم +ومن +وهو +وهي +يوم +فيها +منها +مليار +لوكالة +يكون +يمكن مليون \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_bg.txt b/yake/core/StopwordsList/stopwords_bg.txt similarity index 90% rename from yake/StopwordsList/stopwords_bg.txt rename to yake/core/StopwordsList/stopwords_bg.txt index 9700c313..7fe42a78 100644 --- a/yake/StopwordsList/stopwords_bg.txt +++ b/yake/core/StopwordsList/stopwords_bg.txt @@ -1,259 +1,259 @@ -а -автентичен -аз -ако -ала -бе -без -беше -би -бивш -бивша -бившо -бил -била -били -било -благодаря -близо -бъдат -бъде -бяха -в -вас -ваш -ваша -вероятно -вече -взема -ви -вие -винаги -внимава -време -все -всеки -всички -всичко -всяка -във -въпреки -върху -г -ги -главен -главна -главно -глас -го -година -години -годишен -д -да -дали -два -двама -двамата -две -двете -ден -днес -дни -до -добра -добре -добро -добър -докато -докога -дори -досега -доста -друг -друга -други -е -евтин -едва -един -една -еднаква -еднакви -еднакъв -едно -екип -ето -живот -за -забавям -зад -заедно -заради -засега -заспал -затова -защо -защото -и -из -или -им -има -имат -иска -й -каза -как -каква -какво -както -какъв -като -кога -когато -което -които -кой -който -колко -която -къде -където -към -лесен -лесно -ли -лош -м -май -малко -ме -между -мек -мен -месец -ми -много -мнозина -мога -могат -може -мокър -моля -момента -му -н -на -над -назад -най -направи -напред -например -нас -не -него -нещо -нея -ни -ние -никой -нито -нищо -но -нов -нова -нови -новина -някои -някой -няколко -няма -обаче -около -освен -особено -от -отгоре -отново -още -пак -по -повече -повечето -под -поне -поради -после -почти -прави -пред -преди -през -при -пък -първата -първи -първо -пъти -равен -равна -с -са -сам -само -се -сега -си -син -скоро -след -следващ -сме -смях -според -сред -срещу -сте -съм -със -също -т -тази -така -такива -такъв -там -твой -те -тези -ти -т.н. -то -това -тогава -този -той -толкова -точно -три -трябва -тук -тъй -тя -тях -у -утре -харесва -хиляди -ч -часа -че -често -чрез -ще -щом -юмрук -я +а +автентичен +аз +ако +ала +бе +без +беше +би +бивш +бивша +бившо +бил +била +били +било +благодаря +близо +бъдат +бъде +бяха +в +вас +ваш +ваша +вероятно +вече +взема +ви +вие +винаги +внимава +време +все +всеки +всички +всичко +всяка +във +въпреки +върху +г +ги +главен +главна +главно +глас +го +година +години +годишен +д +да +дали +два +двама +двамата +две +двете +ден +днес +дни +до +добра +добре +добро +добър +докато +докога +дори +досега +доста +друг +друга +други +е +евтин +едва +един +една +еднаква +еднакви +еднакъв +едно +екип +ето +живот +за +забавям +зад +заедно +заради +засега +заспал +затова +защо +защото +и +из +или +им +има +имат +иска +й +каза +как +каква +какво +както +какъв +като +кога +когато +което +които +кой +който +колко +която +къде +където +към +лесен +лесно +ли +лош +м +май +малко +ме +между +мек +мен +месец +ми +много +мнозина +мога +могат +може +мокър +моля +момента +му +н +на +над +назад +най +направи +напред +например +нас +не +него +нещо +нея +ни +ние +никой +нито +нищо +но +нов +нова +нови +новина +някои +някой +няколко +няма +обаче +около +освен +особено +от +отгоре +отново +още +пак +по +повече +повечето +под +поне +поради +после +почти +прави +пред +преди +през +при +пък +първата +първи +първо +пъти +равен +равна +с +са +сам +само +се +сега +си +син +скоро +след +следващ +сме +смях +според +сред +срещу +сте +съм +със +също +т +тази +така +такива +такъв +там +твой +те +тези +ти +т.н. +то +това +тогава +този +той +толкова +точно +три +трябва +тук +тъй +тя +тях +у +утре +харесва +хиляди +ч +часа +че +често +чрез +ще +щом +юмрук +я як \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_br.txt b/yake/core/StopwordsList/stopwords_br.txt similarity index 85% rename from yake/StopwordsList/stopwords_br.txt rename to yake/core/StopwordsList/stopwords_br.txt index dccacee7..c2884d28 100644 --- a/yake/StopwordsList/stopwords_br.txt +++ b/yake/core/StopwordsList/stopwords_br.txt @@ -1,392 +1,392 @@ -a -à -adeus -agora -aí -ainda -além -algo -algumas -alguns -ali -ano -anos -antes -ao -aos -apenas -apoio -após -aquela -aquelas -aquele -aqueles -aqui -aquilo -área -as -às -assim -até -atrás -através -baixo -bastante -bem -boa -boas -bom -bons -breve -cá -cada -catorze -cedo -cento -certamente -certeza -cima -cinco -coisa -com -como -conselho -contra -custa -da -dá -dão -daquela -daquelas -daquele -daqueles -dar -das -de -debaixo -demais -dentro -depois -desde -dessa -dessas -desse -desses -desta -destas -deste -destes -deve -deverá -dez -dezanove -dezasseis -dezassete -dezoito -dia -diante -diz -dizem -dizer -do -dois -dos -doze -duas -dúvida -e -é -ela -elas -ele -eles -em -embora -entre -era -és -essa -essas -esse -esses -esta -está -estão -estar -estas -estás -estava -este -estes -esteve -estive -estivemos -estiveram -estiveste -estivestes -estou -eu -exemplo -faço -falta -favor -faz -fazeis -fazem -fazemos -fazer -fazes -fez -fim -final -foi -fomos -for -foram -forma -foste -fostes -fui -geral -grande -grandes -grupo -há -hoje -hora -horas -isso -isto -já -lá -lado -local -logo -longe -lugar -maior -maioria -mais -mal -mas -máximo -me -meio -menor -menos -mês -meses -meu -meus -mil -minha -minhas -momento -muito -muitos -na -nada -não -naquela -naquelas -naquele -naqueles -nas -nem -nenhuma -nessa -nessas -nesse -nesses -nesta -nestas -neste -nestes -nível -no -noite -nome -nos -nós -nossa -nossas -nosso -nossos -nova -novas -nove -novo -novos -num -numa -número -nunca -o -obra -obrigada -obrigado -oitava -oitavo -oito -onde -ontem -onze -os -ou -outra -outras -outro -outros -para -parece -parte -partir -paucas -pela -pelas -pelo -pelos -perto -pode -pôde -podem -poder -põe -põem -ponto -pontos -por -porque -porquê -posição -possível -possivelmente -posso -pouca -pouco -poucos -primeira -primeiras -primeiro -primeiros -própria -próprias -próprio -próprios -próxima -próximas -próximo -próximos -puderam -quáis -qual -quando -quanto -quarta -quarto -quatro -que -quê -quem -quer -quereis -querem -queremas -queres -quero -questão -quinta -quinto -quinze -relação -sabe -sabem -são -se -segunda -segundo -sei -seis -sem -sempre -ser -seria -sete -sétima -sétimo -seu -seus -sexta -sexto -sim -sistema -sob -sobre -sois -somos -sou -sua -suas -tal -talvez -também -tanta -tantas -tanto -tão -tarde -te -tem -têm -temos -tendes -tenho -tens -ter -terceira -terceiro -teu -teus -teve -tive -tivemos -tiveram -tiveste -tivestes -toda -todas -todo -todos -trabalho -três -treze -tu -tua -tuas -tudo -um -uma -umas -uns -vai -vais -vão -vários -vem -vêm -vens -ver -vez -vezes -viagem -vindo -vinte -você -vocês -vos -vós -vossa -vossas -vosso -vossos +a +à +adeus +agora +aí +ainda +além +algo +algumas +alguns +ali +ano +anos +antes +ao +aos +apenas +apoio +após +aquela +aquelas +aquele +aqueles +aqui +aquilo +área +as +às +assim +até +atrás +através +baixo +bastante +bem +boa +boas +bom +bons +breve +cá +cada +catorze +cedo +cento +certamente +certeza +cima +cinco +coisa +com +como +conselho +contra +custa +da +dá +dão +daquela +daquelas +daquele +daqueles +dar +das +de +debaixo +demais +dentro +depois +desde +dessa +dessas +desse +desses +desta +destas +deste +destes +deve +deverá +dez +dezanove +dezasseis +dezassete +dezoito +dia +diante +diz +dizem +dizer +do +dois +dos +doze +duas +dúvida +e +é +ela +elas +ele +eles +em +embora +entre +era +és +essa +essas +esse +esses +esta +está +estão +estar +estas +estás +estava +este +estes +esteve +estive +estivemos +estiveram +estiveste +estivestes +estou +eu +exemplo +faço +falta +favor +faz +fazeis +fazem +fazemos +fazer +fazes +fez +fim +final +foi +fomos +for +foram +forma +foste +fostes +fui +geral +grande +grandes +grupo +há +hoje +hora +horas +isso +isto +já +lá +lado +local +logo +longe +lugar +maior +maioria +mais +mal +mas +máximo +me +meio +menor +menos +mês +meses +meu +meus +mil +minha +minhas +momento +muito +muitos +na +nada +não +naquela +naquelas +naquele +naqueles +nas +nem +nenhuma +nessa +nessas +nesse +nesses +nesta +nestas +neste +nestes +nível +no +noite +nome +nos +nós +nossa +nossas +nosso +nossos +nova +novas +nove +novo +novos +num +numa +número +nunca +o +obra +obrigada +obrigado +oitava +oitavo +oito +onde +ontem +onze +os +ou +outra +outras +outro +outros +para +parece +parte +partir +paucas +pela +pelas +pelo +pelos +perto +pode +pôde +podem +poder +põe +põem +ponto +pontos +por +porque +porquê +posição +possível +possivelmente +posso +pouca +pouco +poucos +primeira +primeiras +primeiro +primeiros +própria +próprias +próprio +próprios +próxima +próximas +próximo +próximos +puderam +quáis +qual +quando +quanto +quarta +quarto +quatro +que +quê +quem +quer +quereis +querem +queremas +queres +quero +questão +quinta +quinto +quinze +relação +sabe +sabem +são +se +segunda +segundo +sei +seis +sem +sempre +ser +seria +sete +sétima +sétimo +seu +seus +sexta +sexto +sim +sistema +sob +sobre +sois +somos +sou +sua +suas +tal +talvez +também +tanta +tantas +tanto +tão +tarde +te +tem +têm +temos +tendes +tenho +tens +ter +terceira +terceiro +teu +teus +teve +tive +tivemos +tiveram +tiveste +tivestes +toda +todas +todo +todos +trabalho +três +treze +tu +tua +tuas +tudo +um +uma +umas +uns +vai +vais +vão +vários +vem +vêm +vens +ver +vez +vezes +viagem +vindo +vinte +você +vocês +vos +vós +vossa +vossas +vosso +vossos zero \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_cz.txt b/yake/core/StopwordsList/stopwords_cz.txt similarity index 85% rename from yake/StopwordsList/stopwords_cz.txt rename to yake/core/StopwordsList/stopwords_cz.txt index df359f30..92053012 100644 --- a/yake/StopwordsList/stopwords_cz.txt +++ b/yake/core/StopwordsList/stopwords_cz.txt @@ -1,256 +1,256 @@ -ačkoli -ahoj -ale -anebo -ano -asi -aspoň -během -bez -beze -blízko -bohužel -brzo -bude -budeme -budeš -budete -budou -budu -byl -byla -byli -bylo -byly -bys -čau -chce -chceme -chceš -chcete -chci -chtějí -chtít -chut' -chuti -co -čtrnáct -čtyři -dál -dále -daleko -děkovat -děkujeme -děkuji -den -deset -devatenáct -devět -do -dobrý -docela -dva -dvacet -dvanáct -dvě -hodně -já -jak -jde -je -jeden -jedenáct -jedna -jedno -jednou -jedou -jeho -její -jejich -jemu -jen -jenom -ještě -jestli -jestliže -jí -jich -jím -jimi -jinak -jsem -jsi -jsme -jsou -jste -kam -kde -kdo -kdy -když -ke -kolik -kromě -která -které -kteří -který -kvůli -má -mají -málo -mám -máme -máš -máte -mé -mě -mezi -mí -mít -mně -mnou -moc -mohl -mohou -moje -moji -možná -můj -musí -může -my -na -nad -nade -nám -námi -naproti -nás -náš -naše -naši -ne -ně -nebo -nebyl -nebyla -nebyli -nebyly -něco -nedělá -nedělají -nedělám -neděláme -neděláš -neděláte -nějak -nejsi -někde -někdo -nemají -nemáme -nemáte -neměl -němu -není -nestačí -nevadí -než -nic -nich -ním -nimi -nula -od -ode -on -ona -oni -ono -ony -osm -osmnáct -pak -patnáct -pět -po -pořád -potom -pozdě -před -přes -přese -pro -proč -prosím -prostě -proti -protože -rovně -se -sedm -sedmnáct -šest -šestnáct -skoro -smějí -smí -snad -spolu -sta -sté -sto -ta -tady -tak -takhle -taky -tam -tamhle -tamhleto -tamto -tě -tebe -tebou -ted' -tedy -ten -ti -tisíc -tisíce -to -tobě -tohle -toto -třeba -tři -třináct -trošku -tvá -tvé -tvoje -tvůj -ty -určitě -už -vám -vámi -vás -váš -vaše -vaši -ve -večer -vedle -vlastně -všechno -všichni -vůbec -vy -vždy -za -zač -zatímco -ze +ačkoli +ahoj +ale +anebo +ano +asi +aspoň +během +bez +beze +blízko +bohužel +brzo +bude +budeme +budeš +budete +budou +budu +byl +byla +byli +bylo +byly +bys +čau +chce +chceme +chceš +chcete +chci +chtějí +chtít +chut' +chuti +co +čtrnáct +čtyři +dál +dále +daleko +děkovat +děkujeme +děkuji +den +deset +devatenáct +devět +do +dobrý +docela +dva +dvacet +dvanáct +dvě +hodně +já +jak +jde +je +jeden +jedenáct +jedna +jedno +jednou +jedou +jeho +její +jejich +jemu +jen +jenom +ještě +jestli +jestliže +jí +jich +jím +jimi +jinak +jsem +jsi +jsme +jsou +jste +kam +kde +kdo +kdy +když +ke +kolik +kromě +která +které +kteří +který +kvůli +má +mají +málo +mám +máme +máš +máte +mé +mě +mezi +mí +mít +mně +mnou +moc +mohl +mohou +moje +moji +možná +můj +musí +může +my +na +nad +nade +nám +námi +naproti +nás +náš +naše +naši +ne +ně +nebo +nebyl +nebyla +nebyli +nebyly +něco +nedělá +nedělají +nedělám +neděláme +neděláš +neděláte +nějak +nejsi +někde +někdo +nemají +nemáme +nemáte +neměl +němu +není +nestačí +nevadí +než +nic +nich +ním +nimi +nula +od +ode +on +ona +oni +ono +ony +osm +osmnáct +pak +patnáct +pět +po +pořád +potom +pozdě +před +přes +přese +pro +proč +prosím +prostě +proti +protože +rovně +se +sedm +sedmnáct +šest +šestnáct +skoro +smějí +smí +snad +spolu +sta +sté +sto +ta +tady +tak +takhle +taky +tam +tamhle +tamhleto +tamto +tě +tebe +tebou +ted' +tedy +ten +ti +tisíc +tisíce +to +tobě +tohle +toto +třeba +tři +třináct +trošku +tvá +tvé +tvoje +tvůj +ty +určitě +už +vám +vámi +vás +váš +vaše +vaši +ve +večer +vedle +vlastně +všechno +všichni +vůbec +vy +vždy +za +zač +zatímco +ze že \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_da.txt b/yake/core/StopwordsList/stopwords_da.txt similarity index 83% rename from yake/StopwordsList/stopwords_da.txt rename to yake/core/StopwordsList/stopwords_da.txt index 0dc00731..bffc1a41 100644 --- a/yake/StopwordsList/stopwords_da.txt +++ b/yake/core/StopwordsList/stopwords_da.txt @@ -1,64 +1,64 @@ -De -I -af -aldrig -alle -altid -bagved -de -der -du -efter -eller -en -endnu -et -fjernt -for -foran -fra -få -gennem -god -han -her -hos -hovfor -hun -hurtig -hvad -hvem -hvonår -hvor -hvordan -hvorhen -i -imod -ja -jeg -langsom -lidt -mange -med -meget -mellem -mere -mindre -måske -nede -nej -nok -nu -når -og -oppe -på -rask -sammen -temmelig -til -uden -udenfor -under -ved +De +I +af +aldrig +alle +altid +bagved +de +der +du +efter +eller +en +endnu +et +fjernt +for +foran +fra +få +gennem +god +han +her +hos +hovfor +hun +hurtig +hvad +hvem +hvonår +hvor +hvordan +hvorhen +i +imod +ja +jeg +langsom +lidt +mange +med +meget +mellem +mere +mindre +måske +nede +nej +nok +nu +når +og +oppe +på +rask +sammen +temmelig +til +uden +udenfor +under +ved vi \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_de.txt b/yake/core/StopwordsList/stopwords_de.txt similarity index 86% rename from yake/StopwordsList/stopwords_de.txt rename to yake/core/StopwordsList/stopwords_de.txt index 094783a5..668fe5e3 100644 --- a/yake/StopwordsList/stopwords_de.txt +++ b/yake/core/StopwordsList/stopwords_de.txt @@ -1,603 +1,603 @@ -a -ab -aber -aber -ach -acht -achte -achten -achter -achtes -ag -alle -allein -allem -allen -aller -allerdings -alles -allgemeinen -als -als -also -am -an -andere -anderen -andern -anders -au -auch -auch -auf -aus -ausser -außer -ausserdem -außerdem -b -bald -bei -beide -beiden -beim -beispiel -bekannt -bereits -besonders -besser -besten -bin -bis -bisher -bist -c -d -da -dabei -dadurch -dafür -dagegen -daher -dahin -dahinter -damals -damit -danach -daneben -dank -dann -daran -darauf -daraus -darf -darfst -darin -darüber -darum -darunter -das -das -dasein -daselbst -dass -daß -dasselbe -davon -davor -dazu -dazwischen -dein -deine -deinem -deiner -dem -dementsprechend -demgegenüber -demgemäss -demgemäß -demselben -demzufolge -den -denen -denn -denn -denselben -der -deren -derjenige -derjenigen -dermassen -dermaßen -derselbe -derselben -des -deshalb -desselben -dessen -deswegen -d.h -dich -die -diejenige -diejenigen -dies -diese -dieselbe -dieselben -diesem -diesen -dieser -dieses -dir -doch -dort -drei -drin -dritte -dritten -dritter -drittes -du -durch -durchaus -dürfen -dürft -durfte -durften -e -eben -ebenso -ehrlich -ei -ei, -ei, -eigen -eigene -eigenen -eigener -eigenes -ein -einander -eine -einem -einen -einer -eines -einige -einigen -einiger -einiges -einmal -einmal -eins -elf -en -ende -endlich -entweder -entweder -er -Ernst -erst -erste -ersten -erster -erstes -es -etwa -etwas -euch -f -früher -fünf -fünfte -fünften -fünfter -fünftes -für -g -gab -ganz -ganze -ganzen -ganzer -ganzes -gar -gedurft -gegen -gegenüber -gehabt -gehen -geht -gekannt -gekonnt -gemacht -gemocht -gemusst -genug -gerade -gern -gesagt -gesagt -geschweige -gewesen -gewollt -geworden -gibt -ging -gleich -gott -gross -groß -grosse -große -grossen -großen -grosser -großer -grosses -großes -gut -gute -guter -gutes -h -habe -haben -habt -hast -hat -hatte -hätte -hatten -hätten -heisst -her -heute -hier -hin -hinter -hoch -i -ich -ihm -ihn -ihnen -ihr -ihre -ihrem -ihren -ihrer -ihres -im -im -immer -in -in -indem -infolgedessen -ins -irgend -ist -j -ja -ja -jahr -jahre -jahren -je -jede -jedem -jeden -jeder -jedermann -jedermanns -jedoch -jemand -jemandem -jemanden -jene -jenem -jenen -jener -jenes -jetzt -k -kam -kann -kannst -kaum -kein -keine -keinem -keinen -keiner -kleine -kleinen -kleiner -kleines -kommen -kommt -können -könnt -konnte -könnte -konnten -kurz -l -lang -lange -lange -leicht -leide -lieber -los -m -machen -macht -machte -mag -magst -mahn -man -manche -manchem -manchen -mancher -manches -mann -mehr -mein -meine -meinem -meinen -meiner -meines -mensch -menschen -mich -mir -mit -mittel -mochte -möchte -mochten -mögen -möglich -mögt -morgen -muss -muß -müssen -musst -müsst -musste -mussten -n -na -nach -nachdem -nahm -natürlich -neben -nein -neue -neuen -neun -neunte -neunten -neunter -neuntes -nicht -nicht -nichts -nie -niemand -niemandem -niemanden -noch -nun -nun -nur -o -ob -ob -oben -oder -oder -offen -oft -oft -ohne -Ordnung -p -q -r -recht -rechte -rechten -rechter -rechtes -richtig -rund -s -sa -sache -sagt -sagte -sah -satt -schlecht -Schluss -schon -sechs -sechste -sechsten -sechster -sechstes -sehr -sei -sei -seid -seien -sein -seine -seinem -seinen -seiner -seines -seit -seitdem -selbst -selbst -sich -sie -sieben -siebente -siebenten -siebenter -siebentes -sind -so -solang -solche -solchem -solchen -solcher -solches -soll -sollen -sollte -sollten -sondern -sonst -sowie -später -statt -t -tag -tage -tagen -tat -teil -tel -tritt -trotzdem -tun -u -über -überhaupt -übrigens -uhr -um -und -und? -uns -unser -unsere -unserer -unter -v -vergangenen -viel -viele -vielem -vielen -vielleicht -vier -vierte -vierten -vierter -viertes -vom -von -vor -w -wahr? -während -währenddem -währenddessen -wann -war -wäre -waren -wart -warum -was -wegen -weil -weit -weiter -weitere -weiteren -weiteres -welche -welchem -welchen -welcher -welches -wem -wen -wenig -wenig -wenige -weniger -weniges -wenigstens -wenn -wenn -wer -werde -werden -werdet -wessen -wie -wie -wieder -will -willst -wir -wird -wirklich -wirst -wo -wohl -wollen -wollt -wollte -wollten -worden -wurde -würde -wurden -würden -x -y -z -z.b -zehn -zehnte -zehnten -zehnter -zehntes -zeit -zu -zuerst -zugleich -zum -zum -zunächst -zur -zurück -zusammen -zwanzig -zwar -zwar -zwei -zweite -zweiten -zweiter -zweites -zwischen -zwölf +a +ab +aber +aber +ach +acht +achte +achten +achter +achtes +ag +alle +allein +allem +allen +aller +allerdings +alles +allgemeinen +als +als +also +am +an +andere +anderen +andern +anders +au +auch +auch +auf +aus +ausser +außer +ausserdem +außerdem +b +bald +bei +beide +beiden +beim +beispiel +bekannt +bereits +besonders +besser +besten +bin +bis +bisher +bist +c +d +da +dabei +dadurch +dafür +dagegen +daher +dahin +dahinter +damals +damit +danach +daneben +dank +dann +daran +darauf +daraus +darf +darfst +darin +darüber +darum +darunter +das +das +dasein +daselbst +dass +daß +dasselbe +davon +davor +dazu +dazwischen +dein +deine +deinem +deiner +dem +dementsprechend +demgegenüber +demgemäss +demgemäß +demselben +demzufolge +den +denen +denn +denn +denselben +der +deren +derjenige +derjenigen +dermassen +dermaßen +derselbe +derselben +des +deshalb +desselben +dessen +deswegen +d.h +dich +die +diejenige +diejenigen +dies +diese +dieselbe +dieselben +diesem +diesen +dieser +dieses +dir +doch +dort +drei +drin +dritte +dritten +dritter +drittes +du +durch +durchaus +dürfen +dürft +durfte +durften +e +eben +ebenso +ehrlich +ei +ei, +ei, +eigen +eigene +eigenen +eigener +eigenes +ein +einander +eine +einem +einen +einer +eines +einige +einigen +einiger +einiges +einmal +einmal +eins +elf +en +ende +endlich +entweder +entweder +er +Ernst +erst +erste +ersten +erster +erstes +es +etwa +etwas +euch +f +früher +fünf +fünfte +fünften +fünfter +fünftes +für +g +gab +ganz +ganze +ganzen +ganzer +ganzes +gar +gedurft +gegen +gegenüber +gehabt +gehen +geht +gekannt +gekonnt +gemacht +gemocht +gemusst +genug +gerade +gern +gesagt +gesagt +geschweige +gewesen +gewollt +geworden +gibt +ging +gleich +gott +gross +groß +grosse +große +grossen +großen +grosser +großer +grosses +großes +gut +gute +guter +gutes +h +habe +haben +habt +hast +hat +hatte +hätte +hatten +hätten +heisst +her +heute +hier +hin +hinter +hoch +i +ich +ihm +ihn +ihnen +ihr +ihre +ihrem +ihren +ihrer +ihres +im +im +immer +in +in +indem +infolgedessen +ins +irgend +ist +j +ja +ja +jahr +jahre +jahren +je +jede +jedem +jeden +jeder +jedermann +jedermanns +jedoch +jemand +jemandem +jemanden +jene +jenem +jenen +jener +jenes +jetzt +k +kam +kann +kannst +kaum +kein +keine +keinem +keinen +keiner +kleine +kleinen +kleiner +kleines +kommen +kommt +können +könnt +konnte +könnte +konnten +kurz +l +lang +lange +lange +leicht +leide +lieber +los +m +machen +macht +machte +mag +magst +mahn +man +manche +manchem +manchen +mancher +manches +mann +mehr +mein +meine +meinem +meinen +meiner +meines +mensch +menschen +mich +mir +mit +mittel +mochte +möchte +mochten +mögen +möglich +mögt +morgen +muss +muß +müssen +musst +müsst +musste +mussten +n +na +nach +nachdem +nahm +natürlich +neben +nein +neue +neuen +neun +neunte +neunten +neunter +neuntes +nicht +nicht +nichts +nie +niemand +niemandem +niemanden +noch +nun +nun +nur +o +ob +ob +oben +oder +oder +offen +oft +oft +ohne +Ordnung +p +q +r +recht +rechte +rechten +rechter +rechtes +richtig +rund +s +sa +sache +sagt +sagte +sah +satt +schlecht +Schluss +schon +sechs +sechste +sechsten +sechster +sechstes +sehr +sei +sei +seid +seien +sein +seine +seinem +seinen +seiner +seines +seit +seitdem +selbst +selbst +sich +sie +sieben +siebente +siebenten +siebenter +siebentes +sind +so +solang +solche +solchem +solchen +solcher +solches +soll +sollen +sollte +sollten +sondern +sonst +sowie +später +statt +t +tag +tage +tagen +tat +teil +tel +tritt +trotzdem +tun +u +über +überhaupt +übrigens +uhr +um +und +und? +uns +unser +unsere +unserer +unter +v +vergangenen +viel +viele +vielem +vielen +vielleicht +vier +vierte +vierten +vierter +viertes +vom +von +vor +w +wahr? +während +währenddem +währenddessen +wann +war +wäre +waren +wart +warum +was +wegen +weil +weit +weiter +weitere +weiteren +weiteres +welche +welchem +welchen +welcher +welches +wem +wen +wenig +wenig +wenige +weniger +weniges +wenigstens +wenn +wenn +wer +werde +werden +werdet +wessen +wie +wie +wieder +will +willst +wir +wird +wirklich +wirst +wo +wohl +wollen +wollt +wollte +wollten +worden +wurde +würde +wurden +würden +x +y +z +z.b +zehn +zehnte +zehnten +zehnter +zehntes +zeit +zu +zuerst +zugleich +zum +zum +zunächst +zur +zurück +zusammen +zwanzig +zwar +zwar +zwei +zweite +zweiten +zweiter +zweites +zwischen +zwölf diff --git a/yake/StopwordsList/stopwords_el.txt b/yake/core/StopwordsList/stopwords_el.txt similarity index 91% rename from yake/StopwordsList/stopwords_el.txt rename to yake/core/StopwordsList/stopwords_el.txt index 15b21f28..dc17b6c1 100644 --- a/yake/StopwordsList/stopwords_el.txt +++ b/yake/core/StopwordsList/stopwords_el.txt @@ -1,844 +1,844 @@ -ένα -έναν -ένας -αδιακοπα -αι -ακομα -ακομη -ακριβως -αληθεια -αληθινα -αλλα -αλλαχου -αλλες -αλλη -αλλην -αλλης -αλλιως -αλλιωτικα -αλλο -αλλοι -αλλοιως -αλλοιωτικα -αλλον -αλλος -αλλοτε -αλλου -αλλους -αλλων -αμα -αμεσα -αμεσως -αν -ανα -αναμεσα -αναμεταξυ -ανευ -αντι -αντιπερα -αντις -ανω -ανωτερω -αξαφνα -απ -απεναντι -απο -αποψε -από -αρα -αραγε -αργα -αργοτερο -αριστερα -αρκετα -αρχικα -ας -αυριο -αυτα -αυτες -αυτεσ -αυτη -αυτην -αυτης -αυτο -αυτοι -αυτον -αυτος -αυτοσ -αυτου -αυτους -αυτουσ -αυτων -αφοτου -αφου -αἱ -αἳ -αἵ -αὐτόσ -αὐτὸς -αὖ -βεβαια -βεβαιοτατα -γάρ -γα -γα^ -γε -γι -για -γοῦν -γρηγορα -γυρω -γὰρ -δ' -δέ -δή -δα -δαί -δαίσ -δαὶ -δαὶς -δε -δε -δεινα -δεν -δεν -δεξια -δηθεν -δηλαδη -δι -δι -δι' -διά -δια -δια -διαρκως -δικα -δικο -δικοι -δικος -δικου -δικους -διολου -διπλα -διχως -διὰ -δὲ -δὴ -δ’ -εαν -εαυτο -εαυτον -εαυτου -εαυτους -εαυτων -εγκαιρα -εγκαιρως -εγω -εδω -ειδεμη -ειθε -ειμαι -ειμαστε -ειναι -εις -εισαι -εισαστε -ειστε -ειτε -ειχα -ειχαμε -ειχαν -ειχατε -ειχε -ειχες -εκ -εκαστα -εκαστες -εκαστη -εκαστην -εκαστης -εκαστο -εκαστοι -εκαστον -εκαστος -εκαστου -εκαστους -εκαστων -εκει -εκεινα -εκεινες -εκεινεσ -εκεινη -εκεινην -εκεινης -εκεινο -εκεινοι -εκεινον -εκεινος -εκεινοσ -εκεινου -εκεινους -εκεινουσ -εκεινων -εκτος -εμας -εμεις -εμενα -εμπρος -εν -ενα -εναν -ενας -ενος -εντελως -εντος -εντωμεταξυ -ενω -ενός -εξ -εξαφνα -εξης -εξισου -εξω -επ -επί -επανω -επειδη -επειτα -επι -επισης -επομενως -εσας -εσεις -εσενα -εστω -εσυ -ετερα -ετεραι -ετερας -ετερες -ετερη -ετερης -ετερο -ετεροι -ετερον -ετερος -ετερου -ετερους -ετερων -ετουτα -ετουτες -ετουτη -ετουτην -ετουτης -ετουτο -ετουτοι -ετουτον -ετουτος -ετουτου -ετουτους -ετουτων -ετσι -ευγε -ευθυς -ευτυχως -εφεξης -εχει -εχεις -εχετε -εχθες -εχομε -εχουμε -εχουν -εχτες -εχω -εως -εἰ -εἰμί -εἰμὶ -εἰς -εἰσ -εἴ -εἴμι -εἴτε -η -ηδη -ημασταν -ημαστε -ημουν -ησασταν -ησαστε -ησουν -ηταν -ητανε -ητοι -ηττον -θα -ιδια -ιδιαν -ιδιας -ιδιες -ιδιο -ιδιοι -ιδιον -ιδιος -ιδιου -ιδιους -ιδιων -ιδιως -ισαμε -ισια -ισως -ισωσ -κ -καί -καίτοι -καθ -καθε -καθεμια -καθεμιας -καθενα -καθενας -καθενος -καθετι -καθολου -καθως -και -κακα -κακως -καλα -καλως -καμια -καμιαν -καμιας -καμποσα -καμποσες -καμποση -καμποσην -καμποσης -καμποσο -καμποσοι -καμποσον -καμποσος -καμποσου -καμποσους -καμποσων -κανεις -κανεν -κανενα -κανεναν -κανενας -κανενος -καποια -καποιαν -καποιας -καποιες -καποιο -καποιοι -καποιον -καποιος -καποιου -καποιους -καποιων -καποτε -καπου -καπως -κατ -κατά -κατα -κατι -κατιτι -κατοπιν -κατω -κατὰ -καὶ -κι -κιολας -κλπ -κοντα -κτλ -κυριως -κἀν -κἂν -λιγακι -λιγο -λιγωτερο -λογω -λοιπα -λοιπον -μέν -μέσα -μή -μήτε -μία -μα -μαζι -μακαρι -μακρυα -μαλιστα -μαλλον -μας -με -μεθ -μεθαυριο -μειον -μελει -μελλεται -μεμιας -μεν -μερικα -μερικες -μερικοι -μερικους -μερικων -μεσα -μετ -μετά -μετα -μεταξυ -μετὰ -μεχρι -μη -μηδε -μην -μηπως -μητε -μιά -μια -μιαν -μιας -μολις -μολονοτι -μοναχα -μονες -μονη -μονην -μονης -μονο -μονοι -μονομιας -μονος -μονου -μονους -μονων -μου -μπορει -μπορουν -μπραβο -μπρος -μἐν -μὲν -μὴ -μὴν -να -ναι -νωρις -ξανα -ξαφνικα -ο -οι -ολα -ολες -ολη -ολην -ολης -ολο -ολογυρα -ολοι -ολον -ολονεν -ολος -ολοτελα -ολου -ολους -ολων -ολως -ολωςδιολου -ομως -ομωσ -οποια -οποιαδηποτε -οποιαν -οποιανδηποτε -οποιας -οποιαςδηποτε -οποιδηποτε -οποιες -οποιεσδηποτε -οποιο -οποιοδηποτε -οποιοι -οποιον -οποιονδηποτε -οποιος -οποιοσδηποτε -οποιου -οποιουδηποτε -οποιους -οποιουσδηποτε -οποιων -οποιωνδηποτε -οποτε -οποτεδηποτε -οπου -οπουδηποτε -οπως -οπωσ -ορισμενα -ορισμενες -ορισμενων -ορισμενως -οσα -οσαδηποτε -οσες -οσεςδηποτε -οση -οσηδηποτε -οσην -οσηνδηποτε -οσης -οσο -οσοδηποτε -οσοι -οσοιδηποτε -οσον -οσονδηποτε -οσος -οσοσδηποτε -οσου -οσουδηποτε -οσους -οσουσδηποτε -οσων -οσωνδηποτε -οταν -οτι -οτιδηποτε -οτου -ου -ουδε -ουτε -οχι -οἱ -οἳ -οἷς -οὐ -οὐδ -οὐδέ -οὐδείσ -οὐδεὶς -οὐδὲ -οὐδὲν -οὐκ -οὐχ -οὐχὶ -οὓς -οὔτε -οὕτω -οὕτως -οὕτωσ -οὖν -οὗ -οὗτος -οὗτοσ -παλι -παντοτε -παντου -παντως -παρ -παρά -παρα -παρὰ -περί -περα -περι -περιπου -περισσοτερο -περσι -περυσι -περὶ -πια -πιθανον -πιο -πισω -πλαι -πλεον -πλην -ποια -ποιαν -ποιας -ποιες -ποιεσ -ποιο -ποιοι -ποιον -ποιος -ποιοσ -ποιου -ποιους -ποιουσ -ποιων -πολυ -ποσες -ποση -ποσην -ποσης -ποσοι -ποσος -ποσους -ποτε -που -πουθε -πουθενα -ποῦ -πρεπει -πριν -προ -προκειμενου -προκειται -προπερσι -προς -προσ -προτου -προχθες -προχτες -πρωτυτερα -πρόσ -πρὸ -πρὸς -πως -πωσ -σαν -σας -σε -σεις -σημερα -σιγα -σου -στα -στη -στην -στης -στις -στο -στον -στου -στους -στων -συγχρονως -συν -συναμα -συνεπως -συνηθως -συχνα -συχνας -συχνες -συχνη -συχνην -συχνης -συχνο -συχνοι -συχνον -συχνος -συχνου -συχνους -συχνων -συχνως -σχεδον -σωστα -σόσ -σύ -σύν -σὸς -σὺ -σὺν -τά -τήν -τί -τίς -τίσ -τα -ταδε -ταυτα -ταυτες -ταυτη -ταυτην -ταυτης -ταυτο -ταυτον -ταυτος -ταυτου -ταυτων -ταχα -ταχατε -ταῖς -τε -τελικα -τελικως -τες -τετοια -τετοιαν -τετοιας -τετοιες -τετοιο -τετοιοι -τετοιον -τετοιος -τετοιου -τετοιους -τετοιων -τη -την -της -τησ -τι -τινα -τιποτα -τιποτε -τις -τισ -το -τοί -τοι -τοιοῦτος -τοιοῦτοσ -τον -τος -τοσα -τοσες -τοση -τοσην -τοσης -τοσο -τοσοι -τοσον -τοσος -τοσου -τοσους -τοσων -τοτε -του -τουλαχιστο -τουλαχιστον -τους -τουτα -τουτες -τουτη -τουτην -τουτης -τουτο -τουτοι -τουτοις -τουτον -τουτος -τουτου -τουτους -τουτων -τούσ -τοὺς -τοῖς -τοῦ -τυχον -των -τωρα -τό -τόν -τότε -τὰ -τὰς -τὴν -τὸ -τὸν -τῆς -τῆσ -τῇ -τῶν -τῷ -υπ -υπερ -υπο -υποψη -υποψιν -υπό -υστερα -φετος -χαμηλα -χθες -χτες -χωρις -χωριστα -ψηλα -ω -ωραια -ως -ωσ -ωσαν -ωσοτου -ωσπου -ωστε -ωστοσο -ωχ -ἀλλ' -ἀλλά -ἀλλὰ -ἀλλ’ -ἀπ -ἀπό -ἀπὸ -ἀφ -ἂν -ἃ -ἄλλος -ἄλλοσ -ἄν -ἄρα -ἅμα -ἐάν -ἐγώ -ἐγὼ -ἐκ -ἐμόσ -ἐμὸς -ἐν -ἐξ -ἐπί -ἐπεὶ -ἐπὶ -ἐστι -ἐφ -ἐὰν -ἑαυτοῦ -ἔτι -ἡ -ἢ -ἣ -ἤ -ἥ -ἧς -ἵνα -ὁ -ὃ -ὃν -ὃς -ὅ -ὅδε -ὅθεν -ὅπερ -ὅς -ὅσ -ὅστις -ὅστισ -ὅτε -ὅτι -ὑμόσ -ὑπ -ὑπέρ -ὑπό -ὑπὲρ -ὑπὸ -ὡς -ὡσ -ὥς -ὥστε -ὦ +ένα +έναν +ένας +αδιακοπα +αι +ακομα +ακομη +ακριβως +αληθεια +αληθινα +αλλα +αλλαχου +αλλες +αλλη +αλλην +αλλης +αλλιως +αλλιωτικα +αλλο +αλλοι +αλλοιως +αλλοιωτικα +αλλον +αλλος +αλλοτε +αλλου +αλλους +αλλων +αμα +αμεσα +αμεσως +αν +ανα +αναμεσα +αναμεταξυ +ανευ +αντι +αντιπερα +αντις +ανω +ανωτερω +αξαφνα +απ +απεναντι +απο +αποψε +από +αρα +αραγε +αργα +αργοτερο +αριστερα +αρκετα +αρχικα +ας +αυριο +αυτα +αυτες +αυτεσ +αυτη +αυτην +αυτης +αυτο +αυτοι +αυτον +αυτος +αυτοσ +αυτου +αυτους +αυτουσ +αυτων +αφοτου +αφου +αἱ +αἳ +αἵ +αὐτόσ +αὐτὸς +αὖ +βεβαια +βεβαιοτατα +γάρ +γα +γα^ +γε +γι +για +γοῦν +γρηγορα +γυρω +γὰρ +δ' +δέ +δή +δα +δαί +δαίσ +δαὶ +δαὶς +δε +δε +δεινα +δεν +δεν +δεξια +δηθεν +δηλαδη +δι +δι +δι' +διά +δια +δια +διαρκως +δικα +δικο +δικοι +δικος +δικου +δικους +διολου +διπλα +διχως +διὰ +δὲ +δὴ +δ’ +εαν +εαυτο +εαυτον +εαυτου +εαυτους +εαυτων +εγκαιρα +εγκαιρως +εγω +εδω +ειδεμη +ειθε +ειμαι +ειμαστε +ειναι +εις +εισαι +εισαστε +ειστε +ειτε +ειχα +ειχαμε +ειχαν +ειχατε +ειχε +ειχες +εκ +εκαστα +εκαστες +εκαστη +εκαστην +εκαστης +εκαστο +εκαστοι +εκαστον +εκαστος +εκαστου +εκαστους +εκαστων +εκει +εκεινα +εκεινες +εκεινεσ +εκεινη +εκεινην +εκεινης +εκεινο +εκεινοι +εκεινον +εκεινος +εκεινοσ +εκεινου +εκεινους +εκεινουσ +εκεινων +εκτος +εμας +εμεις +εμενα +εμπρος +εν +ενα +εναν +ενας +ενος +εντελως +εντος +εντωμεταξυ +ενω +ενός +εξ +εξαφνα +εξης +εξισου +εξω +επ +επί +επανω +επειδη +επειτα +επι +επισης +επομενως +εσας +εσεις +εσενα +εστω +εσυ +ετερα +ετεραι +ετερας +ετερες +ετερη +ετερης +ετερο +ετεροι +ετερον +ετερος +ετερου +ετερους +ετερων +ετουτα +ετουτες +ετουτη +ετουτην +ετουτης +ετουτο +ετουτοι +ετουτον +ετουτος +ετουτου +ετουτους +ετουτων +ετσι +ευγε +ευθυς +ευτυχως +εφεξης +εχει +εχεις +εχετε +εχθες +εχομε +εχουμε +εχουν +εχτες +εχω +εως +εἰ +εἰμί +εἰμὶ +εἰς +εἰσ +εἴ +εἴμι +εἴτε +η +ηδη +ημασταν +ημαστε +ημουν +ησασταν +ησαστε +ησουν +ηταν +ητανε +ητοι +ηττον +θα +ιδια +ιδιαν +ιδιας +ιδιες +ιδιο +ιδιοι +ιδιον +ιδιος +ιδιου +ιδιους +ιδιων +ιδιως +ισαμε +ισια +ισως +ισωσ +κ +καί +καίτοι +καθ +καθε +καθεμια +καθεμιας +καθενα +καθενας +καθενος +καθετι +καθολου +καθως +και +κακα +κακως +καλα +καλως +καμια +καμιαν +καμιας +καμποσα +καμποσες +καμποση +καμποσην +καμποσης +καμποσο +καμποσοι +καμποσον +καμποσος +καμποσου +καμποσους +καμποσων +κανεις +κανεν +κανενα +κανεναν +κανενας +κανενος +καποια +καποιαν +καποιας +καποιες +καποιο +καποιοι +καποιον +καποιος +καποιου +καποιους +καποιων +καποτε +καπου +καπως +κατ +κατά +κατα +κατι +κατιτι +κατοπιν +κατω +κατὰ +καὶ +κι +κιολας +κλπ +κοντα +κτλ +κυριως +κἀν +κἂν +λιγακι +λιγο +λιγωτερο +λογω +λοιπα +λοιπον +μέν +μέσα +μή +μήτε +μία +μα +μαζι +μακαρι +μακρυα +μαλιστα +μαλλον +μας +με +μεθ +μεθαυριο +μειον +μελει +μελλεται +μεμιας +μεν +μερικα +μερικες +μερικοι +μερικους +μερικων +μεσα +μετ +μετά +μετα +μεταξυ +μετὰ +μεχρι +μη +μηδε +μην +μηπως +μητε +μιά +μια +μιαν +μιας +μολις +μολονοτι +μοναχα +μονες +μονη +μονην +μονης +μονο +μονοι +μονομιας +μονος +μονου +μονους +μονων +μου +μπορει +μπορουν +μπραβο +μπρος +μἐν +μὲν +μὴ +μὴν +να +ναι +νωρις +ξανα +ξαφνικα +ο +οι +ολα +ολες +ολη +ολην +ολης +ολο +ολογυρα +ολοι +ολον +ολονεν +ολος +ολοτελα +ολου +ολους +ολων +ολως +ολωςδιολου +ομως +ομωσ +οποια +οποιαδηποτε +οποιαν +οποιανδηποτε +οποιας +οποιαςδηποτε +οποιδηποτε +οποιες +οποιεσδηποτε +οποιο +οποιοδηποτε +οποιοι +οποιον +οποιονδηποτε +οποιος +οποιοσδηποτε +οποιου +οποιουδηποτε +οποιους +οποιουσδηποτε +οποιων +οποιωνδηποτε +οποτε +οποτεδηποτε +οπου +οπουδηποτε +οπως +οπωσ +ορισμενα +ορισμενες +ορισμενων +ορισμενως +οσα +οσαδηποτε +οσες +οσεςδηποτε +οση +οσηδηποτε +οσην +οσηνδηποτε +οσης +οσο +οσοδηποτε +οσοι +οσοιδηποτε +οσον +οσονδηποτε +οσος +οσοσδηποτε +οσου +οσουδηποτε +οσους +οσουσδηποτε +οσων +οσωνδηποτε +οταν +οτι +οτιδηποτε +οτου +ου +ουδε +ουτε +οχι +οἱ +οἳ +οἷς +οὐ +οὐδ +οὐδέ +οὐδείσ +οὐδεὶς +οὐδὲ +οὐδὲν +οὐκ +οὐχ +οὐχὶ +οὓς +οὔτε +οὕτω +οὕτως +οὕτωσ +οὖν +οὗ +οὗτος +οὗτοσ +παλι +παντοτε +παντου +παντως +παρ +παρά +παρα +παρὰ +περί +περα +περι +περιπου +περισσοτερο +περσι +περυσι +περὶ +πια +πιθανον +πιο +πισω +πλαι +πλεον +πλην +ποια +ποιαν +ποιας +ποιες +ποιεσ +ποιο +ποιοι +ποιον +ποιος +ποιοσ +ποιου +ποιους +ποιουσ +ποιων +πολυ +ποσες +ποση +ποσην +ποσης +ποσοι +ποσος +ποσους +ποτε +που +πουθε +πουθενα +ποῦ +πρεπει +πριν +προ +προκειμενου +προκειται +προπερσι +προς +προσ +προτου +προχθες +προχτες +πρωτυτερα +πρόσ +πρὸ +πρὸς +πως +πωσ +σαν +σας +σε +σεις +σημερα +σιγα +σου +στα +στη +στην +στης +στις +στο +στον +στου +στους +στων +συγχρονως +συν +συναμα +συνεπως +συνηθως +συχνα +συχνας +συχνες +συχνη +συχνην +συχνης +συχνο +συχνοι +συχνον +συχνος +συχνου +συχνους +συχνων +συχνως +σχεδον +σωστα +σόσ +σύ +σύν +σὸς +σὺ +σὺν +τά +τήν +τί +τίς +τίσ +τα +ταδε +ταυτα +ταυτες +ταυτη +ταυτην +ταυτης +ταυτο +ταυτον +ταυτος +ταυτου +ταυτων +ταχα +ταχατε +ταῖς +τε +τελικα +τελικως +τες +τετοια +τετοιαν +τετοιας +τετοιες +τετοιο +τετοιοι +τετοιον +τετοιος +τετοιου +τετοιους +τετοιων +τη +την +της +τησ +τι +τινα +τιποτα +τιποτε +τις +τισ +το +τοί +τοι +τοιοῦτος +τοιοῦτοσ +τον +τος +τοσα +τοσες +τοση +τοσην +τοσης +τοσο +τοσοι +τοσον +τοσος +τοσου +τοσους +τοσων +τοτε +του +τουλαχιστο +τουλαχιστον +τους +τουτα +τουτες +τουτη +τουτην +τουτης +τουτο +τουτοι +τουτοις +τουτον +τουτος +τουτου +τουτους +τουτων +τούσ +τοὺς +τοῖς +τοῦ +τυχον +των +τωρα +τό +τόν +τότε +τὰ +τὰς +τὴν +τὸ +τὸν +τῆς +τῆσ +τῇ +τῶν +τῷ +υπ +υπερ +υπο +υποψη +υποψιν +υπό +υστερα +φετος +χαμηλα +χθες +χτες +χωρις +χωριστα +ψηλα +ω +ωραια +ως +ωσ +ωσαν +ωσοτου +ωσπου +ωστε +ωστοσο +ωχ +ἀλλ' +ἀλλά +ἀλλὰ +ἀλλ’ +ἀπ +ἀπό +ἀπὸ +ἀφ +ἂν +ἃ +ἄλλος +ἄλλοσ +ἄν +ἄρα +ἅμα +ἐάν +ἐγώ +ἐγὼ +ἐκ +ἐμόσ +ἐμὸς +ἐν +ἐξ +ἐπί +ἐπεὶ +ἐπὶ +ἐστι +ἐφ +ἐὰν +ἑαυτοῦ +ἔτι +ἡ +ἢ +ἣ +ἤ +ἥ +ἧς +ἵνα +ὁ +ὃ +ὃν +ὃς +ὅ +ὅδε +ὅθεν +ὅπερ +ὅς +ὅσ +ὅστις +ὅστισ +ὅτε +ὅτι +ὑμόσ +ὑπ +ὑπέρ +ὑπό +ὑπὲρ +ὑπὸ +ὡς +ὡσ +ὥς +ὥστε +ὦ ᾧ \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_en.txt b/yake/core/StopwordsList/stopwords_en.txt similarity index 86% rename from yake/StopwordsList/stopwords_en.txt rename to yake/core/StopwordsList/stopwords_en.txt index fd50d8a5..5d5bbc05 100644 --- a/yake/StopwordsList/stopwords_en.txt +++ b/yake/core/StopwordsList/stopwords_en.txt @@ -1,575 +1,575 @@ -dr -dra -mr -ms -a -a's -able -about -above -according -accordingly -across -actually -after -afterwards -again -against -ain't -all -allow -allows -almost -alone -along -already -also -although -always -am -among -amongst -an -and -another -any -anybody -anyhow -anyone -anything -anyway -anyways -anywhere -apart -appear -appreciate -appropriate -are -aren't -around -as -aside -ask -asking -associated -at -available -away -awfully -b -be -became -because -become -becomes -becoming -been -before -beforehand -behind -being -believe -below -beside -besides -best -better -between -beyond -both -brief -but -by -c -c'mon -c's -came -can -can't -cannot -cant -cause -causes -certain -certainly -changes -clearly -co -com -come -comes -concerning -consequently -consider -considering -contain -containing -contains -corresponding -could -couldn't -course -currently -d -definitely -described -despite -did -didn't -different -do -does -doesn't -doing -don't -done -down -downwards -during -e -each -edu -eg -eight -either -else -elsewhere -enough -entirely -especially -et -etc -even -ever -every -everybody -everyone -everything -everywhere -ex -exactly -example -except -f -far -few -fifth -first -five -followed -following -follows -for -former -formerly -forth -four -from -further -furthermore -g -get -gets -getting -given -gives -go -goes -going -gone -got -gotten -greetings -h -had -hadn't -happens -hardly -has -hasn't -have -haven't -having -he -he's -hello -help -hence -her -here -here's -hereafter -hereby -herein -hereupon -hers -herself -hi -him -himself -his -hither -hopefully -how -howbeit -however -i -i'd -i'll -i'm -i've -ie -if -ignored -immediate -in -inasmuch -inc -indeed -indicate -indicated -indicates -inner -insofar -instead -into -inward -is -isn't -it -it'd -it'll -it's -its -itself -j -just -k -keep -keeps -kept -know -knows -known -l -last -lately -later -latter -latterly -least -less -lest -let -let's -like -liked -likely -little -look -looking -looks -ltd -m -mainly -many -may -maybe -me -mean -meanwhile -merely -might -more -moreover -most -mostly -much -must -my -myself -n -name -namely -nd -near -nearly -necessary -need -needs -neither -never -nevertheless -new -next -nine -no -nobody -non -none -noone -nor -normally -not -nothing -novel -now -nowhere -o -obviously -of -off -often -oh -ok -okay -old -on -once -one -ones -only -onto -or -other -others -otherwise -ought -our -ours -ourselves -out -outside -over -overall -own -p -particular -particularly -per -perhaps -placed -please -plus -possible -presumably -probably -provides -q -que -quite -qv -r -rather -rd -re -really -reasonably -regarding -regardless -regards -relatively -respectively -right -s -said -same -saw -say -saying -says -second -secondly -see -seeing -seem -seemed -seeming -seems -seen -self -selves -sensible -sent -serious -seriously -seven -several -shall -she -should -shouldn't -since -six -so -some -somebody -somehow -someone -something -sometime -sometimes -somewhat -somewhere -soon -sorry -specified -specify -specifying -still -sub -such -sup -sure -t -t's -take -taken -tell -tends -th -than -thank -thanks -thanx -that -that's -thats -the -their -theirs -them -themselves -then -thence -there -there's -thereafter -thereby -therefore -therein -theres -thereupon -these -they -they'd -they'll -they're -they've -think -third -this -thorough -thoroughly -those -though -three -through -throughout -thru -thus -to -together -too -took -toward -towards -tried -tries -truly -try -trying -twice -two -u -un -under -unfortunately -unless -unlikely -until -unto -up -upon -us -use -used -useful -uses -using -usually -uucp -v -value -various -very -via -viz -vs -w -want -wants -was -wasn't -way -we -we'd -we'll -we're -we've -welcome -well -went -were -weren't -what -what's -whatever -when -whence -whenever -where -where's -whereafter -whereas -whereby -wherein -whereupon -wherever -whether -which -while -whither -who -who's -whoever -whole -whom -whose -why -will -willing -wish -with -within -without -won't -wonder -would -would -wouldn't -x -y -yes -yet -you -you'd -you'll -you're -you've -your -yours -yourself -yourselves -z +dr +dra +mr +ms +a +a's +able +about +above +according +accordingly +across +actually +after +afterwards +again +against +ain't +all +allow +allows +almost +alone +along +already +also +although +always +am +among +amongst +an +and +another +any +anybody +anyhow +anyone +anything +anyway +anyways +anywhere +apart +appear +appreciate +appropriate +are +aren't +around +as +aside +ask +asking +associated +at +available +away +awfully +b +be +became +because +become +becomes +becoming +been +before +beforehand +behind +being +believe +below +beside +besides +best +better +between +beyond +both +brief +but +by +c +c'mon +c's +came +can +can't +cannot +cant +cause +causes +certain +certainly +changes +clearly +co +com +come +comes +concerning +consequently +consider +considering +contain +containing +contains +corresponding +could +couldn't +course +currently +d +definitely +described +despite +did +didn't +different +do +does +doesn't +doing +don't +done +down +downwards +during +e +each +edu +eg +eight +either +else +elsewhere +enough +entirely +especially +et +etc +even +ever +every +everybody +everyone +everything +everywhere +ex +exactly +example +except +f +far +few +fifth +first +five +followed +following +follows +for +former +formerly +forth +four +from +further +furthermore +g +get +gets +getting +given +gives +go +goes +going +gone +got +gotten +greetings +h +had +hadn't +happens +hardly +has +hasn't +have +haven't +having +he +he's +hello +help +hence +her +here +here's +hereafter +hereby +herein +hereupon +hers +herself +hi +him +himself +his +hither +hopefully +how +howbeit +however +i +i'd +i'll +i'm +i've +ie +if +ignored +immediate +in +inasmuch +inc +indeed +indicate +indicated +indicates +inner +insofar +instead +into +inward +is +isn't +it +it'd +it'll +it's +its +itself +j +just +k +keep +keeps +kept +know +knows +known +l +last +lately +later +latter +latterly +least +less +lest +let +let's +like +liked +likely +little +look +looking +looks +ltd +m +mainly +many +may +maybe +me +mean +meanwhile +merely +might +more +moreover +most +mostly +much +must +my +myself +n +name +namely +nd +near +nearly +necessary +need +needs +neither +never +nevertheless +new +next +nine +no +nobody +non +none +noone +nor +normally +not +nothing +novel +now +nowhere +o +obviously +of +off +often +oh +ok +okay +old +on +once +one +ones +only +onto +or +other +others +otherwise +ought +our +ours +ourselves +out +outside +over +overall +own +p +particular +particularly +per +perhaps +placed +please +plus +possible +presumably +probably +provides +q +que +quite +qv +r +rather +rd +re +really +reasonably +regarding +regardless +regards +relatively +respectively +right +s +said +same +saw +say +saying +says +second +secondly +see +seeing +seem +seemed +seeming +seems +seen +self +selves +sensible +sent +serious +seriously +seven +several +shall +she +should +shouldn't +since +six +so +some +somebody +somehow +someone +something +sometime +sometimes +somewhat +somewhere +soon +sorry +specified +specify +specifying +still +sub +such +sup +sure +t +t's +take +taken +tell +tends +th +than +thank +thanks +thanx +that +that's +thats +the +their +theirs +them +themselves +then +thence +there +there's +thereafter +thereby +therefore +therein +theres +thereupon +these +they +they'd +they'll +they're +they've +think +third +this +thorough +thoroughly +those +though +three +through +throughout +thru +thus +to +together +too +took +toward +towards +tried +tries +truly +try +trying +twice +two +u +un +under +unfortunately +unless +unlikely +until +unto +up +upon +us +use +used +useful +uses +using +usually +uucp +v +value +various +very +via +viz +vs +w +want +wants +was +wasn't +way +we +we'd +we'll +we're +we've +welcome +well +went +were +weren't +what +what's +whatever +when +whence +whenever +where +where's +whereafter +whereas +whereby +wherein +whereupon +wherever +whether +which +while +whither +who +who's +whoever +whole +whom +whose +why +will +willing +wish +with +within +without +won't +wonder +would +would +wouldn't +x +y +yes +yet +you +you'd +you'll +you're +you've +your +yours +yourself +yourselves +z zero \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_es.txt b/yake/core/StopwordsList/stopwords_es.txt similarity index 86% rename from yake/StopwordsList/stopwords_es.txt rename to yake/core/StopwordsList/stopwords_es.txt index 5f3983fc..78e3c411 100644 --- a/yake/StopwordsList/stopwords_es.txt +++ b/yake/core/StopwordsList/stopwords_es.txt @@ -1,351 +1,351 @@ -él -ésta -éstas -éste -éstos -última -últimas -último -últimos -a -añadió -aún -actualmente -adelante -además -afirmó -agregó -ahí -ahora -al -algún -algo -alguna -algunas -alguno -algunos -alrededor -ambos -ante -anterior -antes -apenas -aproximadamente -aquí -así -aseguró -aunque -ayer -bajo -bien -buen -buena -buenas -bueno -buenos -cómo -cada -casi -cerca -cierto -cinco -comentó -como -con -conocer -consideró -considera -contra -cosas -creo -cual -cuales -cualquier -cuando -cuanto -cuatro -cuenta -da -dado -dan -dar -de -debe -deben -debido -decir -dejó -del -demás -dentro -desde -después -dice -dicen -dicho -dieron -diferente -diferentes -dijeron -dijo -dio -donde -dos -durante -e -ejemplo -el -ella -ellas -ello -ellos -embargo -en -encuentra -entonces -entre -era -eran -es -esa -esas -ese -eso -esos -está -están -esta -estaba -estaban -estamos -estar -estará -estas -este -esto -estos -estoy -estuvo -ex -existe -existen -explicó -expresó -fin -fue -fuera -fueron -gran -grandes -ha -había -habían -haber -habrá -hace -hacen -hacer -hacerlo -hacia -haciendo -han -hasta -hay -haya -he -hecho -hemos -hicieron -hizo -hoy -hubo -igual -incluso -indicó -informó -junto -la -lado -las -le -les -llegó -lleva -llevar -lo -los -luego -lugar -más -manera -manifestó -mayor -me -mediante -mejor -mencionó -menos -mi -mientras -misma -mismas -mismo -mismos -momento -mucha -muchas -mucho -muchos -muy -nada -nadie -ni -ningún -ninguna -ningunas -ninguno -ningunos -no -nos -nosotras -nosotros -nuestra -nuestras -nuestro -nuestros -nueva -nuevas -nuevo -nuevos -nunca -o -ocho -otra -otras -otro -otros -para -parece -parte -partir -pasada -pasado -pero -pesar -poca -pocas -poco -pocos -podemos -podrá -podrán -podría -podrían -poner -por -porque -posible -próximo -próximos -primer -primera -primero -primeros -principalmente -propia -propias -propio -propios -pudo -pueda -puede -pueden -pues -qué -que -quedó -queremos -quién -quien -quienes -quiere -realizó -realizado -realizar -respecto -sí -sólo -se -señaló -sea -sean -según -segunda -segundo -seis -ser -será -serán -sería -si -sido -siempre -siendo -siete -sigue -siguiente -sin -sino -sobre -sola -solamente -solas -solo -solos -son -su -sus -tal -también -tampoco -tan -tanto -tenía -tendrá -tendrán -tenemos -tener -tenga -tengo -tenido -tercera -tiene -tienen -toda -todas -todavía -todo -todos -total -tras -trata -través -tres -tuvo -un -una -unas -uno -unos -usted -va -vamos -van -varias -varios -veces -ver -vez -y -ya +él +ésta +éstas +éste +éstos +última +últimas +último +últimos +a +añadió +aún +actualmente +adelante +además +afirmó +agregó +ahí +ahora +al +algún +algo +alguna +algunas +alguno +algunos +alrededor +ambos +ante +anterior +antes +apenas +aproximadamente +aquí +así +aseguró +aunque +ayer +bajo +bien +buen +buena +buenas +bueno +buenos +cómo +cada +casi +cerca +cierto +cinco +comentó +como +con +conocer +consideró +considera +contra +cosas +creo +cual +cuales +cualquier +cuando +cuanto +cuatro +cuenta +da +dado +dan +dar +de +debe +deben +debido +decir +dejó +del +demás +dentro +desde +después +dice +dicen +dicho +dieron +diferente +diferentes +dijeron +dijo +dio +donde +dos +durante +e +ejemplo +el +ella +ellas +ello +ellos +embargo +en +encuentra +entonces +entre +era +eran +es +esa +esas +ese +eso +esos +está +están +esta +estaba +estaban +estamos +estar +estará +estas +este +esto +estos +estoy +estuvo +ex +existe +existen +explicó +expresó +fin +fue +fuera +fueron +gran +grandes +ha +había +habían +haber +habrá +hace +hacen +hacer +hacerlo +hacia +haciendo +han +hasta +hay +haya +he +hecho +hemos +hicieron +hizo +hoy +hubo +igual +incluso +indicó +informó +junto +la +lado +las +le +les +llegó +lleva +llevar +lo +los +luego +lugar +más +manera +manifestó +mayor +me +mediante +mejor +mencionó +menos +mi +mientras +misma +mismas +mismo +mismos +momento +mucha +muchas +mucho +muchos +muy +nada +nadie +ni +ningún +ninguna +ningunas +ninguno +ningunos +no +nos +nosotras +nosotros +nuestra +nuestras +nuestro +nuestros +nueva +nuevas +nuevo +nuevos +nunca +o +ocho +otra +otras +otro +otros +para +parece +parte +partir +pasada +pasado +pero +pesar +poca +pocas +poco +pocos +podemos +podrá +podrán +podría +podrían +poner +por +porque +posible +próximo +próximos +primer +primera +primero +primeros +principalmente +propia +propias +propio +propios +pudo +pueda +puede +pueden +pues +qué +que +quedó +queremos +quién +quien +quienes +quiere +realizó +realizado +realizar +respecto +sí +sólo +se +señaló +sea +sean +según +segunda +segundo +seis +ser +será +serán +sería +si +sido +siempre +siendo +siete +sigue +siguiente +sin +sino +sobre +sola +solamente +solas +solo +solos +son +su +sus +tal +también +tampoco +tan +tanto +tenía +tendrá +tendrán +tenemos +tener +tenga +tengo +tenido +tercera +tiene +tienen +toda +todas +todavía +todo +todos +total +tras +trata +través +tres +tuvo +un +una +unas +uno +unos +usted +va +vamos +van +varias +varios +veces +ver +vez +y +ya yo \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_et.txt b/yake/core/StopwordsList/stopwords_et.txt similarity index 81% rename from yake/StopwordsList/stopwords_et.txt rename to yake/core/StopwordsList/stopwords_et.txt index 8e774ef3..8b5d74e5 100644 --- a/yake/StopwordsList/stopwords_et.txt +++ b/yake/core/StopwordsList/stopwords_et.txt @@ -1,35 +1,35 @@ -aga -ei -et -ja -jah -kas -kui -kõik -ma -me -mida -midagi -mind -minu -mis -mu -mul -mulle -nad -nii -oled -olen -oli -oma -on -pole -sa -seda -see -selle -siin -siis -ta -te +aga +ei +et +ja +jah +kas +kui +kõik +ma +me +mida +midagi +mind +minu +mis +mu +mul +mulle +nad +nii +oled +olen +oli +oma +on +pole +sa +seda +see +selle +siin +siis +ta +te ära \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_fa.txt b/yake/core/StopwordsList/stopwords_fa.txt similarity index 89% rename from yake/StopwordsList/stopwords_fa.txt rename to yake/core/StopwordsList/stopwords_fa.txt index a9347060..109b54c3 100644 --- a/yake/StopwordsList/stopwords_fa.txt +++ b/yake/core/StopwordsList/stopwords_fa.txt @@ -1,332 +1,332 @@ -و -در -به -از -كه -مي -اين -است -را -با -هاي -براي -آن -يك -شود -شده -خود -ها -كرد -شد -اي -تا -كند -بر -بود -گفت -نيز -وي -هم -كنند -دارد -ما -كرده -يا -اما -بايد -دو -اند -هر -خواهد -او -مورد -آنها -باشد -ديگر -مردم -نمي -بين -پيش -پس -اگر -همه -صورت -يكي -هستند -بي -من -دهد -هزار -نيست -استفاده -داد -داشته -راه -داشت -چه -همچنين -كردند -داده -بوده -دارند -همين -ميليون -سوي -شوند -بيشتر -بسيار -روي -گرفته -هايي -تواند -اول -نام -هيچ -چند -جديد -بيش -شدن -كردن -كنيم -نشان -حتي -اينكه -ولی -توسط -چنين -برخي -نه -ديروز -دوم -درباره -بعد -مختلف -گيرد -شما -گفته -آنان -بار -طور -گرفت -دهند -گذاري -بسياري -طي -بودند -ميليارد -بدون -تمام -كل -تر -براساس -شدند -ترين -امروز -باشند -ندارد -چون -قابل -گويد -ديگري -همان -خواهند -قبل -آمده -اكنون -تحت -طريق -گيري -جاي -هنوز -چرا -البته -كنيد -سازي -سوم -كنم -بلكه -زير -توانند -ضمن -فقط -بودن -حق -آيد -وقتي -اش -يابد -نخستين -مقابل -خدمات -امسال -تاكنون -مانند -تازه -آورد -فكر -آنچه -نخست -نشده -شايد -چهار -جريان -پنج -ساخته -زيرا -نزديك -برداري -كسي -ريزي -رفت -گردد -مثل -آمد -ام -بهترين -دانست -كمتر -دادن -تمامي -جلوگيري -بيشتري -ايم -ناشي -چيزي -آنكه -بالا -بنابراين -ايشان -بعضي -دادند -داشتند -برخوردار -نخواهد -هنگام -نبايد -غير -نبود -ديده -وگو -داريم -چگونه -بندي -خواست -فوق -ده -نوعي -هستيم -ديگران -همچنان -سراسر -ندارند -گروهي -سعي -روزهاي -آنجا -يكديگر -كردم -بيست -بروز -سپس -رفته -آورده -نمايد -باشيم -گويند -زياد -خويش -همواره -گذاشته -شش -نداشته -شناسي -خواهيم -آباد -داشتن -نظير -همچون -باره -نكرده -شان -سابق -هفت -دانند -جايي -بی -جز -زیرِ -رویِ -سریِ -تویِ -جلویِ -پیشِ -عقبِ -بالایِ -خارجِ -وسطِ -بیرونِ -سویِ -کنارِ -پاعینِ -نزدِ -نزدیکِ -دنبالِ -حدودِ -برابرِ -طبقِ -مانندِ -ضدِّ -هنگامِ -برایِ -مثلِ -بارة -اثرِ -تولِ -علّتِ -سمتِ -عنوانِ -قصدِ -روب -جدا -کی -که -چیست -هست -کجا -کجاست -کَی -چطور -کدام -آیا -مگر -چندین -یک -چیزی -دیگر -کسی -بعری -هیچ -چیز -جا -کس -هرگز -یا -تنها -بلکه -خیاه -بله -بلی -آره -آری -مرسی -البتّه -لطفاً -ّه -انکه -وقتیکه -همین -پیش -مدّتی -هنگامی -مان -تان +و +در +به +از +كه +مي +اين +است +را +با +هاي +براي +آن +يك +شود +شده +خود +ها +كرد +شد +اي +تا +كند +بر +بود +گفت +نيز +وي +هم +كنند +دارد +ما +كرده +يا +اما +بايد +دو +اند +هر +خواهد +او +مورد +آنها +باشد +ديگر +مردم +نمي +بين +پيش +پس +اگر +همه +صورت +يكي +هستند +بي +من +دهد +هزار +نيست +استفاده +داد +داشته +راه +داشت +چه +همچنين +كردند +داده +بوده +دارند +همين +ميليون +سوي +شوند +بيشتر +بسيار +روي +گرفته +هايي +تواند +اول +نام +هيچ +چند +جديد +بيش +شدن +كردن +كنيم +نشان +حتي +اينكه +ولی +توسط +چنين +برخي +نه +ديروز +دوم +درباره +بعد +مختلف +گيرد +شما +گفته +آنان +بار +طور +گرفت +دهند +گذاري +بسياري +طي +بودند +ميليارد +بدون +تمام +كل +تر +براساس +شدند +ترين +امروز +باشند +ندارد +چون +قابل +گويد +ديگري +همان +خواهند +قبل +آمده +اكنون +تحت +طريق +گيري +جاي +هنوز +چرا +البته +كنيد +سازي +سوم +كنم +بلكه +زير +توانند +ضمن +فقط +بودن +حق +آيد +وقتي +اش +يابد +نخستين +مقابل +خدمات +امسال +تاكنون +مانند +تازه +آورد +فكر +آنچه +نخست +نشده +شايد +چهار +جريان +پنج +ساخته +زيرا +نزديك +برداري +كسي +ريزي +رفت +گردد +مثل +آمد +ام +بهترين +دانست +كمتر +دادن +تمامي +جلوگيري +بيشتري +ايم +ناشي +چيزي +آنكه +بالا +بنابراين +ايشان +بعضي +دادند +داشتند +برخوردار +نخواهد +هنگام +نبايد +غير +نبود +ديده +وگو +داريم +چگونه +بندي +خواست +فوق +ده +نوعي +هستيم +ديگران +همچنان +سراسر +ندارند +گروهي +سعي +روزهاي +آنجا +يكديگر +كردم +بيست +بروز +سپس +رفته +آورده +نمايد +باشيم +گويند +زياد +خويش +همواره +گذاشته +شش +نداشته +شناسي +خواهيم +آباد +داشتن +نظير +همچون +باره +نكرده +شان +سابق +هفت +دانند +جايي +بی +جز +زیرِ +رویِ +سریِ +تویِ +جلویِ +پیشِ +عقبِ +بالایِ +خارجِ +وسطِ +بیرونِ +سویِ +کنارِ +پاعینِ +نزدِ +نزدیکِ +دنبالِ +حدودِ +برابرِ +طبقِ +مانندِ +ضدِّ +هنگامِ +برایِ +مثلِ +بارة +اثرِ +تولِ +علّتِ +سمتِ +عنوانِ +قصدِ +روب +جدا +کی +که +چیست +هست +کجا +کجاست +کَی +چطور +کدام +آیا +مگر +چندین +یک +چیزی +دیگر +کسی +بعری +هیچ +چیز +جا +کس +هرگز +یا +تنها +بلکه +خیاه +بله +بلی +آره +آری +مرسی +البتّه +لطفاً +ّه +انکه +وقتیکه +همین +پیش +مدّتی +هنگامی +مان +تان diff --git a/yake/StopwordsList/stopwords_fi.txt b/yake/core/StopwordsList/stopwords_fi.txt similarity index 88% rename from yake/StopwordsList/stopwords_fi.txt rename to yake/core/StopwordsList/stopwords_fi.txt index 6b9afbb1..c5a12ba2 100644 --- a/yake/StopwordsList/stopwords_fi.txt +++ b/yake/core/StopwordsList/stopwords_fi.txt @@ -1,747 +1,747 @@ -aiemmin -aika -aikaa -aikaan -aikaisemmin -aikaisin -aikajen -aikana -aikoina -aikoo -aikovat -aina -ainakaan -ainakin -ainoa -ainoat -aiomme -aion -aiotte -aist -aivan -ajan -älä -alas -alemmas -älköön -alkuisin -alkuun -alla -alle -aloitamme -aloitan -aloitat -aloitatte -aloitattivat -aloitettava -aloitettevaksi -aloitettu -aloitimme -aloitin -aloitit -aloititte -aloittaa -aloittamatta -aloitti -aloittivat -alta -aluksi -alussa -alusta -annettavaksi -annetteva -annettu -antaa -antamatta -antoi -aoua -apu -asia -asiaa -asian -asiasta -asiat -asioiden -asioihin -asioita -asti -avuksi -avulla -avun -avutta -edellä -edelle -edelleen -edeltä -edemmäs -edes -edessä -edestä -ehkä -ei -eikä -eilen -eivät -eli -ellei -elleivät -ellemme -ellen -ellet -ellette -emme -en -enää -enemmän -eniten -ennen -ensi -ensimmäinen -ensimmäiseksi -ensimmäisen -ensimmäisenä -ensimmäiset -ensimmäisiä -ensimmäisiksi -ensimmäisinä -ensimmäistä -ensin -entinen -entisen -entisiä -entistä -entisten -eräät -eräiden -eräs -eri -erittäin -erityisesti -esi -esiin -esillä -esimerkiksi -et -eteen -etenkin -että -ette -ettei -halua -haluaa -haluamatta -haluamme -haluan -haluat -haluatte -haluavat -halunnut -halusi -halusimme -halusin -halusit -halusitte -halusivat -halutessa -haluton -hän -häneen -hänellä -hänelle -häneltä -hänen -hänessä -hänestä -hänet -he -hei -heidän -heihin -heille -heiltä -heissä -heistä -heitä -helposti -heti -hetkellä -hieman -huolimatta -huomenna -hyvä -hyvää -hyvät -hyviä -hyvien -hyviin -hyviksi -hyville -hyviltä -hyvin -hyvinä -hyvissä -hyvistä -ihan -ilman -ilmeisesti -itse -itseään -itsensä -ja -jää -jälkeen -jälleen -jo -johon -joiden -joihin -joiksi -joilla -joille -joilta -joissa -joista -joita -joka -jokainen -jokin -joko -joku -jolla -jolle -jolloin -jolta -jompikumpi -jonka -jonkin -jonne -joo -jopa -jos -joskus -jossa -josta -jota -jotain -joten -jotenkin -jotenkuten -jotka -jotta -jouduimme -jouduin -jouduit -jouduitte -joudumme -joudun -joudutte -joukkoon -joukossa -joukosta -joutua -joutui -joutuivat -joutumaan -joutuu -joutuvat -juuri -kahdeksan -kahdeksannen -kahdella -kahdelle -kahdelta -kahden -kahdessa -kahdesta -kahta -kahteen -kai -kaiken -kaikille -kaikilta -kaikkea -kaikki -kaikkia -kaikkiaan -kaikkialla -kaikkialle -kaikkialta -kaikkien -kaikkin -kaksi -kannalta -kannattaa -kanssa -kanssaan -kanssamme -kanssani -kanssanne -kanssasi -kauan -kauemmas -kautta -kehen -keiden -keihin -keiksi -keillä -keille -keiltä -keinä -keissä -keistä -keitä -keittä -keitten -keneen -keneksi -kenellä -kenelle -keneltä -kenen -kenenä -kenessä -kenestä -kenet -kenettä -kennessästä -kerran -kerta -kertaa -kesken -keskimäärin -ketä -ketkä -kiitos -kohti -koko -kokonaan -kolmas -kolme -kolmen -kolmesti -koska -koskaan -kovin -kuin -kuinka -kuitenkaan -kuitenkin -kuka -kukaan -kukin -kumpainen -kumpainenkaan -kumpi -kumpikaan -kumpikin -kun -kuten -kuuden -kuusi -kuutta -kyllä -kymmenen -kyse -lähekkäin -lähellä -lähelle -läheltä -lähemmäs -lähes -lähinnä -lähtien -läpi -liian -liki -lisää -lisäksi -luo -mahdollisimman -mahdollista -me -meidän -meillä -meille -melkein -melko -menee -meneet -menemme -menen -menet -menette -menevät -meni -menimme -menin -menit -menivät -mennessä -mennyt -menossa -mihin -mikä -mikään -mikäli -mikin -miksi -milloin -minä -minne -minun -minut -missä -mistä -mitä -mitään -miten -moi -molemmat -mones -monesti -monet -moni -moniaalla -moniaalle -moniaalta -monta -muassa -muiden -muita -muka -mukaan -mukaansa -mukana -mutta -muu -muualla -muualle -muualta -muuanne -muulloin -muun -muut -muuta -muutama -muutaman -muuten -myöhemmin -myös -myöskään -myöskin -myötä -näiden -näin -näissä -näissähin -näissälle -näissältä -näissästä -näitä -nämä -ne -neljä -neljää -neljän -niiden -niin -niistä -niitä -noin -nopeammin -nopeasti -nopeiten -nro -nuo -nyt -ohi -oikein -ole -olemme -olen -olet -olette -oleva -olevan -olevat -oli -olimme -olin -olisi -olisimme -olisin -olisit -olisitte -olisivat -olit -olitte -olivat -olla -olleet -olli -ollut -oma -omaa -omaan -omaksi -omalle -omalta -oman -omassa -omat -omia -omien -omiin -omiksi -omille -omilta -omissa -omista -on -onkin -onko -ovat -päälle -paikoittain -paitsi -pakosti -paljon -paremmin -parempi -parhaillaan -parhaiten -peräti -perusteella -pian -pieneen -pieneksi -pienellä -pienelle -pieneltä -pienempi -pienestä -pieni -pienin -puolesta -puolestaan -runsaasti -saakka -sadam -sama -samaa -samaan -samalla -samallalta -samallassa -samallasta -saman -samat -samoin -sata -sataa -satojen -se -seitsemän -sekä -sen -seuraavat -siellä -sieltä -siihen -siinä -siis -siitä -sijaan -siksi -sillä -silloin -silti -sinä -sinne -sinua -sinulle -sinulta -sinun -sinussa -sinusta -sinut -sisäkkäin -sisällä -sitä -siten -sitten -suoraan -suuntaan -suuren -suuret -suuri -suuria -suurin -suurten -taa -täällä -täältä -taas -taemmas -tähän -tahansa -tai -takaa -takaisin -takana -takia -tällä -tällöin -tämä -tämän -tänä -tänään -tänne -tapauksessa -tässä -tästä -tätä -täten -tavalla -tavoitteena -täysin -täytyvät -täytyy -te -tietysti -todella -toinen -toisaalla -toisaalle -toisaalta -toiseen -toiseksi -toisella -toiselle -toiselta -toisemme -toisen -toisensa -toisessa -toisesta -toista -toistaiseksi -toki -tosin -tuhannen -tuhat -tule -tulee -tulemme -tulen -tulet -tulette -tulevat -tulimme -tulin -tulisi -tulisimme -tulisin -tulisit -tulisitte -tulisivat -tulit -tulitte -tulivat -tulla -tulleet -tullut -tuntuu -tuo -tuolla -tuolloin -tuolta -tuonne -tuskin -tykö -usea -useasti -useimmiten -usein -useita -uudeksi -uudelleen -uuden -uudet -uusi -uusia -uusien -uusinta -uuteen -uutta -vaan -vähän -vähemmän -vähintään -vähiten -vai -vaiheessa -vaikea -vaikean -vaikeat -vaikeilla -vaikeille -vaikeilta -vaikeissa -vaikeista -vaikka -vain -välillä -varmasti -varsin -varsinkin -varten -vasta -vastaan -vastakkain -verran -vielä -vierekkäin -vieri -viiden -viime -viimeinen -viimeisen -viimeksi -viisi -voi -voidaan -voimme -voin -voisi -voit -voitte -voivat -vuoden -vuoksi -vuosi -vuosien -vuosina -vuotta -yhä -yhdeksän -yhden -yhdessä -yhtä -yhtäällä -yhtäälle -yhtäältä -yhtään -yhteen -yhteensä -yhteydessä -yhteyteen -yksi -yksin -yksittäin -yleensä -ylemmäs -yli -ylös +aiemmin +aika +aikaa +aikaan +aikaisemmin +aikaisin +aikajen +aikana +aikoina +aikoo +aikovat +aina +ainakaan +ainakin +ainoa +ainoat +aiomme +aion +aiotte +aist +aivan +ajan +älä +alas +alemmas +älköön +alkuisin +alkuun +alla +alle +aloitamme +aloitan +aloitat +aloitatte +aloitattivat +aloitettava +aloitettevaksi +aloitettu +aloitimme +aloitin +aloitit +aloititte +aloittaa +aloittamatta +aloitti +aloittivat +alta +aluksi +alussa +alusta +annettavaksi +annetteva +annettu +antaa +antamatta +antoi +aoua +apu +asia +asiaa +asian +asiasta +asiat +asioiden +asioihin +asioita +asti +avuksi +avulla +avun +avutta +edellä +edelle +edelleen +edeltä +edemmäs +edes +edessä +edestä +ehkä +ei +eikä +eilen +eivät +eli +ellei +elleivät +ellemme +ellen +ellet +ellette +emme +en +enää +enemmän +eniten +ennen +ensi +ensimmäinen +ensimmäiseksi +ensimmäisen +ensimmäisenä +ensimmäiset +ensimmäisiä +ensimmäisiksi +ensimmäisinä +ensimmäistä +ensin +entinen +entisen +entisiä +entistä +entisten +eräät +eräiden +eräs +eri +erittäin +erityisesti +esi +esiin +esillä +esimerkiksi +et +eteen +etenkin +että +ette +ettei +halua +haluaa +haluamatta +haluamme +haluan +haluat +haluatte +haluavat +halunnut +halusi +halusimme +halusin +halusit +halusitte +halusivat +halutessa +haluton +hän +häneen +hänellä +hänelle +häneltä +hänen +hänessä +hänestä +hänet +he +hei +heidän +heihin +heille +heiltä +heissä +heistä +heitä +helposti +heti +hetkellä +hieman +huolimatta +huomenna +hyvä +hyvää +hyvät +hyviä +hyvien +hyviin +hyviksi +hyville +hyviltä +hyvin +hyvinä +hyvissä +hyvistä +ihan +ilman +ilmeisesti +itse +itseään +itsensä +ja +jää +jälkeen +jälleen +jo +johon +joiden +joihin +joiksi +joilla +joille +joilta +joissa +joista +joita +joka +jokainen +jokin +joko +joku +jolla +jolle +jolloin +jolta +jompikumpi +jonka +jonkin +jonne +joo +jopa +jos +joskus +jossa +josta +jota +jotain +joten +jotenkin +jotenkuten +jotka +jotta +jouduimme +jouduin +jouduit +jouduitte +joudumme +joudun +joudutte +joukkoon +joukossa +joukosta +joutua +joutui +joutuivat +joutumaan +joutuu +joutuvat +juuri +kahdeksan +kahdeksannen +kahdella +kahdelle +kahdelta +kahden +kahdessa +kahdesta +kahta +kahteen +kai +kaiken +kaikille +kaikilta +kaikkea +kaikki +kaikkia +kaikkiaan +kaikkialla +kaikkialle +kaikkialta +kaikkien +kaikkin +kaksi +kannalta +kannattaa +kanssa +kanssaan +kanssamme +kanssani +kanssanne +kanssasi +kauan +kauemmas +kautta +kehen +keiden +keihin +keiksi +keillä +keille +keiltä +keinä +keissä +keistä +keitä +keittä +keitten +keneen +keneksi +kenellä +kenelle +keneltä +kenen +kenenä +kenessä +kenestä +kenet +kenettä +kennessästä +kerran +kerta +kertaa +kesken +keskimäärin +ketä +ketkä +kiitos +kohti +koko +kokonaan +kolmas +kolme +kolmen +kolmesti +koska +koskaan +kovin +kuin +kuinka +kuitenkaan +kuitenkin +kuka +kukaan +kukin +kumpainen +kumpainenkaan +kumpi +kumpikaan +kumpikin +kun +kuten +kuuden +kuusi +kuutta +kyllä +kymmenen +kyse +lähekkäin +lähellä +lähelle +läheltä +lähemmäs +lähes +lähinnä +lähtien +läpi +liian +liki +lisää +lisäksi +luo +mahdollisimman +mahdollista +me +meidän +meillä +meille +melkein +melko +menee +meneet +menemme +menen +menet +menette +menevät +meni +menimme +menin +menit +menivät +mennessä +mennyt +menossa +mihin +mikä +mikään +mikäli +mikin +miksi +milloin +minä +minne +minun +minut +missä +mistä +mitä +mitään +miten +moi +molemmat +mones +monesti +monet +moni +moniaalla +moniaalle +moniaalta +monta +muassa +muiden +muita +muka +mukaan +mukaansa +mukana +mutta +muu +muualla +muualle +muualta +muuanne +muulloin +muun +muut +muuta +muutama +muutaman +muuten +myöhemmin +myös +myöskään +myöskin +myötä +näiden +näin +näissä +näissähin +näissälle +näissältä +näissästä +näitä +nämä +ne +neljä +neljää +neljän +niiden +niin +niistä +niitä +noin +nopeammin +nopeasti +nopeiten +nro +nuo +nyt +ohi +oikein +ole +olemme +olen +olet +olette +oleva +olevan +olevat +oli +olimme +olin +olisi +olisimme +olisin +olisit +olisitte +olisivat +olit +olitte +olivat +olla +olleet +olli +ollut +oma +omaa +omaan +omaksi +omalle +omalta +oman +omassa +omat +omia +omien +omiin +omiksi +omille +omilta +omissa +omista +on +onkin +onko +ovat +päälle +paikoittain +paitsi +pakosti +paljon +paremmin +parempi +parhaillaan +parhaiten +peräti +perusteella +pian +pieneen +pieneksi +pienellä +pienelle +pieneltä +pienempi +pienestä +pieni +pienin +puolesta +puolestaan +runsaasti +saakka +sadam +sama +samaa +samaan +samalla +samallalta +samallassa +samallasta +saman +samat +samoin +sata +sataa +satojen +se +seitsemän +sekä +sen +seuraavat +siellä +sieltä +siihen +siinä +siis +siitä +sijaan +siksi +sillä +silloin +silti +sinä +sinne +sinua +sinulle +sinulta +sinun +sinussa +sinusta +sinut +sisäkkäin +sisällä +sitä +siten +sitten +suoraan +suuntaan +suuren +suuret +suuri +suuria +suurin +suurten +taa +täällä +täältä +taas +taemmas +tähän +tahansa +tai +takaa +takaisin +takana +takia +tällä +tällöin +tämä +tämän +tänä +tänään +tänne +tapauksessa +tässä +tästä +tätä +täten +tavalla +tavoitteena +täysin +täytyvät +täytyy +te +tietysti +todella +toinen +toisaalla +toisaalle +toisaalta +toiseen +toiseksi +toisella +toiselle +toiselta +toisemme +toisen +toisensa +toisessa +toisesta +toista +toistaiseksi +toki +tosin +tuhannen +tuhat +tule +tulee +tulemme +tulen +tulet +tulette +tulevat +tulimme +tulin +tulisi +tulisimme +tulisin +tulisit +tulisitte +tulisivat +tulit +tulitte +tulivat +tulla +tulleet +tullut +tuntuu +tuo +tuolla +tuolloin +tuolta +tuonne +tuskin +tykö +usea +useasti +useimmiten +usein +useita +uudeksi +uudelleen +uuden +uudet +uusi +uusia +uusien +uusinta +uuteen +uutta +vaan +vähän +vähemmän +vähintään +vähiten +vai +vaiheessa +vaikea +vaikean +vaikeat +vaikeilla +vaikeille +vaikeilta +vaikeissa +vaikeista +vaikka +vain +välillä +varmasti +varsin +varsinkin +varten +vasta +vastaan +vastakkain +verran +vielä +vierekkäin +vieri +viiden +viime +viimeinen +viimeisen +viimeksi +viisi +voi +voidaan +voimme +voin +voisi +voit +voitte +voivat +vuoden +vuoksi +vuosi +vuosien +vuosina +vuotta +yhä +yhdeksän +yhden +yhdessä +yhtä +yhtäällä +yhtäälle +yhtäältä +yhtään +yhteen +yhteensä +yhteydessä +yhteyteen +yksi +yksin +yksittäin +yleensä +ylemmäs +yli +ylös ympäri \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_fr.txt b/yake/core/StopwordsList/stopwords_fr.txt similarity index 86% rename from yake/StopwordsList/stopwords_fr.txt rename to yake/core/StopwordsList/stopwords_fr.txt index f6e87b55..a953b9d4 100644 --- a/yake/StopwordsList/stopwords_fr.txt +++ b/yake/core/StopwordsList/stopwords_fr.txt @@ -1,463 +1,463 @@ -a -à -â -abord -afin -ah -ai -aie -ainsi -allaient -allo -allô -allons -après -assez -attendu -au -aucun -aucune -aujourd -aujourd'hui -auquel -aura -auront -aussi -autre -autres -aux -auxquelles -auxquels -avaient -avais -avait -avant -avec -avoir -ayant -b -bah -beaucoup -bien -bigre -boum -bravo -brrr -c -ça -car -ce -ceci -cela -celle -celle-ci -celle-là -celles -celles-ci -celles-là -celui -celui-ci -celui-là -cent -cependant -certain -certaine -certaines -certains -certes -ces -cet -cette -ceux -ceux-ci -ceux-là -chacun -chaque -cher -chère -chères -chers -chez -chiche -chut -ci -cinq -cinquantaine -cinquante -cinquantième -cinquième -clac -clic -combien -comme -comment -compris -concernant -contre -couic -crac -d -da -dans -de -debout -dedans -dehors -delà -depuis -derrière -des -dès -désormais -desquelles -desquels -dessous -dessus -deux -deuxième -deuxièmement -devant -devers -devra -différent -différente -différentes -différents -dire -divers -diverse -diverses -dix -dix-huit -dixième -dix-neuf -dix-sept -doit -doivent -donc -dont -douze -douzième -dring -du -duquel -durant -e -effet -eh -elle -elle-même -elles -elles-mêmes -en -encore -entre -envers -environ -es -ès -est -et -etant -étaient -étais -était -étant -etc -été -etre -être -eu -euh -eux -eux-mêmes -excepté -f -façon -fais -faisaient -faisant -fait -feront -fi -flac -floc -font -g -gens -h -ha -hé -hein -hélas -hem -hep -hi -ho -holà -hop -hormis -hors -hou -houp -hue -hui -huit -huitième -hum -hurrah -i -il -ils -importe -j -je -jusqu -jusque -k -l -la -là -laquelle -las -le -lequel -les -lès -lesquelles -lesquels -leur -leurs -longtemps -lorsque -lui -lui-même -m -ma -maint -mais -malgré -me -même -mêmes -merci -mes -mien -mienne -miennes -miens -mille -mince -moi -moi-même -moins -mon -moyennant -n -na -ne -néanmoins -neuf -neuvième -ni -nombreuses -nombreux -non -nos -notre -nôtre -nôtres -nous -nous-mêmes -nul -o -o| -ô -oh -ohé -olé -ollé -on -ont -onze -onzième -ore -ou -où -ouf -ouias -oust -ouste -outre -p -paf -pan -par -parmi -partant -particulier -particulière -particulièrement -pas -passé -pendant -personne -peu -peut -peuvent -peux -pff -pfft -pfut -pif -plein -plouf -plus -plusieurs -plutôt -pouah -pour -pourquoi -premier -première -premièrement -près -proche -psitt -puisque -q -qu -quand -quant -quanta -quant-à-soi -quarante -quatorze -quatre -quatre-vingt -quatrième -quatrièmement -que -quel -quelconque -quelle -quelles -quelque -quelques -quelqu'un -quels -qui -quiconque -quinze -quoi -quoique -r -revoici -revoilà -rien -s -sa -sacrebleu -sans -sapristi -sauf -se -seize -selon -sept -septième -sera -seront -ses -si -sien -sienne -siennes -siens -sinon -six -sixième -soi -soi-même -soit -soixante -son -sont -sous -stop -suis -suivant -sur -surtout -t -ta -tac -tant -te -té -tel -telle -tellement -telles -tels -tenant -tes -tic -tien -tienne -tiennes -tiens -toc -toi -toi-même -ton -touchant -toujours -tous -tout -toute -toutes -treize -trente -très -trois -troisième -troisièmement -trop -tsoin -tsouin -tu -u -un -une -unes -uns -v -va -vais -vas -vé -vers -via -vif -vifs -vingt -vivat -vive -vives -vlan -voici -voilà -vont -vos -votre -vôtre -vôtres -vous -vous-mêmes -vu -w -x -y -z +a +à +â +abord +afin +ah +ai +aie +ainsi +allaient +allo +allô +allons +après +assez +attendu +au +aucun +aucune +aujourd +aujourd'hui +auquel +aura +auront +aussi +autre +autres +aux +auxquelles +auxquels +avaient +avais +avait +avant +avec +avoir +ayant +b +bah +beaucoup +bien +bigre +boum +bravo +brrr +c +ça +car +ce +ceci +cela +celle +celle-ci +celle-là +celles +celles-ci +celles-là +celui +celui-ci +celui-là +cent +cependant +certain +certaine +certaines +certains +certes +ces +cet +cette +ceux +ceux-ci +ceux-là +chacun +chaque +cher +chère +chères +chers +chez +chiche +chut +ci +cinq +cinquantaine +cinquante +cinquantième +cinquième +clac +clic +combien +comme +comment +compris +concernant +contre +couic +crac +d +da +dans +de +debout +dedans +dehors +delà +depuis +derrière +des +dès +désormais +desquelles +desquels +dessous +dessus +deux +deuxième +deuxièmement +devant +devers +devra +différent +différente +différentes +différents +dire +divers +diverse +diverses +dix +dix-huit +dixième +dix-neuf +dix-sept +doit +doivent +donc +dont +douze +douzième +dring +du +duquel +durant +e +effet +eh +elle +elle-même +elles +elles-mêmes +en +encore +entre +envers +environ +es +ès +est +et +etant +étaient +étais +était +étant +etc +été +etre +être +eu +euh +eux +eux-mêmes +excepté +f +façon +fais +faisaient +faisant +fait +feront +fi +flac +floc +font +g +gens +h +ha +hé +hein +hélas +hem +hep +hi +ho +holà +hop +hormis +hors +hou +houp +hue +hui +huit +huitième +hum +hurrah +i +il +ils +importe +j +je +jusqu +jusque +k +l +la +là +laquelle +las +le +lequel +les +lès +lesquelles +lesquels +leur +leurs +longtemps +lorsque +lui +lui-même +m +ma +maint +mais +malgré +me +même +mêmes +merci +mes +mien +mienne +miennes +miens +mille +mince +moi +moi-même +moins +mon +moyennant +n +na +ne +néanmoins +neuf +neuvième +ni +nombreuses +nombreux +non +nos +notre +nôtre +nôtres +nous +nous-mêmes +nul +o +o| +ô +oh +ohé +olé +ollé +on +ont +onze +onzième +ore +ou +où +ouf +ouias +oust +ouste +outre +p +paf +pan +par +parmi +partant +particulier +particulière +particulièrement +pas +passé +pendant +personne +peu +peut +peuvent +peux +pff +pfft +pfut +pif +plein +plouf +plus +plusieurs +plutôt +pouah +pour +pourquoi +premier +première +premièrement +près +proche +psitt +puisque +q +qu +quand +quant +quanta +quant-à-soi +quarante +quatorze +quatre +quatre-vingt +quatrième +quatrièmement +que +quel +quelconque +quelle +quelles +quelque +quelques +quelqu'un +quels +qui +quiconque +quinze +quoi +quoique +r +revoici +revoilà +rien +s +sa +sacrebleu +sans +sapristi +sauf +se +seize +selon +sept +septième +sera +seront +ses +si +sien +sienne +siennes +siens +sinon +six +sixième +soi +soi-même +soit +soixante +son +sont +sous +stop +suis +suivant +sur +surtout +t +ta +tac +tant +te +té +tel +telle +tellement +telles +tels +tenant +tes +tic +tien +tienne +tiennes +tiens +toc +toi +toi-même +ton +touchant +toujours +tous +tout +toute +toutes +treize +trente +très +trois +troisième +troisièmement +trop +tsoin +tsouin +tu +u +un +une +unes +uns +v +va +vais +vas +vé +vers +via +vif +vifs +vingt +vivat +vive +vives +vlan +voici +voilà +vont +vos +votre +vôtre +vôtres +vous +vous-mêmes +vu +w +x +y +z zut \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hi.txt b/yake/core/StopwordsList/stopwords_hi.txt similarity index 92% rename from yake/StopwordsList/stopwords_hi.txt rename to yake/core/StopwordsList/stopwords_hi.txt index 8cab47ca..2306826a 100644 --- a/yake/StopwordsList/stopwords_hi.txt +++ b/yake/core/StopwordsList/stopwords_hi.txt @@ -1,163 +1,163 @@ -पर -इन -वह -यिह -वुह -जिन्हें -जिन्हों -तिन्हें -तिन्हों -किन्हों -किन्हें -इत्यादि -द्वारा -इन्हें -इन्हों -उन्हों -बिलकुल -निहायत -ऱ्वासा -इन्हीं -उन्हीं -उन्हें -इसमें -जितना -दुसरा -कितना -दबारा -साबुत -वग़ैरह -दूसरे -कौनसा -लेकिन -होता -करने -किया -लिये -अपने -नहीं -दिया -इसका -करना -वाले -सकते -इसके -सबसे -होने -करते -बहुत -वर्ग -करें -होती -अपनी -उनके -कहते -होते -करता -उनकी -इसकी -सकता -रखें -अपना -उसके -जिसे -तिसे -किसे -किसी -काफ़ी -पहले -नीचे -बाला -यहाँ -जैसा -जैसे -मानो -अंदर -भीतर -पूरा -सारा -होना -उनको -वहाँ -वहीं -जहाँ -जीधर -उनका -इनका -के -हैं -गया -बनी -एवं -हुआ -साथ -बाद -लिए -कुछ -कहा -यदि -हुई -इसे -हुए -अभी -सभी -कुल -रहा -रहे -इसी -उसे -जिस -जिन -तिस -तिन -कौन -किस -कोई -ऐसे -तरह -किर -साभ -संग -यही -बही -उसी -फिर -मगर -का -एक -यह -से -को -इस -कि -जो -कर -मे -ने -तो -ही -या -हो -था -तक -आप -ये -थे -दो -वे -थी -जा -ना -उस -एस -पे -उन -सो -भी -और -घर -तब -जब -अत -व +पर +इन +वह +यिह +वुह +जिन्हें +जिन्हों +तिन्हें +तिन्हों +किन्हों +किन्हें +इत्यादि +द्वारा +इन्हें +इन्हों +उन्हों +बिलकुल +निहायत +ऱ्वासा +इन्हीं +उन्हीं +उन्हें +इसमें +जितना +दुसरा +कितना +दबारा +साबुत +वग़ैरह +दूसरे +कौनसा +लेकिन +होता +करने +किया +लिये +अपने +नहीं +दिया +इसका +करना +वाले +सकते +इसके +सबसे +होने +करते +बहुत +वर्ग +करें +होती +अपनी +उनके +कहते +होते +करता +उनकी +इसकी +सकता +रखें +अपना +उसके +जिसे +तिसे +किसे +किसी +काफ़ी +पहले +नीचे +बाला +यहाँ +जैसा +जैसे +मानो +अंदर +भीतर +पूरा +सारा +होना +उनको +वहाँ +वहीं +जहाँ +जीधर +उनका +इनका +के +हैं +गया +बनी +एवं +हुआ +साथ +बाद +लिए +कुछ +कहा +यदि +हुई +इसे +हुए +अभी +सभी +कुल +रहा +रहे +इसी +उसे +जिस +जिन +तिस +तिन +कौन +किस +कोई +ऐसे +तरह +किर +साभ +संग +यही +बही +उसी +फिर +मगर +का +एक +यह +से +को +इस +कि +जो +कर +मे +ने +तो +ही +या +हो +था +तक +आप +ये +थे +दो +वे +थी +जा +ना +उस +एस +पे +उन +सो +भी +और +घर +तब +जब +अत +व न \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hr.txt b/yake/core/StopwordsList/stopwords_hr.txt similarity index 83% rename from yake/StopwordsList/stopwords_hr.txt rename to yake/core/StopwordsList/stopwords_hr.txt index d049a460..26e4fd91 100644 --- a/yake/StopwordsList/stopwords_hr.txt +++ b/yake/core/StopwordsList/stopwords_hr.txt @@ -1,179 +1,179 @@ -a -ako -ali -bi -bih -bila -bili -bilo -bio -bismo -biste -biti -bumo -da -do -duž -ga -hoće -hoćemo -hoćete -hoćeš -hoću -i -iako -ih -ili -iz -ja -je -jedna -jedne -jedno -jer -jesam -jesi -jesmo -jest -jeste -jesu -jim -joj -još -ju -kada -kako -kao -koja -koje -koji -kojima -koju -kroz -li -me -mene -meni -mi -mimo -moj -moja -moje -mu -na -nad -nakon -nam -nama -nas -naš -naša -naše -našeg -ne -nego -neka -neki -nekog -neku -nema -netko -neće -nećemo -nećete -nećeš -neću -nešto -ni -nije -nikoga -nikoje -nikoju -nisam -nisi -nismo -niste -nisu -njega -njegov -njegova -njegovo -njemu -njezin -njezina -njezino -njih -njihov -njihova -njihovo -njim -njima -njoj -nju -no -o -od -odmah -on -ona -oni -ono -ova -pa -pak -po -pod -pored -prije -s -sa -sam -samo -se -sebe -sebi -si -smo -ste -su -sve -svi -svog -svoj -svoja -svoje -svom -ta -tada -taj -tako -te -tebe -tebi -ti -to -toj -tome -tu -tvoj -tvoja -tvoje -u -uz -vam -vama -vas -vaš -vaša -vaše -već -vi -vrlo -za -zar -će -ćemo -ćete -ćeš -ću +a +ako +ali +bi +bih +bila +bili +bilo +bio +bismo +biste +biti +bumo +da +do +duž +ga +hoće +hoćemo +hoćete +hoćeš +hoću +i +iako +ih +ili +iz +ja +je +jedna +jedne +jedno +jer +jesam +jesi +jesmo +jest +jeste +jesu +jim +joj +još +ju +kada +kako +kao +koja +koje +koji +kojima +koju +kroz +li +me +mene +meni +mi +mimo +moj +moja +moje +mu +na +nad +nakon +nam +nama +nas +naš +naša +naše +našeg +ne +nego +neka +neki +nekog +neku +nema +netko +neće +nećemo +nećete +nećeš +neću +nešto +ni +nije +nikoga +nikoje +nikoju +nisam +nisi +nismo +niste +nisu +njega +njegov +njegova +njegovo +njemu +njezin +njezina +njezino +njih +njihov +njihova +njihovo +njim +njima +njoj +nju +no +o +od +odmah +on +ona +oni +ono +ova +pa +pak +po +pod +pored +prije +s +sa +sam +samo +se +sebe +sebi +si +smo +ste +su +sve +svi +svog +svoj +svoja +svoje +svom +ta +tada +taj +tako +te +tebe +tebi +ti +to +toj +tome +tu +tvoj +tvoja +tvoje +u +uz +vam +vama +vas +vaš +vaša +vaše +već +vi +vrlo +za +zar +će +ćemo +ćete +ćeš +ću što \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hu.txt b/yake/core/StopwordsList/stopwords_hu.txt similarity index 90% rename from yake/StopwordsList/stopwords_hu.txt rename to yake/core/StopwordsList/stopwords_hu.txt index dbc6942f..6d911268 100644 --- a/yake/StopwordsList/stopwords_hu.txt +++ b/yake/core/StopwordsList/stopwords_hu.txt @@ -1,737 +1,737 @@ -a -abba -abban -abból -addig -ahhoz -ahol -akár -aki -akik -akkor -alá -alád -alájuk -alám -alánk -alapján -alátok -alatt -alatta -alattad -alattam -alattatok -alattuk -alattunk -alól -alóla -alólad -alólam -alólatok -alóluk -alólunk -által -általában -ám -amely -amelybol -amelyek -amelyekben -amelyeket -amelyet -amelyik -amelynek -ami -amíg -amikor -amit -amott -annak -annál -arra -arról -át -attól -az -azért -aznap -azok -azokat -azokba -azokban -azokból -azokért -azokhoz -azokig -azokká -azokkal -azoknak -azoknál -azokon -azokra -azokról -azoktól -azon -azonban -azonnal -azt -aztán -azzá -azzal -bal -balra -ban -bár -bárcsak -bármilyen -be -belé -beléd -beléjük -belém -belénk -belétek -belÅ‘le -belÅ‘led -belÅ‘lem -belÅ‘letek -belÅ‘lük -belÅ‘lünk -belül -ben -benne -benned -bennem -bennetek -bennük -bennünk -búcsú -csak -csakhogy -csupán -de -dehogy -ebbe -ebben -ebbÅ‘l -eddig -egész -egészen -egy -egyéb -egyebek -egyebet -egyedül -egyelÅ‘re -egyet -egyik -egymás -egyre -egyszerre -együtt -ehhez -el -elé -eléd -elég -eleinte -eléjük -elém -elénk -elétek -éljen -ellen -ellenére -ellenes -elleni -elmondta -elÅ‘bb -elÅ‘l -elÅ‘le -elÅ‘led -elÅ‘lem -elÅ‘letek -elÅ‘lük -elÅ‘lünk -elÅ‘ször -elÅ‘tt -elÅ‘tte -elÅ‘tted -elÅ‘ttem -elÅ‘ttetek -elÅ‘ttük -elÅ‘ttünk -elÅ‘zÅ‘ -elsÅ‘ -elsÅ‘k -elsÅ‘sorban -elsÅ‘t -én -engem -ennek -ennél -ennyi -enyém -erre -errÅ‘l -érte -érted -értem -értetek -értük -értünk -és -esetben -ettÅ‘l -év -évben -éve -évek -éves -évi -évvel -ez -ezek -ezekbe -ezekben -ezekbÅ‘l -ezeken -ezekért -ezeket -ezekhez -ezekig -ezekké -ezekkel -ezeknek -ezeknél -ezekre -ezekrÅ‘l -ezektÅ‘l -ezen -ezentúl -ezer -ezért -ezret -ezt -ezután -ezzé -ezzel -fel -fél -fele -felé -felek -felet -felett -fent -fenti -fölé -gyakran -ha -halló -hamar -hanem -hány -hányszor -harmadik -harmadikat -hármat -harminc -három -hat -hát -hátha -hatodik -hatodikat -hatot -hátulsó -hatvan -helyett -hét -hetedik -hetediket -hetet -hetven -hiába -hirtelen -hiszen -hogy -hol -holnap -holnapot -honnan -hova -hozzá -hozzád -hozzájuk -hozzám -hozzánk -hozzátok -hurrá -húsz -huszadik -idén -ide-оda -igazán -igen -így -illetve -ilyen -immár -inkább -is -ismét -itt -jelenleg -jó -jobban -jobbra -jól -jólesik -jóval -jövÅ‘re -kell -kellene -kellett -kelljen -képest -kérem -kérlek -késÅ‘ -késÅ‘bb -késÅ‘n -kész -két -kétszer -ketten -kettÅ‘ -kettÅ‘t -kevés -ki -kiben -kibÅ‘l -kicsit -kicsoda -kié -kiért -kihez -kik -kikbe -kikben -kikbÅ‘l -kiken -kikért -kiket -kikhez -kikké -kikkel -kiknek -kiknél -kikre -kikrÅ‘l -kiktÅ‘l -kilenc -kilencedik -kilencediket -kilencet -kilencven -kin -kinek -kinél -kire -kirÅ‘l -kit -kitÅ‘l -kivé -kivel -korábban -körül -köszönhetÅ‘en -köszönöm -közben -közé -közel -közepén -közepesen -között -közül -külön -különben -különbözÅ‘ -különbözÅ‘bb -különbözÅ‘ek -lassan -le -legalább -legyen -lehet -lehetetlen -lehetÅ‘leg -lehetÅ‘ség -lenne -lennék -lennének -lesz -leszek -lesznek -leszünk -lett -lettek -lettem -lettünk -lévÅ‘ -ma -maga -magad -magam -magát -magatokat -magukat -magunkat -mai -majd -majdnem -manapság -már -más -másik -másikat -másnap -második -másodszor -mások -másokat -mást -meg -még -megcsinál -megcsinálnak -megint -mégis -megvan -mellé -melléd -melléjük -mellém -mellénk -mellétek -mellett -mellette -melletted -mellettem -mellettetek -mellettük -mellettünk -mellÅ‘l -mellÅ‘le -mellÅ‘led -mellÅ‘lem -mellÅ‘letek -mellÅ‘lük -mellÅ‘lünk -melyik -mennyi -mert -mi -miatt -miatta -miattad -miattam -miattatok -miattuk -miattunk -mibe -miben -mibÅ‘l -miért -míg -mihez -mik -mikbe -mikben -mikbÅ‘l -miken -mikért -miket -mikhez -mikké -mikkel -miknek -miknél -mikor -mikre -mikrÅ‘l -miktÅ‘l -milyen -min -mind -mindegyik -mindegyiket -minden -mindenesetre -mindenki -mindent -mindenütt -mindig -mindketten -minek -minél -minket -mint -mire -mirÅ‘l -mit -mitÅ‘l -mivé -mivel -mögé -mögéd -mögéjük -mögém -mögénk -mögétek -mögött -mögötte -mögötted -mögöttem -mögöttetek -mögöttük -mögöttünk -mögül -mögüle -mögüled -mögülem -mögületek -mögülük -mögülünk -mondta -most -mostanáig -múltkor -múlva -na -nagyon -nála -nálad -nálam -nálatok -náluk -nálunk -naponta -napot -ne -négy -negyedik -negyediket -négyet -negyven -néha -néhány -neked -nekem -neki -nekik -nektek -nekünk -nélkül -nem -nemcsak -nemrég -nincs -nyolc -nyolcadik -nyolcadikat -nyolcat -nyolcvan -Å‘ -Å‘k -Å‘ket -olyan -ön -önbe -önben -önbÅ‘l -önért -önhöz -onnan -önnek -önnel -önnél -önök -önökbe -önökben -önökbÅ‘l -önökért -önöket -önökhöz -önökkel -önöknek -önöknél -önökön -önökre -önökrÅ‘l -önöktÅ‘l -önön -önre -önrÅ‘l -önt -öntÅ‘l -öt -Å‘t -óta -ötödik -ötödiket -ötöt -ott -ötven -pár -pedig -például -persze -rá -rád -rajta -rajtad -rajtam -rajtatok -rajtuk -rajtunk -rájuk -rám -ránk -rátok -régen -régóta -rendben -részére -rögtön -róla -rólad -rólam -rólatok -róluk -rólunk -rosszul -se -sem -semmi -semmilyen -semmiség -senki -soha -sok -sokáig -sokan -sokszor -során -sÅ‘t -stb. -számára -száz -századik -százat -szemben -szépen -szerbusz -szerint -szerinte -szerinted -szerintem -szerintetek -szerintük -szerintünk -szervusz -szinte -szíves -szívesen -szíveskedjék -talán -tavaly -távol -te -téged -tegnap -tegnapelÅ‘tt -tehát -tele -tényleg -tessék -ti -tied -titeket -tíz -tizedik -tizediket -tizenegy -tizenegyedik -tizenhárom -tizenhat -tizenhét -tizenkét -tizenkettedik -tizenkettÅ‘ -tizenkilenc -tizennégy -tizennyolc -tizenöt -tizet -több -többi -többször -tÅ‘le -tÅ‘led -tÅ‘lem -tÅ‘letek -tÅ‘lük -tÅ‘lünk -tovább -további -túl -úgy -ugyanakkor -ugyanez -ugyanis -ugye -úgyis -úgynevezett -újra -úr -urak -uram -urat -után -utoljára -utolsó -vagy -vagyis -vagyok -vagytok -vagyunk -vajon -valahol -valaki -valakit -valamelyik -valami -valamint -van -vannak -végén -végre -végül -vele -veled -velem -veletek -velük -velünk -viszlát -viszont -viszontlátásra -volna -volnának -volnék -volt -voltak -voltam +a +abba +abban +abból +addig +ahhoz +ahol +akár +aki +akik +akkor +alá +alád +alájuk +alám +alánk +alapján +alátok +alatt +alatta +alattad +alattam +alattatok +alattuk +alattunk +alól +alóla +alólad +alólam +alólatok +alóluk +alólunk +által +általában +ám +amely +amelybol +amelyek +amelyekben +amelyeket +amelyet +amelyik +amelynek +ami +amíg +amikor +amit +amott +annak +annál +arra +arról +át +attól +az +azért +aznap +azok +azokat +azokba +azokban +azokból +azokért +azokhoz +azokig +azokká +azokkal +azoknak +azoknál +azokon +azokra +azokról +azoktól +azon +azonban +azonnal +azt +aztán +azzá +azzal +bal +balra +ban +bár +bárcsak +bármilyen +be +belé +beléd +beléjük +belém +belénk +belétek +belÅ‘le +belÅ‘led +belÅ‘lem +belÅ‘letek +belÅ‘lük +belÅ‘lünk +belül +ben +benne +benned +bennem +bennetek +bennük +bennünk +búcsú +csak +csakhogy +csupán +de +dehogy +ebbe +ebben +ebbÅ‘l +eddig +egész +egészen +egy +egyéb +egyebek +egyebet +egyedül +egyelÅ‘re +egyet +egyik +egymás +egyre +egyszerre +együtt +ehhez +el +elé +eléd +elég +eleinte +eléjük +elém +elénk +elétek +éljen +ellen +ellenére +ellenes +elleni +elmondta +elÅ‘bb +elÅ‘l +elÅ‘le +elÅ‘led +elÅ‘lem +elÅ‘letek +elÅ‘lük +elÅ‘lünk +elÅ‘ször +elÅ‘tt +elÅ‘tte +elÅ‘tted +elÅ‘ttem +elÅ‘ttetek +elÅ‘ttük +elÅ‘ttünk +elÅ‘zÅ‘ +elsÅ‘ +elsÅ‘k +elsÅ‘sorban +elsÅ‘t +én +engem +ennek +ennél +ennyi +enyém +erre +errÅ‘l +érte +érted +értem +értetek +értük +értünk +és +esetben +ettÅ‘l +év +évben +éve +évek +éves +évi +évvel +ez +ezek +ezekbe +ezekben +ezekbÅ‘l +ezeken +ezekért +ezeket +ezekhez +ezekig +ezekké +ezekkel +ezeknek +ezeknél +ezekre +ezekrÅ‘l +ezektÅ‘l +ezen +ezentúl +ezer +ezért +ezret +ezt +ezután +ezzé +ezzel +fel +fél +fele +felé +felek +felet +felett +fent +fenti +fölé +gyakran +ha +halló +hamar +hanem +hány +hányszor +harmadik +harmadikat +hármat +harminc +három +hat +hát +hátha +hatodik +hatodikat +hatot +hátulsó +hatvan +helyett +hét +hetedik +hetediket +hetet +hetven +hiába +hirtelen +hiszen +hogy +hol +holnap +holnapot +honnan +hova +hozzá +hozzád +hozzájuk +hozzám +hozzánk +hozzátok +hurrá +húsz +huszadik +idén +ide-оda +igazán +igen +így +illetve +ilyen +immár +inkább +is +ismét +itt +jelenleg +jó +jobban +jobbra +jól +jólesik +jóval +jövÅ‘re +kell +kellene +kellett +kelljen +képest +kérem +kérlek +késÅ‘ +késÅ‘bb +késÅ‘n +kész +két +kétszer +ketten +kettÅ‘ +kettÅ‘t +kevés +ki +kiben +kibÅ‘l +kicsit +kicsoda +kié +kiért +kihez +kik +kikbe +kikben +kikbÅ‘l +kiken +kikért +kiket +kikhez +kikké +kikkel +kiknek +kiknél +kikre +kikrÅ‘l +kiktÅ‘l +kilenc +kilencedik +kilencediket +kilencet +kilencven +kin +kinek +kinél +kire +kirÅ‘l +kit +kitÅ‘l +kivé +kivel +korábban +körül +köszönhetÅ‘en +köszönöm +közben +közé +közel +közepén +közepesen +között +közül +külön +különben +különbözÅ‘ +különbözÅ‘bb +különbözÅ‘ek +lassan +le +legalább +legyen +lehet +lehetetlen +lehetÅ‘leg +lehetÅ‘ség +lenne +lennék +lennének +lesz +leszek +lesznek +leszünk +lett +lettek +lettem +lettünk +lévÅ‘ +ma +maga +magad +magam +magát +magatokat +magukat +magunkat +mai +majd +majdnem +manapság +már +más +másik +másikat +másnap +második +másodszor +mások +másokat +mást +meg +még +megcsinál +megcsinálnak +megint +mégis +megvan +mellé +melléd +melléjük +mellém +mellénk +mellétek +mellett +mellette +melletted +mellettem +mellettetek +mellettük +mellettünk +mellÅ‘l +mellÅ‘le +mellÅ‘led +mellÅ‘lem +mellÅ‘letek +mellÅ‘lük +mellÅ‘lünk +melyik +mennyi +mert +mi +miatt +miatta +miattad +miattam +miattatok +miattuk +miattunk +mibe +miben +mibÅ‘l +miért +míg +mihez +mik +mikbe +mikben +mikbÅ‘l +miken +mikért +miket +mikhez +mikké +mikkel +miknek +miknél +mikor +mikre +mikrÅ‘l +miktÅ‘l +milyen +min +mind +mindegyik +mindegyiket +minden +mindenesetre +mindenki +mindent +mindenütt +mindig +mindketten +minek +minél +minket +mint +mire +mirÅ‘l +mit +mitÅ‘l +mivé +mivel +mögé +mögéd +mögéjük +mögém +mögénk +mögétek +mögött +mögötte +mögötted +mögöttem +mögöttetek +mögöttük +mögöttünk +mögül +mögüle +mögüled +mögülem +mögületek +mögülük +mögülünk +mondta +most +mostanáig +múltkor +múlva +na +nagyon +nála +nálad +nálam +nálatok +náluk +nálunk +naponta +napot +ne +négy +negyedik +negyediket +négyet +negyven +néha +néhány +neked +nekem +neki +nekik +nektek +nekünk +nélkül +nem +nemcsak +nemrég +nincs +nyolc +nyolcadik +nyolcadikat +nyolcat +nyolcvan +Å‘ +Å‘k +Å‘ket +olyan +ön +önbe +önben +önbÅ‘l +önért +önhöz +onnan +önnek +önnel +önnél +önök +önökbe +önökben +önökbÅ‘l +önökért +önöket +önökhöz +önökkel +önöknek +önöknél +önökön +önökre +önökrÅ‘l +önöktÅ‘l +önön +önre +önrÅ‘l +önt +öntÅ‘l +öt +Å‘t +óta +ötödik +ötödiket +ötöt +ott +ötven +pár +pedig +például +persze +rá +rád +rajta +rajtad +rajtam +rajtatok +rajtuk +rajtunk +rájuk +rám +ránk +rátok +régen +régóta +rendben +részére +rögtön +róla +rólad +rólam +rólatok +róluk +rólunk +rosszul +se +sem +semmi +semmilyen +semmiség +senki +soha +sok +sokáig +sokan +sokszor +során +sÅ‘t +stb. +számára +száz +századik +százat +szemben +szépen +szerbusz +szerint +szerinte +szerinted +szerintem +szerintetek +szerintük +szerintünk +szervusz +szinte +szíves +szívesen +szíveskedjék +talán +tavaly +távol +te +téged +tegnap +tegnapelÅ‘tt +tehát +tele +tényleg +tessék +ti +tied +titeket +tíz +tizedik +tizediket +tizenegy +tizenegyedik +tizenhárom +tizenhat +tizenhét +tizenkét +tizenkettedik +tizenkettÅ‘ +tizenkilenc +tizennégy +tizennyolc +tizenöt +tizet +több +többi +többször +tÅ‘le +tÅ‘led +tÅ‘lem +tÅ‘letek +tÅ‘lük +tÅ‘lünk +tovább +további +túl +úgy +ugyanakkor +ugyanez +ugyanis +ugye +úgyis +úgynevezett +újra +úr +urak +uram +urat +után +utoljára +utolsó +vagy +vagyis +vagyok +vagytok +vagyunk +vajon +valahol +valaki +valakit +valamelyik +valami +valamint +van +vannak +végén +végre +végül +vele +veled +velem +veletek +velük +velünk +viszlát +viszont +viszontlátásra +volna +volnának +volnék +volt +voltak +voltam voltunk \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hy.txt b/yake/core/StopwordsList/stopwords_hy.txt similarity index 87% rename from yake/StopwordsList/stopwords_hy.txt rename to yake/core/StopwordsList/stopwords_hy.txt index 10a5b8f7..327af43d 100644 --- a/yake/StopwordsList/stopwords_hy.txt +++ b/yake/core/StopwordsList/stopwords_hy.txt @@ -1,45 +1,45 @@ -այդ -այլ -այն -այս -դու -դուք -եմ -են -ենք -ես -եք -է -էի -էին -էինք -էիր -էիք -էր -ըստ -թ -ի -ին -իսկ -իր -կամ -համար -հետ -հետո -մենք -մեջ -մի -ն -նա -նաև -նրա -նրանք -որ -որը -որոնք -որպես -ու -ում -պիտի -վրա +այդ +այլ +այն +այս +դու +դուք +եմ +են +ենք +ես +եք +է +էի +էին +էինք +էիր +էիք +էր +ըստ +թ +ի +ին +իսկ +իր +կամ +համար +հետ +հետո +մենք +մեջ +մի +ն +նա +նաև +նրա +նրանք +որ +որը +որոնք +որպես +ու +ում +պիտի +վրա և \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_id.txt b/yake/core/StopwordsList/stopwords_id.txt similarity index 88% rename from yake/StopwordsList/stopwords_id.txt rename to yake/core/StopwordsList/stopwords_id.txt index fbf611fb..7f876e57 100644 --- a/yake/StopwordsList/stopwords_id.txt +++ b/yake/core/StopwordsList/stopwords_id.txt @@ -1,359 +1,359 @@ -# from appendix D of: A Study of Stemming Effects on Information -# Retrieval in Bahasa Indonesia -ada -adanya -adalah -adapun -agak -agaknya -agar -akan -akankah -akhirnya -aku -akulah -amat -amatlah -anda -andalah -antar -diantaranya -antara -antaranya -diantara -apa -apaan -mengapa -apabila -apakah -apalagi -apatah -atau -ataukah -ataupun -bagai -bagaikan -sebagai -sebagainya -bagaimana -bagaimanapun -sebagaimana -bagaimanakah -bagi -bahkan -bahwa -bahwasanya -sebaliknya -banyak -sebanyak -beberapa -seberapa -begini -beginian -beginikah -beginilah -sebegini -begitu -begitukah -begitulah -begitupun -sebegitu -belum -belumlah -sebelum -sebelumnya -sebenarnya -berapa -berapakah -berapalah -berapapun -betulkah -sebetulnya -biasa -biasanya -bila -bilakah -bisa -bisakah -sebisanya -boleh -bolehkah -bolehlah -buat -bukan -bukankah -bukanlah -bukannya -cuma -percuma -dahulu -dalam -dan -dapat -dari -daripada -dekat -demi -demikian -demikianlah -sedemikian -dengan -depan -di -dia -dialah -dini -diri -dirinya -terdiri -dong -dulu -enggak -enggaknya -entah -entahlah -terhadap -terhadapnya -hal -hampir -hanya -hanyalah -harus -haruslah -harusnya -seharusnya -hendak -hendaklah -hendaknya -hingga -sehingga -ia -ialah -ibarat -ingin -inginkah -inginkan -ini -inikah -inilah -itu -itukah -itulah -jangan -jangankan -janganlah -jika -jikalau -juga -justru -kala -kalau -kalaulah -kalaupun -kalian -kami -kamilah -kamu -kamulah -kan -kapan -kapankah -kapanpun -dikarenakan -karena -karenanya -ke -kecil -kemudian -kenapa -kepada -kepadanya -ketika -seketika -khususnya -kini -kinilah -kiranya -sekiranya -kita -kitalah -kok -lagi -lagian -selagi -lah -lain -lainnya -melainkan -selaku -lalu -melalui -terlalu -lama -lamanya -selama -selama -selamanya -lebih -terlebih -bermacam -macam -semacam -maka -makanya -makin -malah -malahan -mampu -mampukah -mana -manakala -manalagi -masih -masihkah -semasih -masing -mau -maupun -semaunya -memang -mereka -merekalah -meski -meskipun -semula -mungkin -mungkinkah -nah -namun -nanti -nantinya -nyaris -oleh -olehnya -seorang -seseorang -pada -padanya -padahal -paling -sepanjang -pantas -sepantasnya -sepantasnyalah -para -pasti -pastilah -per -pernah -pula -pun -merupakan -rupanya -serupa -saat -saatnya -sesaat -saja -sajalah -saling -bersama -sama -sesama -sambil -sampai -sana -sangat -sangatlah -saya -sayalah -se -sebab -sebabnya -sebuah -tersebut -tersebutlah -sedang -sedangkan -sedikit -sedikitnya -segala -segalanya -segera -sesegera -sejak -sejenak -sekali -sekalian -sekalipun -sesekali -sekaligus -sekarang -sekarang -sekitar -sekitarnya -sela -selain -selalu -seluruh -seluruhnya -semakin -sementara -sempat -semua -semuanya -sendiri -sendirinya -seolah -seperti -sepertinya -sering -seringnya -serta -siapa -siapakah -siapapun -disini -disinilah -sini -sinilah -sesuatu -sesuatunya -suatu -sesudah -sesudahnya -sudah -sudahkah -sudahlah -supaya -tadi -tadinya -tak -tanpa -setelah -telah -tentang -tentu -tentulah -tentunya -tertentu -seterusnya -tapi -tetapi -setiap -tiap -setidaknya -tidak -tidakkah -tidaklah -toh -waduh -wah -wahai -sewaktu -walau -walaupun -wong -yaitu -yakni +# from appendix D of: A Study of Stemming Effects on Information +# Retrieval in Bahasa Indonesia +ada +adanya +adalah +adapun +agak +agaknya +agar +akan +akankah +akhirnya +aku +akulah +amat +amatlah +anda +andalah +antar +diantaranya +antara +antaranya +diantara +apa +apaan +mengapa +apabila +apakah +apalagi +apatah +atau +ataukah +ataupun +bagai +bagaikan +sebagai +sebagainya +bagaimana +bagaimanapun +sebagaimana +bagaimanakah +bagi +bahkan +bahwa +bahwasanya +sebaliknya +banyak +sebanyak +beberapa +seberapa +begini +beginian +beginikah +beginilah +sebegini +begitu +begitukah +begitulah +begitupun +sebegitu +belum +belumlah +sebelum +sebelumnya +sebenarnya +berapa +berapakah +berapalah +berapapun +betulkah +sebetulnya +biasa +biasanya +bila +bilakah +bisa +bisakah +sebisanya +boleh +bolehkah +bolehlah +buat +bukan +bukankah +bukanlah +bukannya +cuma +percuma +dahulu +dalam +dan +dapat +dari +daripada +dekat +demi +demikian +demikianlah +sedemikian +dengan +depan +di +dia +dialah +dini +diri +dirinya +terdiri +dong +dulu +enggak +enggaknya +entah +entahlah +terhadap +terhadapnya +hal +hampir +hanya +hanyalah +harus +haruslah +harusnya +seharusnya +hendak +hendaklah +hendaknya +hingga +sehingga +ia +ialah +ibarat +ingin +inginkah +inginkan +ini +inikah +inilah +itu +itukah +itulah +jangan +jangankan +janganlah +jika +jikalau +juga +justru +kala +kalau +kalaulah +kalaupun +kalian +kami +kamilah +kamu +kamulah +kan +kapan +kapankah +kapanpun +dikarenakan +karena +karenanya +ke +kecil +kemudian +kenapa +kepada +kepadanya +ketika +seketika +khususnya +kini +kinilah +kiranya +sekiranya +kita +kitalah +kok +lagi +lagian +selagi +lah +lain +lainnya +melainkan +selaku +lalu +melalui +terlalu +lama +lamanya +selama +selama +selamanya +lebih +terlebih +bermacam +macam +semacam +maka +makanya +makin +malah +malahan +mampu +mampukah +mana +manakala +manalagi +masih +masihkah +semasih +masing +mau +maupun +semaunya +memang +mereka +merekalah +meski +meskipun +semula +mungkin +mungkinkah +nah +namun +nanti +nantinya +nyaris +oleh +olehnya +seorang +seseorang +pada +padanya +padahal +paling +sepanjang +pantas +sepantasnya +sepantasnyalah +para +pasti +pastilah +per +pernah +pula +pun +merupakan +rupanya +serupa +saat +saatnya +sesaat +saja +sajalah +saling +bersama +sama +sesama +sambil +sampai +sana +sangat +sangatlah +saya +sayalah +se +sebab +sebabnya +sebuah +tersebut +tersebutlah +sedang +sedangkan +sedikit +sedikitnya +segala +segalanya +segera +sesegera +sejak +sejenak +sekali +sekalian +sekalipun +sesekali +sekaligus +sekarang +sekarang +sekitar +sekitarnya +sela +selain +selalu +seluruh +seluruhnya +semakin +sementara +sempat +semua +semuanya +sendiri +sendirinya +seolah +seperti +sepertinya +sering +seringnya +serta +siapa +siapakah +siapapun +disini +disinilah +sini +sinilah +sesuatu +sesuatunya +suatu +sesudah +sesudahnya +sudah +sudahkah +sudahlah +supaya +tadi +tadinya +tak +tanpa +setelah +telah +tentang +tentu +tentulah +tentunya +tertentu +seterusnya +tapi +tetapi +setiap +tiap +setidaknya +tidak +tidakkah +tidaklah +toh +waduh +wah +wahai +sewaktu +walau +walaupun +wong +yaitu +yakni yang \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_it.txt b/yake/core/StopwordsList/stopwords_it.txt similarity index 85% rename from yake/StopwordsList/stopwords_it.txt rename to yake/core/StopwordsList/stopwords_it.txt index 4e0a50d3..9dc97512 100644 --- a/yake/StopwordsList/stopwords_it.txt +++ b/yake/core/StopwordsList/stopwords_it.txt @@ -1,398 +1,398 @@ -a -abbastanza -accidenti -ad -adesso -affinche -agli -ahime -ahimè -ai -al -alcuna -alcuni -alcuno -all -alla -alle -allo -altri -altrimenti -altro -altrui -anche -ancora -anni -anno -ansa -assai -attesa -avanti -avendo -avente -aver -avere -avete -aveva -avuta -avute -avuti -avuto -basta -bene -benissimo -berlusconi -brava -bravo -c -casa -caso -cento -certa -certe -certi -certo -che -chi -chicchessia -chiunque -ci -ciascuna -ciascuno -cima -cio -ciò -cioe -cioè -circa -citta -città -codesta -codesti -codesto -cogli -coi -col -colei -coll -coloro -colui -come -con -concernente -consiglio -contro -cortesia -cos -cosa -cosi -così -cui -d -da -dagli -dai -dal -dall -dalla -dalle -dallo -davanti -degli -dei -del -dell -della -delle -dello -dentro -detto -deve -di -dice -dietro -dire -dirimpetto -dopo -dove -dovra -dovrà -due -dunque -durante -e -è -ecco -ed -egli -ella -eppure -era -erano -esse -essendo -esser -essere -essi -ex -fa -fare -fatto -favore -fin -finalmente -finche -fine -fino -forse -fra -fuori -gia -già -giacche -giorni -giorno -gli -gliela -gliele -glieli -glielo -gliene -governo -grande -grazie -gruppo -ha -hai -hanno -ho -i -ieri -il -improvviso -in -infatti -insieme -intanto -intorno -invece -io -l -la -là -lavoro -le -lei -li -lo -lontano -loro -lui -lungo -ma -macche -magari -mai -male -malgrado -malissimo -me -medesimo -mediante -meglio -meno -mentre -mesi -mezzo -mi -mia -mie -miei -mila -miliardi -milioni -mio -moltissimo -molto -mondo -nazionale -ne -negli -nei -nel -nell -nella -nelle -nello -nemmeno -neppure -nessuna -nessuno -niente -no -noi -non -nondimeno -nostra -nostre -nostri -nostro -nulla -nuovo -o -od -oggi -ogni -ognuna -ognuno -oltre -oppure -ora -ore -osi -ossia -paese -parecchi -parecchie -parecchio -parte -partendo -peccato -peggio -per -perche -perchè -percio -perciò -perfino -pero -però -persone -piedi -pieno -piglia -piu -più -po -pochissimo -poco -poi -poiche -press -prima -primo -proprio -puo -può -pure -purtroppo -qualche -qualcuna -qualcuno -quale -quali -qualunque -quando -quanta -quante -quanti -quanto -quantunque -quasi -quattro -quel -quella -quelli -quello -quest -questa -queste -questi -questo -qui -quindi -riecco -salvo -sara -sarà -sarebbe -scopo -scorso -se -secondo -seguente -sei -sempre -senza -si -sia -siamo -siete -solito -solo -sono -sopra -sotto -sta -staranno -stata -state -stati -stato -stesso -su -sua -successivo -sue -sugli -sui -sul -sull -sulla -sulle -sullo -suo -suoi -tale -talvolta -tanto -te -tempo -ti -torino -tra -tranne -tre -troppo -tu -tua -tue -tuo -tuoi -tutta -tuttavia -tutte -tutti -tutto -uguali -un -una -uno -uomo -va -vale -varia -varie -vario -verso -vi -via -vicino -visto -vita -voi -volta -vostra -vostre -vostri +a +abbastanza +accidenti +ad +adesso +affinche +agli +ahime +ahimè +ai +al +alcuna +alcuni +alcuno +all +alla +alle +allo +altri +altrimenti +altro +altrui +anche +ancora +anni +anno +ansa +assai +attesa +avanti +avendo +avente +aver +avere +avete +aveva +avuta +avute +avuti +avuto +basta +bene +benissimo +berlusconi +brava +bravo +c +casa +caso +cento +certa +certe +certi +certo +che +chi +chicchessia +chiunque +ci +ciascuna +ciascuno +cima +cio +ciò +cioe +cioè +circa +citta +città +codesta +codesti +codesto +cogli +coi +col +colei +coll +coloro +colui +come +con +concernente +consiglio +contro +cortesia +cos +cosa +cosi +così +cui +d +da +dagli +dai +dal +dall +dalla +dalle +dallo +davanti +degli +dei +del +dell +della +delle +dello +dentro +detto +deve +di +dice +dietro +dire +dirimpetto +dopo +dove +dovra +dovrà +due +dunque +durante +e +è +ecco +ed +egli +ella +eppure +era +erano +esse +essendo +esser +essere +essi +ex +fa +fare +fatto +favore +fin +finalmente +finche +fine +fino +forse +fra +fuori +gia +già +giacche +giorni +giorno +gli +gliela +gliele +glieli +glielo +gliene +governo +grande +grazie +gruppo +ha +hai +hanno +ho +i +ieri +il +improvviso +in +infatti +insieme +intanto +intorno +invece +io +l +la +là +lavoro +le +lei +li +lo +lontano +loro +lui +lungo +ma +macche +magari +mai +male +malgrado +malissimo +me +medesimo +mediante +meglio +meno +mentre +mesi +mezzo +mi +mia +mie +miei +mila +miliardi +milioni +mio +moltissimo +molto +mondo +nazionale +ne +negli +nei +nel +nell +nella +nelle +nello +nemmeno +neppure +nessuna +nessuno +niente +no +noi +non +nondimeno +nostra +nostre +nostri +nostro +nulla +nuovo +o +od +oggi +ogni +ognuna +ognuno +oltre +oppure +ora +ore +osi +ossia +paese +parecchi +parecchie +parecchio +parte +partendo +peccato +peggio +per +perche +perchè +percio +perciò +perfino +pero +però +persone +piedi +pieno +piglia +piu +più +po +pochissimo +poco +poi +poiche +press +prima +primo +proprio +puo +può +pure +purtroppo +qualche +qualcuna +qualcuno +quale +quali +qualunque +quando +quanta +quante +quanti +quanto +quantunque +quasi +quattro +quel +quella +quelli +quello +quest +questa +queste +questi +questo +qui +quindi +riecco +salvo +sara +sarà +sarebbe +scopo +scorso +se +secondo +seguente +sei +sempre +senza +si +sia +siamo +siete +solito +solo +sono +sopra +sotto +sta +staranno +stata +state +stati +stato +stesso +su +sua +successivo +sue +sugli +sui +sul +sull +sulla +sulle +sullo +suo +suoi +tale +talvolta +tanto +te +tempo +ti +torino +tra +tranne +tre +troppo +tu +tua +tue +tuo +tuoi +tutta +tuttavia +tutte +tutti +tutto +uguali +un +una +uno +uomo +va +vale +varia +varie +vario +verso +vi +via +vicino +visto +vita +voi +volta +vostra +vostre +vostri vostro \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_ja.txt b/yake/core/StopwordsList/stopwords_ja.txt similarity index 87% rename from yake/StopwordsList/stopwords_ja.txt rename to yake/core/StopwordsList/stopwords_ja.txt index c57e8f3a..1f6462e1 100644 --- a/yake/StopwordsList/stopwords_ja.txt +++ b/yake/core/StopwordsList/stopwords_ja.txt @@ -1,44 +1,44 @@ -これ -それ -あれ -この -その -あの -ここ -そこ -あそこ -こちら -どこ -だれ -なに -なん -何 -私 -貴方 -貴方方 -我々 -私達 -あの人 -あのかた -彼女 -彼 -です -あります -おります -います -は -が -の -に -を -で -え -から -まで -より -も -どの -と -し -それで +これ +それ +あれ +この +その +あの +ここ +そこ +あそこ +こちら +どこ +だれ +なに +なん +何 +私 +貴方 +貴方方 +我々 +私達 +あの人 +あのかた +彼女 +彼 +です +あります +おります +います +は +が +の +に +を +で +え +から +まで +より +も +どの +と +し +それで しかし \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_lt.txt b/yake/core/StopwordsList/stopwords_lt.txt similarity index 85% rename from yake/StopwordsList/stopwords_lt.txt rename to yake/core/StopwordsList/stopwords_lt.txt index d282c514..0e98aad7 100644 --- a/yake/StopwordsList/stopwords_lt.txt +++ b/yake/core/StopwordsList/stopwords_lt.txt @@ -1,65 +1,65 @@ -apie -po -pire -visi -taip pat -yra -nra -klausimas -klausti -tarp -bet -gali -negali -kiekvienas -nei -net -kiekvienas -iekoti -nuo -gauti -gauna -turjo -turi -jo -jos -ia -jam -kaip - -a -tik -maiau -daryti -daug -maai -daugiau -daugiausia -turi -alia -niekada -niekas -dabar -danai -kart -vienas -tik -kitas -ms -per -praau -tikrai -pasak -sak -sakyti -maas -kada -negu -ai -tas -iki -kas -kam -taip -ne +apie +po +pire +visi +taip pat +yra +nra +klausimas +klausti +tarp +bet +gali +negali +kiekvienas +nei +net +kiekvienas +iekoti +nuo +gauti +gauna +turjo +turi +jo +jos +ia +jam +kaip + +a +tik +maiau +daryti +daug +maai +daugiau +daugiausia +turi +alia +niekada +niekas +dabar +danai +kart +vienas +tik +kitas +ms +per +praau +tikrai +pasak +sak +sakyti +maas +kada +negu +ai +tas +iki +kas +kam +taip +ne tavo \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_lv.txt b/yake/core/StopwordsList/stopwords_lv.txt similarity index 86% rename from yake/StopwordsList/stopwords_lv.txt rename to yake/core/StopwordsList/stopwords_lv.txt index a569f7c6..d536b5c7 100644 --- a/yake/StopwordsList/stopwords_lv.txt +++ b/yake/core/StopwordsList/stopwords_lv.txt @@ -1,167 +1,167 @@ -aiz -ap -ar -apakš -ārpus -augšpus -bez -caur -dēļ -gar -iekš -iz -kopš -labad -lejpus -līdz -no -otrpus -pa -par -pār -pēc -pie -pirms -pret -priekš -starp -šaipus -uz -viņpus -virs -virspus -zem -apakšpus -# Conjunctions -un -bet -jo -ja -ka -lai -tomēr -tikko -turpretī -arī -kaut -gan -tādēļ -tā -ne -tikvien -vien -kā -ir -te -vai -kamēr -# Particles -ar -diezin -droši -diemžēl -nebūt -ik -it -taču -nu -pat -tiklab -iekšpus -nedz -tik -nevis -turpretim -jeb -iekam -iekām -iekāms -kolīdz -līdzko -tiklīdz -jebšu -tālab -tāpēc -nekā -itin -jā -jau -jel -nē -nezin -tad -tikai -vis -tak -iekams -vien -# modal verbs -būt -biju -biji -bija -bijām -bijāt -esmu -esi -esam -esat -būšu -būsi -būs -būsim -būsiet -tikt -tiku -tiki -tika -tikām -tikāt -tieku -tiec -tiek -tiekam -tiekat -tikšu -tiks -tiksim -tiksiet -tapt -tapi -tapāt -topat -tapšu -tapsi -taps -tapsim -tapsiet -kļūt -kļuvu -kļuvi -kļuva -kļuvām -kļuvāt -kļūstu -kļūsti -kļūst -kļūstam -kļūstat -kļūšu -kļūsi -kļūs -kļūsim -kļūsiet -# verbs -varēt -varēju -varējām -varēšu -varēsim -var -varēji -varējāt -varēsi -varēsiet -varat -varēja +aiz +ap +ar +apakš +ārpus +augšpus +bez +caur +dēļ +gar +iekš +iz +kopš +labad +lejpus +līdz +no +otrpus +pa +par +pār +pēc +pie +pirms +pret +priekš +starp +šaipus +uz +viņpus +virs +virspus +zem +apakšpus +# Conjunctions +un +bet +jo +ja +ka +lai +tomēr +tikko +turpretī +arī +kaut +gan +tādēļ +tā +ne +tikvien +vien +kā +ir +te +vai +kamēr +# Particles +ar +diezin +droši +diemžēl +nebūt +ik +it +taču +nu +pat +tiklab +iekšpus +nedz +tik +nevis +turpretim +jeb +iekam +iekām +iekāms +kolīdz +līdzko +tiklīdz +jebšu +tālab +tāpēc +nekā +itin +jā +jau +jel +nē +nezin +tad +tikai +vis +tak +iekams +vien +# modal verbs +būt +biju +biji +bija +bijām +bijāt +esmu +esi +esam +esat +būšu +būsi +būs +būsim +būsiet +tikt +tiku +tiki +tika +tikām +tikāt +tieku +tiec +tiek +tiekam +tiekat +tikšu +tiks +tiksim +tiksiet +tapt +tapi +tapāt +topat +tapšu +tapsi +taps +tapsim +tapsiet +kļūt +kļuvu +kļuvi +kļuva +kļuvām +kļuvāt +kļūstu +kļūsti +kļūst +kļūstam +kļūstat +kļūšu +kļūsi +kļūs +kļūsim +kļūsiet +# verbs +varēt +varēju +varējām +varēšu +varēsim +var +varēji +varējāt +varēsi +varēsiet +varat +varēja varēs \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_nl.txt b/yake/core/StopwordsList/stopwords_nl.txt similarity index 85% rename from yake/StopwordsList/stopwords_nl.txt rename to yake/core/StopwordsList/stopwords_nl.txt index b7236598..bc8c9019 100644 --- a/yake/StopwordsList/stopwords_nl.txt +++ b/yake/core/StopwordsList/stopwords_nl.txt @@ -1,501 +1,501 @@ -a -aan -aangaande -aangezien -achter -achterna -aen -af -afd -afgelopen -agter -al -aldaar -aldus -alhoewel -alias -alle -allebei -alleen -alleenlyk -allen -alles -als -alsnog -altijd -altoos -altyd -ander -andere -anderen -anders -anderszins -anm -b -behalve -behoudens -beide -beiden -ben -beneden -bent -bepaald -beter -betere -betreffende -bij -bijna -bijvoorbeeld -bijv -binnen -binnenin -bizonder -bizondere -bl -blz -boven -bovenal -bovendien -bovengenoemd -bovenstaand -bovenvermeld -buiten -by -daar -daarheen -daarin -daarna -daarnet -daarom -daarop -daarvanlangs -daer -dan -dat -de -deeze -den -der -ders -derzelver -des -deszelfs -deszelvs -deze -dezelfde -dezelve -dezelven -dezen -dezer -dezulke -die -dien -dikwijls -dikwyls -dit -dl -doch -doen -doet -dog -door -doorgaand -doorgaans -dr -dra -ds -dus -echter -ed -een -eene -eenen -eener -eenig -eenige -eens -eer -eerdat -eerder -eerlang -eerst -eerste -eersten -effe -egter -eigen -eigene -elk -elkanderen -elkanderens -elke -en -enig -enige -enigerlei -enigszins -enkel -enkele -enz -er -erdoor -et -etc -even -eveneens -evenwel -ff -gauw -ge -gebragt -gedurende -geen -geene -geenen -gegeven -gehad -geheel -geheele -gekund -geleden -gelijk -gelyk -gemoeten -gemogen -geven -geweest -gewoon -gewoonweg -geworden -gezegt -gij -gt -gy -haar -had -hadden -hadt -haer -haere -haeren -haerer -hans -hare -heb -hebben -hebt -heeft -hele -hem -hen -het -hier -hierbeneden -hierboven -hierin -hij -hoe -hoewel -hun -hunne -hunner -hy -ibid -idd -ieder -iemand -iet -iets -ii -iig -ik -ikke -ikzelf -in -indien -inmiddels -inz -inzake -is -ja -je -jezelf -jij -jijzelf -jou -jouw -jouwe -juist -jullie -kan -klaar -kon -konden -krachtens -kunnen -kunt -laetste -lang -later -liet -liever -like -m -maar -maeken -maer -mag -martin -me -mede -meer -meesten -men -menigwerf -met -mezelf -mij -mijn -mijnent -mijner -mijzelf -min -minder -misschien -mocht -mochten -moest -moesten -moet -moeten -mogelijk -mogelyk -mogen -my -myn -myne -mynen -myner -myzelf -na -naar -nabij -nadat -naer -net -niet -niets -nimmer -nit -no -noch -nog -nogal -nooit -nr -nu -o -of -ofschoon -om -omdat -omhoog -omlaag -omstreeks -omtrent -omver -onder -ondertussen -ongeveer -ons -onszelf -onze -onzen -onzer -ooit -ook -oorspr -op -opdat -opnieuw -opzij -opzy -over -overeind -overigens -p -pas -pp -precies -pres -prof -publ -reeds -rond -rondom -rug -s -sedert -sinds -sindsdien -sl -slechts -sommige -spoedig -st -steeds -sy -t -tamelijk -tamelyk -te -tegen -tegens -ten -tenzij -ter -terwijl -terwyl -thans -tijdens -toch -toe -toen -toenmaals -toenmalig -tot -totdat -tusschen -tussen -tydens -u -uit -uitg -uitgezonderd -uw -uwe -uwen -uwer -vaak -vaakwat -vakgr -van -vanaf -vandaan -vanuit -vanwege -veel -veeleer -veelen -verder -verre -vert -vervolgens -vgl -vol -volgens -voor -vooraf -vooral -vooralsnog -voorbij -voorby -voordat -voordezen -voordien -voorheen -voorop -voort -voortgez -voorts -voortz -vooruit -vrij -vroeg -vry -waar -waarom -wanneer -want -waren -was -wat -we -weer -weg -wege -wegens -weinig -weinige -wel -weldra -welk -welke -welken -welker -werd -werden -werdt -wezen -wie -wiens -wier -wierd -wierden -wij -wijzelf -wil -wilde -worden -wordt -wy -wyze -wyzelf -zal -ze -zeer -zei -zeker -zekere -zelf -zelfde -zelfs -zelve -zelven -zelvs -zich -zichzelf -zichzelve -zichzelven -zie -zig -zij -zijn -zijnde -zijne -zijner -zo -zo'n -zoals -zodra -zommige -zommigen -zonder -zoo -zou -zoude -zouden -zoveel -zowat -zulk -zulke -zulks -zullen -zult -zy -zyn -zynde -zyne -zynen -zyner +a +aan +aangaande +aangezien +achter +achterna +aen +af +afd +afgelopen +agter +al +aldaar +aldus +alhoewel +alias +alle +allebei +alleen +alleenlyk +allen +alles +als +alsnog +altijd +altoos +altyd +ander +andere +anderen +anders +anderszins +anm +b +behalve +behoudens +beide +beiden +ben +beneden +bent +bepaald +beter +betere +betreffende +bij +bijna +bijvoorbeeld +bijv +binnen +binnenin +bizonder +bizondere +bl +blz +boven +bovenal +bovendien +bovengenoemd +bovenstaand +bovenvermeld +buiten +by +daar +daarheen +daarin +daarna +daarnet +daarom +daarop +daarvanlangs +daer +dan +dat +de +deeze +den +der +ders +derzelver +des +deszelfs +deszelvs +deze +dezelfde +dezelve +dezelven +dezen +dezer +dezulke +die +dien +dikwijls +dikwyls +dit +dl +doch +doen +doet +dog +door +doorgaand +doorgaans +dr +dra +ds +dus +echter +ed +een +eene +eenen +eener +eenig +eenige +eens +eer +eerdat +eerder +eerlang +eerst +eerste +eersten +effe +egter +eigen +eigene +elk +elkanderen +elkanderens +elke +en +enig +enige +enigerlei +enigszins +enkel +enkele +enz +er +erdoor +et +etc +even +eveneens +evenwel +ff +gauw +ge +gebragt +gedurende +geen +geene +geenen +gegeven +gehad +geheel +geheele +gekund +geleden +gelijk +gelyk +gemoeten +gemogen +geven +geweest +gewoon +gewoonweg +geworden +gezegt +gij +gt +gy +haar +had +hadden +hadt +haer +haere +haeren +haerer +hans +hare +heb +hebben +hebt +heeft +hele +hem +hen +het +hier +hierbeneden +hierboven +hierin +hij +hoe +hoewel +hun +hunne +hunner +hy +ibid +idd +ieder +iemand +iet +iets +ii +iig +ik +ikke +ikzelf +in +indien +inmiddels +inz +inzake +is +ja +je +jezelf +jij +jijzelf +jou +jouw +jouwe +juist +jullie +kan +klaar +kon +konden +krachtens +kunnen +kunt +laetste +lang +later +liet +liever +like +m +maar +maeken +maer +mag +martin +me +mede +meer +meesten +men +menigwerf +met +mezelf +mij +mijn +mijnent +mijner +mijzelf +min +minder +misschien +mocht +mochten +moest +moesten +moet +moeten +mogelijk +mogelyk +mogen +my +myn +myne +mynen +myner +myzelf +na +naar +nabij +nadat +naer +net +niet +niets +nimmer +nit +no +noch +nog +nogal +nooit +nr +nu +o +of +ofschoon +om +omdat +omhoog +omlaag +omstreeks +omtrent +omver +onder +ondertussen +ongeveer +ons +onszelf +onze +onzen +onzer +ooit +ook +oorspr +op +opdat +opnieuw +opzij +opzy +over +overeind +overigens +p +pas +pp +precies +pres +prof +publ +reeds +rond +rondom +rug +s +sedert +sinds +sindsdien +sl +slechts +sommige +spoedig +st +steeds +sy +t +tamelijk +tamelyk +te +tegen +tegens +ten +tenzij +ter +terwijl +terwyl +thans +tijdens +toch +toe +toen +toenmaals +toenmalig +tot +totdat +tusschen +tussen +tydens +u +uit +uitg +uitgezonderd +uw +uwe +uwen +uwer +vaak +vaakwat +vakgr +van +vanaf +vandaan +vanuit +vanwege +veel +veeleer +veelen +verder +verre +vert +vervolgens +vgl +vol +volgens +voor +vooraf +vooral +vooralsnog +voorbij +voorby +voordat +voordezen +voordien +voorheen +voorop +voort +voortgez +voorts +voortz +vooruit +vrij +vroeg +vry +waar +waarom +wanneer +want +waren +was +wat +we +weer +weg +wege +wegens +weinig +weinige +wel +weldra +welk +welke +welken +welker +werd +werden +werdt +wezen +wie +wiens +wier +wierd +wierden +wij +wijzelf +wil +wilde +worden +wordt +wy +wyze +wyzelf +zal +ze +zeer +zei +zeker +zekere +zelf +zelfde +zelfs +zelve +zelven +zelvs +zich +zichzelf +zichzelve +zichzelven +zie +zig +zij +zijn +zijnde +zijne +zijner +zo +zo'n +zoals +zodra +zommige +zommigen +zonder +zoo +zou +zoude +zouden +zoveel +zowat +zulk +zulke +zulks +zullen +zult +zy +zyn +zynde +zyne +zynen +zyner zyns \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_no.txt b/yake/core/StopwordsList/stopwords_no.txt similarity index 83% rename from yake/StopwordsList/stopwords_no.txt rename to yake/core/StopwordsList/stopwords_no.txt index e7a444f1..ce8492b5 100644 --- a/yake/StopwordsList/stopwords_no.txt +++ b/yake/core/StopwordsList/stopwords_no.txt @@ -1,119 +1,119 @@ -alle -andre -arbeid -av -begge -bort -bra -bruke -da -denne -der -deres -det -din -disse -du -eller -en -ene -eneste -enhver -enn -er -et -folk -for -fordi -forsÛke -fra -fÅ -fÛr -fÛrst -gjorde -gjÛre -god -gÅ -ha -hadde -han -hans -hennes -her -hva -hvem -hver -hvilken -hvis -hvor -hvordan -hvorfor -i -ikke -inn -innen -kan -kunne -lage -lang -lik -like -makt -mange -med -meg -meget -men -mens -mer -mest -min -mye -mÅ -mÅte -navn -nei -ny -nÅ -nÅr -og -ogsÅ -om -opp -oss -over -part -punkt -pÅ -rett -riktig -samme -sant -si -siden -sist -skulle -slik -slutt -som -start -stille -sÅ -tid -til -tilbake -tilstand -under -ut -uten -var -ved -verdi -vi -vil -ville -vite -vÅr -vÖre -vÖrt +alle +andre +arbeid +av +begge +bort +bra +bruke +da +denne +der +deres +det +din +disse +du +eller +en +ene +eneste +enhver +enn +er +et +folk +for +fordi +forsÛke +fra +fÅ +fÛr +fÛrst +gjorde +gjÛre +god +gÅ +ha +hadde +han +hans +hennes +her +hva +hvem +hver +hvilken +hvis +hvor +hvordan +hvorfor +i +ikke +inn +innen +kan +kunne +lage +lang +lik +like +makt +mange +med +meg +meget +men +mens +mer +mest +min +mye +mÅ +mÅte +navn +nei +ny +nÅ +nÅr +og +ogsÅ +om +opp +oss +over +part +punkt +pÅ +rett +riktig +samme +sant +si +siden +sist +skulle +slik +slutt +som +start +stille +sÅ +tid +til +tilbake +tilstand +under +ut +uten +var +ved +verdi +vi +vil +ville +vite +vÅr +vÖre +vÖrt Å \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_noLang.txt b/yake/core/StopwordsList/stopwords_noLang.txt similarity index 100% rename from yake/StopwordsList/stopwords_noLang.txt rename to yake/core/StopwordsList/stopwords_noLang.txt diff --git a/yake/StopwordsList/stopwords_pl.txt b/yake/core/StopwordsList/stopwords_pl.txt similarity index 83% rename from yake/StopwordsList/stopwords_pl.txt rename to yake/core/StopwordsList/stopwords_pl.txt index d8853f44..df26b1c6 100644 --- a/yake/StopwordsList/stopwords_pl.txt +++ b/yake/core/StopwordsList/stopwords_pl.txt @@ -1,138 +1,138 @@ -ach -aj -albo -bardzo -bez -bo -być -ci -cię -ciebie -co -czy -daleko -dla -dlaczego -dlatego -do -dobrze -dokąd -dość -dużo -dwa -dwaj -dwie -dwoje -dziś -dzisiaj -gdyby -gdzie -go -ich -ile -im -inny -ja -ją -jak -jakby -jaki -je -jeden -jedna -jedno -jego -jej -jemu -jeśli -jest -jestem -jeżeli -już -każdy -kiedy -kierunku -kto -ku -lub -ma -mają -mam -mi -mną -mnie -moi -mój -moja -moje -może -mu -my -na -nam -nami -nas -nasi -nasz -nasza -nasze -natychmiast -nią -nic -nich -nie -niego -niej -niemu -nigdy -nim -nimi -niż -obok -od -około -on -ona -one -oni -ono -owszem -po -pod -ponieważ -przed -przedtem -są -sam -sama -się -skąd -tak -taki -tam -ten -to -tobą -tobie -tu -tutaj -twoi -twój -twoja -twoje -ty -wam -wami -was -wasi -wasz -wasza -wasze -we -więc -wszystko -wtedy -wy -żaden -zawsze -że +ach +aj +albo +bardzo +bez +bo +być +ci +cię +ciebie +co +czy +daleko +dla +dlaczego +dlatego +do +dobrze +dokąd +dość +dużo +dwa +dwaj +dwie +dwoje +dziś +dzisiaj +gdyby +gdzie +go +ich +ile +im +inny +ja +ją +jak +jakby +jaki +je +jeden +jedna +jedno +jego +jej +jemu +jeśli +jest +jestem +jeżeli +już +każdy +kiedy +kierunku +kto +ku +lub +ma +mają +mam +mi +mną +mnie +moi +mój +moja +moje +może +mu +my +na +nam +nami +nas +nasi +nasz +nasza +nasze +natychmiast +nią +nic +nich +nie +niego +niej +niemu +nigdy +nim +nimi +niż +obok +od +około +on +ona +one +oni +ono +owszem +po +pod +ponieważ +przed +przedtem +są +sam +sama +się +skąd +tak +taki +tam +ten +to +tobą +tobie +tu +tutaj +twoi +twój +twoja +twoje +ty +wam +wami +was +wasi +wasz +wasza +wasze +we +więc +wszystko +wtedy +wy +żaden +zawsze +że diff --git a/yake/StopwordsList/stopwords_pt.txt b/yake/core/StopwordsList/stopwords_pt.txt similarity index 85% rename from yake/StopwordsList/stopwords_pt.txt rename to yake/core/StopwordsList/stopwords_pt.txt index f7df788a..0f2f460f 100644 --- a/yake/StopwordsList/stopwords_pt.txt +++ b/yake/core/StopwordsList/stopwords_pt.txt @@ -1,396 +1,396 @@ -dr -dra -sr -sra -a -à -adeus -agora -aí -ainda -além -algo -algumas -alguns -ali -ano -anos -antes -ao -aos -apenas -apoio -após -aquela -aquelas -aquele -aqueles -aqui -aquilo -área -as -às -assim -até -atrás -através -baixo -bastante -bem -boa -boas -bom -bons -breve -cá -cada -catorze -cedo -cento -certamente -certeza -cima -cinco -coisa -com -como -conselho -contra -custa -da -dá -dão -daquela -daquelas -daquele -daqueles -dar -das -de -debaixo -demais -dentro -depois -desde -dessa -dessas -desse -desses -desta -destas -deste -destes -deve -deverá -dez -dezanove -dezasseis -dezassete -dezoito -dia -diante -diz -dizem -dizer -do -dois -dos -doze -duas -dúvida -e -é -ela -elas -ele -eles -em -embora -entre -era -és -essa -essas -esse -esses -esta -está -estão -estar -estas -estás -estava -este -estes -esteve -estive -estivemos -estiveram -estiveste -estivestes -estou -eu -exemplo -faço -falta -favor -faz -fazeis -fazem -fazemos -fazer -fazes -fez -fim -final -foi -fomos -for -foram -forma -foste -fostes -fui -geral -grande -grandes -grupo -há -hoje -hora -horas -isso -isto -já -lá -lado -local -logo -longe -lugar -maior -maioria -mais -mal -mas -máximo -me -meio -menor -menos -mês -meses -meu -meus -mil -minha -minhas -momento -muito -muitos -na -nada -não -naquela -naquelas -naquele -naqueles -nas -nem -nenhuma -nessa -nessas -nesse -nesses -nesta -nestas -neste -nestes -nível -no -noite -nome -nos -nós -nossa -nossas -nosso -nossos -nova -novas -nove -novo -novos -num -numa -número -nunca -o -obra -obrigada -obrigado -oitava -oitavo -oito -onde -ontem -onze -os -ou -outra -outras -outro -outros -para -parece -parte -partir -paucas -pela -pelas -pelo -pelos -perto -pode -pôde -podem -poder -põe -põem -ponto -pontos -por -porque -porquê -posição -possível -possivelmente -posso -pouca -pouco -poucos -primeira -primeiras -primeiro -primeiros -própria -próprias -próprio -próprios -próxima -próximas -próximo -próximos -puderam -quáis -qual -quando -quanto -quarta -quarto -quatro -que -quê -quem -quer -quereis -querem -queremas -queres -quero -questão -quinta -quinto -quinze -relação -sabe -sabem -são -se -segunda -segundo -sei -seis -sem -sempre -ser -seria -sete -sétima -sétimo -seu -seus -sexta -sexto -sim -sistema -sob -sobre -sois -somos -sou -sua -suas -tal -talvez -também -tanta -tantas -tanto -tão -tarde -te -tem -têm -temos -tendes -tenho -tens -ter -terceira -terceiro -teu -teus -teve -tive -tivemos -tiveram -tiveste -tivestes -toda -todas -todo -todos -trabalho -três -treze -tu -tua -tuas -tudo -um -uma -umas -uns -vai -vais -vão -vários -vem -vêm -vens -ver -vez -vezes -viagem -vindo -vinte -você -vocês -vos -vós -vossa -vossas -vosso -vossos +dr +dra +sr +sra +a +à +adeus +agora +aí +ainda +além +algo +algumas +alguns +ali +ano +anos +antes +ao +aos +apenas +apoio +após +aquela +aquelas +aquele +aqueles +aqui +aquilo +área +as +às +assim +até +atrás +através +baixo +bastante +bem +boa +boas +bom +bons +breve +cá +cada +catorze +cedo +cento +certamente +certeza +cima +cinco +coisa +com +como +conselho +contra +custa +da +dá +dão +daquela +daquelas +daquele +daqueles +dar +das +de +debaixo +demais +dentro +depois +desde +dessa +dessas +desse +desses +desta +destas +deste +destes +deve +deverá +dez +dezanove +dezasseis +dezassete +dezoito +dia +diante +diz +dizem +dizer +do +dois +dos +doze +duas +dúvida +e +é +ela +elas +ele +eles +em +embora +entre +era +és +essa +essas +esse +esses +esta +está +estão +estar +estas +estás +estava +este +estes +esteve +estive +estivemos +estiveram +estiveste +estivestes +estou +eu +exemplo +faço +falta +favor +faz +fazeis +fazem +fazemos +fazer +fazes +fez +fim +final +foi +fomos +for +foram +forma +foste +fostes +fui +geral +grande +grandes +grupo +há +hoje +hora +horas +isso +isto +já +lá +lado +local +logo +longe +lugar +maior +maioria +mais +mal +mas +máximo +me +meio +menor +menos +mês +meses +meu +meus +mil +minha +minhas +momento +muito +muitos +na +nada +não +naquela +naquelas +naquele +naqueles +nas +nem +nenhuma +nessa +nessas +nesse +nesses +nesta +nestas +neste +nestes +nível +no +noite +nome +nos +nós +nossa +nossas +nosso +nossos +nova +novas +nove +novo +novos +num +numa +número +nunca +o +obra +obrigada +obrigado +oitava +oitavo +oito +onde +ontem +onze +os +ou +outra +outras +outro +outros +para +parece +parte +partir +paucas +pela +pelas +pelo +pelos +perto +pode +pôde +podem +poder +põe +põem +ponto +pontos +por +porque +porquê +posição +possível +possivelmente +posso +pouca +pouco +poucos +primeira +primeiras +primeiro +primeiros +própria +próprias +próprio +próprios +próxima +próximas +próximo +próximos +puderam +quáis +qual +quando +quanto +quarta +quarto +quatro +que +quê +quem +quer +quereis +querem +queremas +queres +quero +questão +quinta +quinto +quinze +relação +sabe +sabem +são +se +segunda +segundo +sei +seis +sem +sempre +ser +seria +sete +sétima +sétimo +seu +seus +sexta +sexto +sim +sistema +sob +sobre +sois +somos +sou +sua +suas +tal +talvez +também +tanta +tantas +tanto +tão +tarde +te +tem +têm +temos +tendes +tenho +tens +ter +terceira +terceiro +teu +teus +teve +tive +tivemos +tiveram +tiveste +tivestes +toda +todas +todo +todos +trabalho +três +treze +tu +tua +tuas +tudo +um +uma +umas +uns +vai +vais +vão +vários +vem +vêm +vens +ver +vez +vezes +viagem +vindo +vinte +você +vocês +vos +vós +vossa +vossas +vosso +vossos zero \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_ro.txt b/yake/core/StopwordsList/stopwords_ro.txt similarity index 85% rename from yake/StopwordsList/stopwords_ro.txt rename to yake/core/StopwordsList/stopwords_ro.txt index b84f7618..66d488f5 100644 --- a/yake/StopwordsList/stopwords_ro.txt +++ b/yake/core/StopwordsList/stopwords_ro.txt @@ -1,281 +1,281 @@ -acea -aceasta -această -aceea -acei -aceia -acel -acela -acele -acelea -acest -acesta -aceste -acestea -aceşti -aceştia -acolo -acord -acum -ai -aia -aibă -aici -al -ăla -ale -alea -ălea -altceva -altcineva -am -ar -are -aş -aşadar -asemenea -asta -ăsta -astăzi -astea -ăstea -ăştia -asupra -aţi -au -avea -avem -aveţi -azi -bine -bucur -bună -ca -că -căci -când -care -cărei -căror -cărui -cât -câte -câţi -către -câtva -caut -ce -cel -ceva -chiar -cinci -cînd -cine -cineva -cît -cîte -cîţi -cîtva -contra -cu -cum -cumva -curând -curînd -da -dă -dacă -dar -dată -datorită -dau -de -deci -deja -deoarece -departe -deşi -din -dinaintea -dintr- -dintre -doi -doilea -două -drept -după -ea -ei -el -ele -eram -este -eşti -eu -face -fără -fata -fi -fie -fiecare -fii -fim -fiţi -fiu -frumos -graţie -halbă -iar -ieri -îi -îl -îmi -împotriva -în -înainte -înaintea -încât -încît -încotro -între -întrucât -întrucît -îţi -la -lângă -le -li -lîngă -lor -lui -mă -mai -mâine -mea -mei -mele -mereu -meu -mi -mie -mîine -mine -mult -multă -mulţi -mulţumesc -ne -nevoie -nicăieri -nici -nimeni -nimeri -nimic -nişte -noastră -noastre -noi -noroc -noştri -nostru -nouă -nu -opt -ori -oricând -oricare -oricât -orice -oricînd -oricine -oricît -oricum -oriunde -până -patra -patru -patrulea -pe -pentru -peste -pic -pînă -poate -pot -prea -prima -primul -prin -puţin -puţina -puţină -rog -sa -să -săi -sale -şapte -şase -sau -său -se -şi -sînt -sîntem -sînteţi -spate -spre -ştiu -sub -sunt -suntem -sunteţi -sută -ta -tăi -tale -tău -te -ţi -ţie -timp -tine -toată -toate -tot -toţi -totuşi -trei -treia -treilea -tu -un -una -unde -undeva -unei -uneia -unele -uneori -unii -unor -unora -unu -unui -unuia -unul -vă -vi -voastră -voastre -voi -voştri -vostru -vouă -vreme -vreo -vreun -zece -zero -zi +acea +aceasta +această +aceea +acei +aceia +acel +acela +acele +acelea +acest +acesta +aceste +acestea +aceşti +aceştia +acolo +acord +acum +ai +aia +aibă +aici +al +ăla +ale +alea +ălea +altceva +altcineva +am +ar +are +aş +aşadar +asemenea +asta +ăsta +astăzi +astea +ăstea +ăştia +asupra +aţi +au +avea +avem +aveţi +azi +bine +bucur +bună +ca +că +căci +când +care +cărei +căror +cărui +cât +câte +câţi +către +câtva +caut +ce +cel +ceva +chiar +cinci +cînd +cine +cineva +cît +cîte +cîţi +cîtva +contra +cu +cum +cumva +curând +curînd +da +dă +dacă +dar +dată +datorită +dau +de +deci +deja +deoarece +departe +deşi +din +dinaintea +dintr- +dintre +doi +doilea +două +drept +după +ea +ei +el +ele +eram +este +eşti +eu +face +fără +fata +fi +fie +fiecare +fii +fim +fiţi +fiu +frumos +graţie +halbă +iar +ieri +îi +îl +îmi +împotriva +în +înainte +înaintea +încât +încît +încotro +între +întrucât +întrucît +îţi +la +lângă +le +li +lîngă +lor +lui +mă +mai +mâine +mea +mei +mele +mereu +meu +mi +mie +mîine +mine +mult +multă +mulţi +mulţumesc +ne +nevoie +nicăieri +nici +nimeni +nimeri +nimic +nişte +noastră +noastre +noi +noroc +noştri +nostru +nouă +nu +opt +ori +oricând +oricare +oricât +orice +oricînd +oricine +oricît +oricum +oriunde +până +patra +patru +patrulea +pe +pentru +peste +pic +pînă +poate +pot +prea +prima +primul +prin +puţin +puţina +puţină +rog +sa +să +săi +sale +şapte +şase +sau +său +se +şi +sînt +sîntem +sînteţi +spate +spre +ştiu +sub +sunt +suntem +sunteţi +sută +ta +tăi +tale +tău +te +ţi +ţie +timp +tine +toată +toate +tot +toţi +totuşi +trei +treia +treilea +tu +un +una +unde +undeva +unei +uneia +unele +uneori +unii +unor +unora +unu +unui +unuia +unul +vă +vi +voastră +voastre +voi +voştri +vostru +vouă +vreme +vreo +vreun +zece +zero +zi zice \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_ru.txt b/yake/core/StopwordsList/stopwords_ru.txt similarity index 91% rename from yake/StopwordsList/stopwords_ru.txt rename to yake/core/StopwordsList/stopwords_ru.txt index d179d8e7..a1a28eca 100644 --- a/yake/StopwordsList/stopwords_ru.txt +++ b/yake/core/StopwordsList/stopwords_ru.txt @@ -1,422 +1,422 @@ -а -е -и -ж -м -о -на -не -ни -об -но -он -мне -мои -мож -она -они -оно -мной -много -многочисленное -многочисленная -многочисленные -многочисленный -мною -мой -мог -могут -можно -может -можхо -мор -моя -моё -мочь -над -нее -оба -нам -нем -нами -ними -мимо -немного -одной -одного -менее -однажды -однако -меня -нему -меньше -ней -наверху -него -ниже -мало -надо -один -одиннадцать -одиннадцатый -назад -наиболее -недавно -миллионов -недалеко -между -низко -меля -нельзя -нибудь -непрерывно -наконец -никогда -никуда -нас -наш -нет -нею -неё -них -мира -наша -наше -наши -ничего -начала -нередко -несколько -обычно -опять -около -мы -ну -нх -от -отовсюду -особенно -нужно -очень -отсюда -в -во -вон -вниз -внизу -вокруг -вот -восемнадцать -восемнадцатый -восемь -восьмой -вверх -вам -вами -важное -важная -важные -важный -вдали -везде -ведь -вас -ваш -ваша -ваше -ваши -впрочем -весь -вдруг -вы -все -второй -всем -всеми -времени -время -всему -всего -всегда -всех -всею -всю -вся -всё -всюду -г -год -говорил -говорит -года -году -где -да -ее -за -из -ли -же -им -до -по -ими -под -иногда -довольно -именно -долго -позже -более -должно -пожалуйста -значит -иметь -больше -пока -ему -имя -пор -пора -потом -потому -после -почему -почти -посреди -ей -два -две -двенадцать -двенадцатый -двадцать -двадцатый -двух -его -дел -или -без -день -занят -занята -занято -заняты -действительно -давно -девятнадцать -девятнадцатый -девять -девятый -даже -алло -жизнь -далеко -близко -здесь -дальше -для -лет -зато -даром -первый -перед -затем -зачем -лишь -десять -десятый -ею -её -их -бы -еще -при -был -про -процентов -против -просто -бывает -бывь -если -люди -была -были -было -будем -будет -будете -будешь -прекрасно -буду -будь -будто -будут -ещё -пятнадцать -пятнадцатый -друго -другое -другой -другие -другая -других -есть -пять -быть -лучше -пятый -к -ком -конечно -кому -кого -когда -которой -которого -которая -которые -который -которых -кем -каждое -каждая -каждые -каждый -кажется -как -какой -какая -кто -кроме -куда -кругом -с -т -у -я -та -те -уж -со -то -том -снова -тому -совсем -того -тогда -тоже -собой -тобой -собою -тобою -сначала -только -уметь -тот -тою -хорошо -хотеть -хочешь -хоть -хотя -свое -свои -твой -своей -своего -своих -свою -твоя -твоё -раз -уже -сам -там -тем -чем -сама -сами -теми -само -рано -самом -самому -самой -самого -семнадцать -семнадцатый -самим -самими -самих -саму -семь -чему -раньше -сейчас -чего -сегодня -себе -тебе -сеаой -человек -разве -теперь -себя -тебя -седьмой -спасибо -слишком -так -такое -такой -такие -также -такая -сих -тех -чаще -четвертый -через -часто -шестой -шестнадцать -шестнадцатый -шесть -четыре -четырнадцать -четырнадцатый -сколько -сказал -сказала -сказать -ту -ты -три -эта -эти -что -это -чтоб -этом -этому -этой -этого -чтобы -этот -стал -туда -этим -этими -рядом -тринадцать -тринадцатый -этих -третий -тут -эту -суть -чуть -тысяч - +а +е +и +ж +м +о +на +не +ни +об +но +он +мне +мои +мож +она +они +оно +мной +много +многочисленное +многочисленная +многочисленные +многочисленный +мною +мой +мог +могут +можно +может +можхо +мор +моя +моё +мочь +над +нее +оба +нам +нем +нами +ними +мимо +немного +одной +одного +менее +однажды +однако +меня +нему +меньше +ней +наверху +него +ниже +мало +надо +один +одиннадцать +одиннадцатый +назад +наиболее +недавно +миллионов +недалеко +между +низко +меля +нельзя +нибудь +непрерывно +наконец +никогда +никуда +нас +наш +нет +нею +неё +них +мира +наша +наше +наши +ничего +начала +нередко +несколько +обычно +опять +около +мы +ну +нх +от +отовсюду +особенно +нужно +очень +отсюда +в +во +вон +вниз +внизу +вокруг +вот +восемнадцать +восемнадцатый +восемь +восьмой +вверх +вам +вами +важное +важная +важные +важный +вдали +везде +ведь +вас +ваш +ваша +ваше +ваши +впрочем +весь +вдруг +вы +все +второй +всем +всеми +времени +время +всему +всего +всегда +всех +всею +всю +вся +всё +всюду +г +год +говорил +говорит +года +году +где +да +ее +за +из +ли +же +им +до +по +ими +под +иногда +довольно +именно +долго +позже +более +должно +пожалуйста +значит +иметь +больше +пока +ему +имя +пор +пора +потом +потому +после +почему +почти +посреди +ей +два +две +двенадцать +двенадцатый +двадцать +двадцатый +двух +его +дел +или +без +день +занят +занята +занято +заняты +действительно +давно +девятнадцать +девятнадцатый +девять +девятый +даже +алло +жизнь +далеко +близко +здесь +дальше +для +лет +зато +даром +первый +перед +затем +зачем +лишь +десять +десятый +ею +её +их +бы +еще +при +был +про +процентов +против +просто +бывает +бывь +если +люди +была +были +было +будем +будет +будете +будешь +прекрасно +буду +будь +будто +будут +ещё +пятнадцать +пятнадцатый +друго +другое +другой +другие +другая +других +есть +пять +быть +лучше +пятый +к +ком +конечно +кому +кого +когда +которой +которого +которая +которые +который +которых +кем +каждое +каждая +каждые +каждый +кажется +как +какой +какая +кто +кроме +куда +кругом +с +т +у +я +та +те +уж +со +то +том +снова +тому +совсем +того +тогда +тоже +собой +тобой +собою +тобою +сначала +только +уметь +тот +тою +хорошо +хотеть +хочешь +хоть +хотя +свое +свои +твой +своей +своего +своих +свою +твоя +твоё +раз +уже +сам +там +тем +чем +сама +сами +теми +само +рано +самом +самому +самой +самого +семнадцать +семнадцатый +самим +самими +самих +саму +семь +чему +раньше +сейчас +чего +сегодня +себе +тебе +сеаой +человек +разве +теперь +себя +тебя +седьмой +спасибо +слишком +так +такое +такой +такие +также +такая +сих +тех +чаще +четвертый +через +часто +шестой +шестнадцать +шестнадцатый +шесть +четыре +четырнадцать +четырнадцатый +сколько +сказал +сказала +сказать +ту +ты +три +эта +эти +что +это +чтоб +этом +этому +этой +этого +чтобы +этот +стал +туда +этим +этими +рядом +тринадцать +тринадцатый +этих +третий +тут +эту +суть +чуть +тысяч + diff --git a/yake/StopwordsList/stopwords_sk.txt b/yake/core/StopwordsList/stopwords_sk.txt similarity index 79% rename from yake/StopwordsList/stopwords_sk.txt rename to yake/core/StopwordsList/stopwords_sk.txt index 687db576..68d7eeb7 100644 --- a/yake/StopwordsList/stopwords_sk.txt +++ b/yake/core/StopwordsList/stopwords_sk.txt @@ -1,110 +1,110 @@ -a -aby -aj -ako -ak -ale -alebo -ani -avak -ba -bez -bu -cez -do -ho -hoci -i -ich -im -ja -jeho -jej -jemu -ju -k -kam -kde -kede -ke -kto -ktor -ku -lebo -ma -mi -mne -mnou -mu -my -ma -mj -na -nad -nami -neho -nej -nemu -nich -nielen -nim -no -nm -ns -n -nm -o -od -on -ona -oni -ono -ony -po -pod -pre -pred -pri -s -sa -seba -sem -so -svoj -tak -tam -teba -tebe -tebou -tej -ten -ti -tie -to -toho -tomu -tou -tvoj -ty -t -tm -v -vami -ve -vo -vy -vm -vs -v -vak -z -za -zo -a -i -o - -om -ou -u +a +aby +aj +ako +ak +ale +alebo +ani +avak +ba +bez +bu +cez +do +ho +hoci +i +ich +im +ja +jeho +jej +jemu +ju +k +kam +kde +kede +ke +kto +ktor +ku +lebo +ma +mi +mne +mnou +mu +my +ma +mj +na +nad +nami +neho +nej +nemu +nich +nielen +nim +no +nm +ns +n +nm +o +od +on +ona +oni +ono +ony +po +pod +pre +pred +pri +s +sa +seba +sem +so +svoj +tak +tam +teba +tebe +tebou +tej +ten +ti +tie +to +toho +tomu +tou +tvoj +ty +t +tm +v +vami +ve +vo +vy +vm +vs +v +vak +z +za +zo +a +i +o + +om +ou +u e \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_sl.txt b/yake/core/StopwordsList/stopwords_sl.txt similarity index 84% rename from yake/StopwordsList/stopwords_sl.txt rename to yake/core/StopwordsList/stopwords_sl.txt index dadaf7f1..03926a08 100644 --- a/yake/StopwordsList/stopwords_sl.txt +++ b/yake/core/StopwordsList/stopwords_sl.txt @@ -1,446 +1,446 @@ -a -ali -april -avgust -b -bi -bil -bila -bile -bili -bilo -biti -blizu -bo -bodo -bojo -bolj -bom -bomo -boste -bova -boš -brez -c -cel -cela -celi -celo -d -da -daleč -dan -danes -datum -december -deset -deseta -deseti -deseto -devet -deveta -deveti -deveto -do -dober -dobra -dobri -dobro -dokler -dol -dolg -dolga -dolgi -dovolj -drug -druga -drugi -drugo -dva -dve -e -eden -en -ena -ene -eni -enkrat -eno -etc. -f -februar -g -g. -ga -ga. -gor -gospa -gospod -h -halo -i -idr. -ii -iii -in -iv -ix -iz -j -januar -jaz -je -ji -jih -jim -jo -julij -junij -jutri -k -kadarkoli -kaj -kajti -kako -kakor -kamor -kamorkoli -kar -karkoli -katerikoli -kdaj -kdo -kdorkoli -ker -ki -kje -kjer -kjerkoli -ko -koder -koderkoli -koga -komu -kot -kratek -kratka -kratke -kratki -l -lahka -lahke -lahki -lahko -le -lep -lepa -lepe -lepi -lepo -leto -m -maj -majhen -majhna -majhni -malce -malo -manj -marec -me -med -medtem -mene -mesec -mi -midva -midve -mnogo -moj -moja -moje -mora -morajo -moram -moramo -morate -moraš -morem -mu -n -na -nad -naj -najina -najino -najmanj -naju -največ -nam -narobe -nas -nato -nazaj -naš -naša -naše -ne -nedavno -nedelja -nek -neka -nekaj -nekatere -nekateri -nekatero -nekdo -neke -nekega -neki -nekje -neko -nekoga -nekoč -ni -nikamor -nikdar -nikjer -nikoli -nič -nje -njega -njegov -njegova -njegovo -njej -njemu -njen -njena -njeno -nji -njih -njihov -njihova -njihovo -njiju -njim -njo -njun -njuna -njuno -no -nocoj -november -npr. -o -ob -oba -obe -oboje -od -odprt -odprta -odprti -okoli -oktober -on -onadva -one -oni -onidve -osem -osma -osmi -osmo -oz. -p -pa -pet -peta -petek -peti -peto -po -pod -pogosto -poleg -poln -polna -polni -polno -ponavadi -ponedeljek -ponovno -potem -povsod -pozdravljen -pozdravljeni -prav -prava -prave -pravi -pravo -prazen -prazna -prazno -prbl. -precej -pred -prej -preko -pri -pribl. -približno -primer -pripravljen -pripravljena -pripravljeni -proti -prva -prvi -prvo -r -ravno -redko -res -reč -s -saj -sam -sama -same -sami -samo -se -sebe -sebi -sedaj -sedem -sedma -sedmi -sedmo -sem -september -seveda -si -sicer -skoraj -skozi -slab -smo -so -sobota -spet -sreda -srednja -srednji -sta -ste -stran -stvar -sva -t -ta -tak -taka -take -taki -tako -takoj -tam -te -tebe -tebi -tega -težak -težka -težki -težko -ti -tista -tiste -tisti -tisto -tj. -tja -to -toda -torek -tretja -tretje -tretji -tri -tu -tudi -tukaj -tvoj -tvoja -tvoje -u -v -vaju -vam -vas -vaš -vaša -vaše -ve -vedno -velik -velika -veliki -veliko -vendar -ves -več -vi -vidva -vii -viii -visok -visoka -visoke -visoki -vsa -vsaj -vsak -vsaka -vsakdo -vsake -vsaki -vsakomur -vse -vsega -vsi -vso -včasih -včeraj -x -z -za -zadaj -zadnji -zakaj -zaprta -zaprti -zaprto -zdaj -zelo -zunaj -č -če -često -četrta -četrtek -četrti -četrto -čez -čigav -š -šest -šesta -šesti -šesto -štiri -ž +a +ali +april +avgust +b +bi +bil +bila +bile +bili +bilo +biti +blizu +bo +bodo +bojo +bolj +bom +bomo +boste +bova +boš +brez +c +cel +cela +celi +celo +d +da +daleč +dan +danes +datum +december +deset +deseta +deseti +deseto +devet +deveta +deveti +deveto +do +dober +dobra +dobri +dobro +dokler +dol +dolg +dolga +dolgi +dovolj +drug +druga +drugi +drugo +dva +dve +e +eden +en +ena +ene +eni +enkrat +eno +etc. +f +februar +g +g. +ga +ga. +gor +gospa +gospod +h +halo +i +idr. +ii +iii +in +iv +ix +iz +j +januar +jaz +je +ji +jih +jim +jo +julij +junij +jutri +k +kadarkoli +kaj +kajti +kako +kakor +kamor +kamorkoli +kar +karkoli +katerikoli +kdaj +kdo +kdorkoli +ker +ki +kje +kjer +kjerkoli +ko +koder +koderkoli +koga +komu +kot +kratek +kratka +kratke +kratki +l +lahka +lahke +lahki +lahko +le +lep +lepa +lepe +lepi +lepo +leto +m +maj +majhen +majhna +majhni +malce +malo +manj +marec +me +med +medtem +mene +mesec +mi +midva +midve +mnogo +moj +moja +moje +mora +morajo +moram +moramo +morate +moraš +morem +mu +n +na +nad +naj +najina +najino +najmanj +naju +največ +nam +narobe +nas +nato +nazaj +naš +naša +naše +ne +nedavno +nedelja +nek +neka +nekaj +nekatere +nekateri +nekatero +nekdo +neke +nekega +neki +nekje +neko +nekoga +nekoč +ni +nikamor +nikdar +nikjer +nikoli +nič +nje +njega +njegov +njegova +njegovo +njej +njemu +njen +njena +njeno +nji +njih +njihov +njihova +njihovo +njiju +njim +njo +njun +njuna +njuno +no +nocoj +november +npr. +o +ob +oba +obe +oboje +od +odprt +odprta +odprti +okoli +oktober +on +onadva +one +oni +onidve +osem +osma +osmi +osmo +oz. +p +pa +pet +peta +petek +peti +peto +po +pod +pogosto +poleg +poln +polna +polni +polno +ponavadi +ponedeljek +ponovno +potem +povsod +pozdravljen +pozdravljeni +prav +prava +prave +pravi +pravo +prazen +prazna +prazno +prbl. +precej +pred +prej +preko +pri +pribl. +približno +primer +pripravljen +pripravljena +pripravljeni +proti +prva +prvi +prvo +r +ravno +redko +res +reč +s +saj +sam +sama +same +sami +samo +se +sebe +sebi +sedaj +sedem +sedma +sedmi +sedmo +sem +september +seveda +si +sicer +skoraj +skozi +slab +smo +so +sobota +spet +sreda +srednja +srednji +sta +ste +stran +stvar +sva +t +ta +tak +taka +take +taki +tako +takoj +tam +te +tebe +tebi +tega +težak +težka +težki +težko +ti +tista +tiste +tisti +tisto +tj. +tja +to +toda +torek +tretja +tretje +tretji +tri +tu +tudi +tukaj +tvoj +tvoja +tvoje +u +v +vaju +vam +vas +vaš +vaša +vaše +ve +vedno +velik +velika +veliki +veliko +vendar +ves +več +vi +vidva +vii +viii +visok +visoka +visoke +visoki +vsa +vsaj +vsak +vsaka +vsakdo +vsake +vsaki +vsakomur +vse +vsega +vsi +vso +včasih +včeraj +x +z +za +zadaj +zadnji +zakaj +zaprta +zaprti +zaprto +zdaj +zelo +zunaj +č +če +često +četrta +četrtek +četrti +četrto +čez +čigav +š +šest +šesta +šesti +šesto +štiri +ž že \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_sv.txt b/yake/core/StopwordsList/stopwords_sv.txt similarity index 86% rename from yake/StopwordsList/stopwords_sv.txt rename to yake/core/StopwordsList/stopwords_sv.txt index eb21ab80..0fb086f6 100644 --- a/yake/StopwordsList/stopwords_sv.txt +++ b/yake/core/StopwordsList/stopwords_sv.txt @@ -1,386 +1,386 @@ -aderton -adertonde -adjö -aldrig -alla -allas -allt -alltid -alltså -än -andra -andras -annan -annat -ännu -artonde -artonn -åtminstone -att -åtta -åttio -åttionde -åttonde -av -även -båda -bådas -bakom -bara -bäst -bättre -behöva -behövas -behövde -behövt -beslut -beslutat -beslutit -bland -blev -bli -blir -blivit -bort -borta -bra -då -dag -dagar -dagarna -dagen -där -därför -de -del -delen -dem -den -deras -dess -det -detta -dig -din -dina -dit -ditt -dock -du -efter -eftersom -elfte -eller -elva -en -enkel -enkelt -enkla -enligt -er -era -ert -ett -ettusen -få -fanns -får -fått -fem -femte -femtio -femtionde -femton -femtonde -fick -fin -finnas -finns -fjärde -fjorton -fjortonde -fler -flera -flesta -följande -för -före -förlåt -förra -första -fram -framför -från -fyra -fyrtio -fyrtionde -gå -gälla -gäller -gällt -går -gärna -gått -genast -genom -gick -gjorde -gjort -god -goda -godare -godast -gör -göra -gott -ha -hade -haft -han -hans -har -här -heller -hellre -helst -helt -henne -hennes -hit -hög -höger -högre -högst -hon -honom -hundra -hundraen -hundraett -hur -i -ibland -idag -igår -igen -imorgon -in -inför -inga -ingen -ingenting -inget -innan -inne -inom -inte -inuti -ja -jag -jämfört -kan -kanske -knappast -kom -komma -kommer -kommit -kr -kunde -kunna -kunnat -kvar -länge -längre -långsam -långsammare -långsammast -långsamt -längst -långt -lätt -lättare -lättast -legat -ligga -ligger -lika -likställd -likställda -lilla -lite -liten -litet -man -många -måste -med -mellan -men -mer -mera -mest -mig -min -mina -mindre -minst -mitt -mittemot -möjlig -möjligen -möjligt -möjligtvis -mot -mycket -någon -någonting -något -några -när -nästa -ned -nederst -nedersta -nedre -nej -ner -ni -nio -nionde -nittio -nittionde -nitton -nittonde -nödvändig -nödvändiga -nödvändigt -nödvändigtvis -nog -noll -nr -nu -nummer -och -också -ofta -oftast -olika -olikt -om -oss -över -övermorgon -överst -övre -på -rakt -rätt -redan -så -sade -säga -säger -sagt -samma -sämre -sämst -sedan -senare -senast -sent -sex -sextio -sextionde -sexton -sextonde -sig -sin -sina -sist -sista -siste -sitt -sjätte -sju -sjunde -sjuttio -sjuttionde -sjutton -sjuttonde -ska -skall -skulle -slutligen -små -smått -snart -som -stor -stora -större -störst -stort -tack -tidig -tidigare -tidigast -tidigt -till -tills -tillsammans -tio -tionde -tjugo -tjugoen -tjugoett -tjugonde -tjugotre -tjugotvå -tjungo -tolfte -tolv -tre -tredje -trettio -trettionde -tretton -trettonde -två -tvåhundra -under -upp -ur -ursäkt -ut -utan -utanför -ute -vad -vänster -vänstra -var -vår -vara -våra -varför -varifrån -varit -varken -värre -varsågod -vart -vårt -vem -vems -verkligen -vi -vid -vidare -viktig -viktigare -viktigast -viktigt -vilka -vilken -vilket +aderton +adertonde +adjö +aldrig +alla +allas +allt +alltid +alltså +än +andra +andras +annan +annat +ännu +artonde +artonn +åtminstone +att +åtta +åttio +åttionde +åttonde +av +även +båda +bådas +bakom +bara +bäst +bättre +behöva +behövas +behövde +behövt +beslut +beslutat +beslutit +bland +blev +bli +blir +blivit +bort +borta +bra +då +dag +dagar +dagarna +dagen +där +därför +de +del +delen +dem +den +deras +dess +det +detta +dig +din +dina +dit +ditt +dock +du +efter +eftersom +elfte +eller +elva +en +enkel +enkelt +enkla +enligt +er +era +ert +ett +ettusen +få +fanns +får +fått +fem +femte +femtio +femtionde +femton +femtonde +fick +fin +finnas +finns +fjärde +fjorton +fjortonde +fler +flera +flesta +följande +för +före +förlåt +förra +första +fram +framför +från +fyra +fyrtio +fyrtionde +gå +gälla +gäller +gällt +går +gärna +gått +genast +genom +gick +gjorde +gjort +god +goda +godare +godast +gör +göra +gott +ha +hade +haft +han +hans +har +här +heller +hellre +helst +helt +henne +hennes +hit +hög +höger +högre +högst +hon +honom +hundra +hundraen +hundraett +hur +i +ibland +idag +igår +igen +imorgon +in +inför +inga +ingen +ingenting +inget +innan +inne +inom +inte +inuti +ja +jag +jämfört +kan +kanske +knappast +kom +komma +kommer +kommit +kr +kunde +kunna +kunnat +kvar +länge +längre +långsam +långsammare +långsammast +långsamt +längst +långt +lätt +lättare +lättast +legat +ligga +ligger +lika +likställd +likställda +lilla +lite +liten +litet +man +många +måste +med +mellan +men +mer +mera +mest +mig +min +mina +mindre +minst +mitt +mittemot +möjlig +möjligen +möjligt +möjligtvis +mot +mycket +någon +någonting +något +några +när +nästa +ned +nederst +nedersta +nedre +nej +ner +ni +nio +nionde +nittio +nittionde +nitton +nittonde +nödvändig +nödvändiga +nödvändigt +nödvändigtvis +nog +noll +nr +nu +nummer +och +också +ofta +oftast +olika +olikt +om +oss +över +övermorgon +överst +övre +på +rakt +rätt +redan +så +sade +säga +säger +sagt +samma +sämre +sämst +sedan +senare +senast +sent +sex +sextio +sextionde +sexton +sextonde +sig +sin +sina +sist +sista +siste +sitt +sjätte +sju +sjunde +sjuttio +sjuttionde +sjutton +sjuttonde +ska +skall +skulle +slutligen +små +smått +snart +som +stor +stora +större +störst +stort +tack +tidig +tidigare +tidigast +tidigt +till +tills +tillsammans +tio +tionde +tjugo +tjugoen +tjugoett +tjugonde +tjugotre +tjugotvå +tjungo +tolfte +tolv +tre +tredje +trettio +trettionde +tretton +trettonde +två +tvåhundra +under +upp +ur +ursäkt +ut +utan +utanför +ute +vad +vänster +vänstra +var +vår +vara +våra +varför +varifrån +varit +varken +värre +varsågod +vart +vårt +vem +vems +verkligen +vi +vid +vidare +viktig +viktigare +viktigast +viktigt +vilka +vilken +vilket vill \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_tr.txt b/yake/core/StopwordsList/stopwords_tr.txt similarity index 87% rename from yake/StopwordsList/stopwords_tr.txt rename to yake/core/StopwordsList/stopwords_tr.txt index 3097f765..8cc78bbe 100644 --- a/yake/StopwordsList/stopwords_tr.txt +++ b/yake/core/StopwordsList/stopwords_tr.txt @@ -1,212 +1,212 @@ -# Turkish stopwords from LUCENE-559 -# merged with the list from "Information Retrieval on Turkish Texts" -# (http://www.users.muohio.edu/canf/papers/JASIST2008offPrint.pdf) -acaba -altmış -altı -ama -ancak -arada -aslında -ayrıca -bana -bazı -belki -ben -benden -beni -benim -beri -beş -bile -bin -bir -birçok -biri -birkaç -birkez -birşey -birşeyi -biz -bize -bizden -bizi -bizim -böyle -böylece -bu -buna -bunda -bundan -bunlar -bunları -bunların -bunu -bunun -burada -çok -çünkü -da -daha -dahi -de -defa -değil -diğer -diye -doksan -dokuz -dolayı -dolayısıyla -dört -edecek -eden -ederek -edilecek -ediliyor -edilmesi -ediyor -eğer -elli -en -etmesi -etti -ettiği -ettiğini -gibi -göre -halen -hangi -hatta -hem -henüz -hep -hepsi -her -herhangi -herkesin -hiç -hiçbir -için -iki -ile -ilgili -ise -işte -itibaren -itibariyle -kadar -karşın -katrilyon -kendi -kendilerine -kendini -kendisi -kendisine -kendisini -kez -ki -kim -kimden -kime -kimi -kimse -kırk -milyar -milyon -mu -mü -mı -nasıl -ne -neden -nedenle -nerde -nerede -nereye -niye -niçin -o -olan -olarak -oldu -olduğu -olduğunu -olduklarını -olmadı -olmadığı -olmak -olması -olmayan -olmaz -olsa -olsun -olup -olur -olursa -oluyor -on -ona -ondan -onlar -onlardan -onları -onların -onu -onun -otuz -oysa -öyle -pek -rağmen -sadece -sanki -sekiz -seksen -sen -senden -seni -senin -siz -sizden -sizi -sizin -şey -şeyden -şeyi -şeyler -şöyle -şu -şuna -şunda -şundan -şunları -şunu -tarafından -trilyon -tüm -üç -üzere -var -vardı -ve -veya -ya -yani -yapacak -yapılan -yapılması -yapıyor -yapmak -yaptı -yaptığı -yaptığını -yaptıkları -yedi -yerine -yetmiş -yine -yirmi -yoksa -yüz +# Turkish stopwords from LUCENE-559 +# merged with the list from "Information Retrieval on Turkish Texts" +# (http://www.users.muohio.edu/canf/papers/JASIST2008offPrint.pdf) +acaba +altmış +altı +ama +ancak +arada +aslında +ayrıca +bana +bazı +belki +ben +benden +beni +benim +beri +beş +bile +bin +bir +birçok +biri +birkaç +birkez +birşey +birşeyi +biz +bize +bizden +bizi +bizim +böyle +böylece +bu +buna +bunda +bundan +bunlar +bunları +bunların +bunu +bunun +burada +çok +çünkü +da +daha +dahi +de +defa +değil +diğer +diye +doksan +dokuz +dolayı +dolayısıyla +dört +edecek +eden +ederek +edilecek +ediliyor +edilmesi +ediyor +eğer +elli +en +etmesi +etti +ettiği +ettiğini +gibi +göre +halen +hangi +hatta +hem +henüz +hep +hepsi +her +herhangi +herkesin +hiç +hiçbir +için +iki +ile +ilgili +ise +işte +itibaren +itibariyle +kadar +karşın +katrilyon +kendi +kendilerine +kendini +kendisi +kendisine +kendisini +kez +ki +kim +kimden +kime +kimi +kimse +kırk +milyar +milyon +mu +mü +mı +nasıl +ne +neden +nedenle +nerde +nerede +nereye +niye +niçin +o +olan +olarak +oldu +olduğu +olduğunu +olduklarını +olmadı +olmadığı +olmak +olması +olmayan +olmaz +olsa +olsun +olup +olur +olursa +oluyor +on +ona +ondan +onlar +onlardan +onları +onların +onu +onun +otuz +oysa +öyle +pek +rağmen +sadece +sanki +sekiz +seksen +sen +senden +seni +senin +siz +sizden +sizi +sizin +şey +şeyden +şeyi +şeyler +şöyle +şu +şuna +şunda +şundan +şunları +şunu +tarafından +trilyon +tüm +üç +üzere +var +vardı +ve +veya +ya +yani +yapacak +yapılan +yapılması +yapıyor +yapmak +yaptı +yaptığı +yaptığını +yaptıkları +yedi +yerine +yetmiş +yine +yirmi +yoksa +yüz zaten \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_uk.txt b/yake/core/StopwordsList/stopwords_uk.txt similarity index 91% rename from yake/StopwordsList/stopwords_uk.txt rename to yake/core/StopwordsList/stopwords_uk.txt index d331dfda..e561734b 100644 --- a/yake/StopwordsList/stopwords_uk.txt +++ b/yake/core/StopwordsList/stopwords_uk.txt @@ -1,385 +1,385 @@ -a -б -в -г -е -ж -з -м -т -у -я -є -і -аж -ви -де -до -за -зі -ми -на -не -ну -нх -ні -по -та -ти -то -ту -ті -це -цю -ця -ці -чи -ще -що -як -їй -їм -їх -її -або -але -ало -без -був -вам -вас -ваш -вже -все -всю -вся -від -він -два -дві -для -ким -мож -моя -моє -мої -міг -між -мій -над -нам -нас -наш -нею -неї -них -ніж -ній -ось -при -про -під -пір -раз -рік -сам -сих -сім -так -там -теж -тим -тих -той -тою -три -тут -хоч -хто -цей -цим -цих -час -щоб -яка -які -адже -буде -буду -будь -була -були -було -бути -вами -ваша -ваше -ваші -весь -вниз -вона -вони -воно -всею -всім -всіх -втім -геть -далі -двох -день -дуже -зате -його -йому -каже -кого -коли -кому -крім -куди -лише -люди -мало -мати -мене -мені -миру -мною -може -нами -наша -наше -наші -ними -ніби -один -поки -пора -рано -року -році -сама -саме -саму -самі -свою -своє -свої -себе -собі -став -суть -така -таке -такі -твоя -твоє -твій -тебе -тими -тобі -того -тоді -тому -туди -хоча -хіба -цими -цієї -часу -чого -чому -який -яких -якої -якщо -ім'я -інша -інше -інші -буває -будеш -більш -вгору -вміти -внизу -вісім -давно -даром -добре -довго -друго -дякую -життя -зараз -знову -какая -кожен -кожна -кожне -кожні -краще -ледве -майже -менше -могти -можна -назад -немає -нижче -нього -однак -п'ять -перед -поруч -потім -проти -після -років -самим -самих -самій -свого -своєї -своїх -собою -справ -такий -також -тепер -тисяч -тобою -треба -трохи -усюди -усіма -хочеш -цього -цьому -часто -через -шість -якого -іноді -інший -інших -багато -будемо -будете -будуть -більше -всього -всьому -далеко -десять -досить -другий -дійсно -завжди -звідси -зовсім -кругом -кілька -людина -можуть -навіть -навіщо -нагорі -небудь -низько -ніколи -нікуди -нічого -обидва -одного -однієї -п'ятий -перший -просто -раніше -раптом -самими -самого -самому -сказав -скрізь -сьомий -третій -тільки -хотіти -чотири -чудово -шостий -близько -важлива -важливе -важливі -вдалині -восьмий -говорив -дев'ять -десятий -зайнята -зайнято -зайняті -занадто -значить -навколо -нарешті -нерідко -повинно -посеред -початку -пізніше -сказала -сказати -скільки -спасибі -частіше -важливий -двадцять -дев'ятий -зазвичай -зайнятий -звичайно -здається -найбільш -не можна -недалеко -особливо -потрібно -спочатку -сьогодні -численна -численне -численні -відсотків -двадцятий -звідусіль -мільйонів -нещодавно -прекрасно -четвертий -численний -будь ласка -дванадцять -одинадцять -сімнадцять -тринадцять -безперервно -дванадцятий -одинадцятий -одного разу -п'ятнадцять -сімнадцятий -тринадцятий -шістнадцять -вісімнадцять -п'ятнадцятий -чотирнадцять -шістнадцятий -вісімнадцятий -дев'ятнадцять -чотирнадцятий +a +б +в +г +е +ж +з +м +т +у +я +є +і +аж +ви +де +до +за +зі +ми +на +не +ну +нх +ні +по +та +ти +то +ту +ті +це +цю +ця +ці +чи +ще +що +як +їй +їм +їх +її +або +але +ало +без +був +вам +вас +ваш +вже +все +всю +вся +від +він +два +дві +для +ким +мож +моя +моє +мої +міг +між +мій +над +нам +нас +наш +нею +неї +них +ніж +ній +ось +при +про +під +пір +раз +рік +сам +сих +сім +так +там +теж +тим +тих +той +тою +три +тут +хоч +хто +цей +цим +цих +час +щоб +яка +які +адже +буде +буду +будь +була +були +було +бути +вами +ваша +ваше +ваші +весь +вниз +вона +вони +воно +всею +всім +всіх +втім +геть +далі +двох +день +дуже +зате +його +йому +каже +кого +коли +кому +крім +куди +лише +люди +мало +мати +мене +мені +миру +мною +може +нами +наша +наше +наші +ними +ніби +один +поки +пора +рано +року +році +сама +саме +саму +самі +свою +своє +свої +себе +собі +став +суть +така +таке +такі +твоя +твоє +твій +тебе +тими +тобі +того +тоді +тому +туди +хоча +хіба +цими +цієї +часу +чого +чому +який +яких +якої +якщо +ім'я +інша +інше +інші +буває +будеш +більш +вгору +вміти +внизу +вісім +давно +даром +добре +довго +друго +дякую +життя +зараз +знову +какая +кожен +кожна +кожне +кожні +краще +ледве +майже +менше +могти +можна +назад +немає +нижче +нього +однак +п'ять +перед +поруч +потім +проти +після +років +самим +самих +самій +свого +своєї +своїх +собою +справ +такий +також +тепер +тисяч +тобою +треба +трохи +усюди +усіма +хочеш +цього +цьому +часто +через +шість +якого +іноді +інший +інших +багато +будемо +будете +будуть +більше +всього +всьому +далеко +десять +досить +другий +дійсно +завжди +звідси +зовсім +кругом +кілька +людина +можуть +навіть +навіщо +нагорі +небудь +низько +ніколи +нікуди +нічого +обидва +одного +однієї +п'ятий +перший +просто +раніше +раптом +самими +самого +самому +сказав +скрізь +сьомий +третій +тільки +хотіти +чотири +чудово +шостий +близько +важлива +важливе +важливі +вдалині +восьмий +говорив +дев'ять +десятий +зайнята +зайнято +зайняті +занадто +значить +навколо +нарешті +нерідко +повинно +посеред +початку +пізніше +сказала +сказати +скільки +спасибі +частіше +важливий +двадцять +дев'ятий +зазвичай +зайнятий +звичайно +здається +найбільш +не можна +недалеко +особливо +потрібно +спочатку +сьогодні +численна +численне +численні +відсотків +двадцятий +звідусіль +мільйонів +нещодавно +прекрасно +четвертий +численний +будь ласка +дванадцять +одинадцять +сімнадцять +тринадцять +безперервно +дванадцятий +одинадцятий +одного разу +п'ятнадцять +сімнадцятий +тринадцятий +шістнадцять +вісімнадцять +п'ятнадцятий +чотирнадцять +шістнадцятий +вісімнадцятий +дев'ятнадцять +чотирнадцятий дев'ятнадцятий \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_zh.txt b/yake/core/StopwordsList/stopwords_zh.txt similarity index 80% rename from yake/StopwordsList/stopwords_zh.txt rename to yake/core/StopwordsList/stopwords_zh.txt index 955ff2b0..0b3ef8f8 100644 --- a/yake/StopwordsList/stopwords_zh.txt +++ b/yake/core/StopwordsList/stopwords_zh.txt @@ -1,125 +1,125 @@ -的 -一 -不 -在 -人 -有 -是 -为 -以 -于 -上 -他 -而 -后 -之 -来 -及 -了 -因 -下 -可 -到 -由 -这 -与 -也 -此 -但 -并 -个 -其 -已 -无 -小 -我 -们 -起 -最 -再 -今 -去 -好 -只 -又 -或 -很 -亦 -某 -把 -那 -你 -乃 -它 -吧 -被 -比 -别 -趁 -当 -从 -到 -得 -打 -凡 -儿 -尔 -该 -各 -给 -跟 -和 -何 -还 -即 -几 -既 -看 -据 -距 -靠 -啦 -了 -另 -么 -每 -们 -嘛 -拿 -哪 -那 -您 -凭 -且 -却 -让 -仍 -啥 -如 -若 -使 -谁 -虽 -随 -同 -所 -她 -哇 -嗡 -往 -哪 -些 -向 -沿 -哟 -用 -于 -咱 -则 -怎 -曾 -至 -致 -着 -诸 +的 +一 +不 +在 +人 +有 +是 +为 +以 +于 +上 +他 +而 +后 +之 +来 +及 +了 +因 +下 +可 +到 +由 +这 +与 +也 +此 +但 +并 +个 +其 +已 +无 +小 +我 +们 +起 +最 +再 +今 +去 +好 +只 +又 +或 +很 +亦 +某 +把 +那 +你 +乃 +它 +吧 +被 +比 +别 +趁 +当 +从 +到 +得 +打 +凡 +儿 +尔 +该 +各 +给 +跟 +和 +何 +还 +即 +几 +既 +看 +据 +距 +靠 +啦 +了 +另 +么 +每 +们 +嘛 +拿 +哪 +那 +您 +凭 +且 +却 +让 +仍 +啥 +如 +若 +使 +谁 +虽 +随 +同 +所 +她 +哇 +嗡 +往 +哪 +些 +向 +沿 +哟 +用 +于 +咱 +则 +怎 +曾 +至 +致 +着 +诸 自 \ No newline at end of file diff --git a/yake/core/__pycache__/Levenshtein.cpython-310.pyc b/yake/core/__pycache__/Levenshtein.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a6ba6955d3c843d61c5cdc9b70936ce160832f9 GIT binary patch literal 2215 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 C{|lG^ literal 0 HcmV?d00001 diff --git a/yake/core/__pycache__/yake.cpython-310.pyc b/yake/core/__pycache__/yake.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c5c5d27cc6c7f164e607d5f06e312208de086aa GIT binary patch literal 8237 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 Date: Tue, 13 May 2025 15:13:37 +0100 Subject: [PATCH 080/118] Update README.md --- README.md | 53 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 6da00a3e..d1ac5cda 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,16 @@ YAKE! is a lightweight unsupervised automatic keyword extraction method that use pip install git+https://github.com/LIAAD/yake ``` +or + +```bash +pip install yake +``` + ## Basic Usage +#### Usage (Python) + ```python import yake @@ -45,14 +53,35 @@ custom_kw_extractor = yake.KeywordExtractor( keywords = custom_kw_extractor.extract_keywords(text) ``` +#### Usage (Command line) + +How to use it on your favorite command line + +``` bash +Usage: yake [OPTIONS] + +Options: + -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. +``` + ## Multilingual Support YAKE! supports multiple languages. Example with Portuguese text: ```python -text_pt = "YAKE! é um extrator de palavras-chave automático não supervisionado." +text = "Alvor – encantadora vila. A aldeia piscatória de Alvor está situada no estuário do Rio Alvor e apesar da evolução constante do turismo no Algarve, mantém a sua arquitetura baixa e encanto da cidade velha, com ruas estreitas de paralelepípedos que nos levam até à Ria de Alvor, uma das belezas naturais mais impressionantes de Portugal. Há muitos hotéis em Alvor por onde escolher e adequar às exigências das suas férias, quanto a gosto e orçamento, bem como uma série de alojamento autossuficiente para aqueles que preferem ter um pouco mais de liberdade durante a sua estadia na Região de Portimão. Há muito para fazer e descobrir em Alvor, quer seja passar os seus dias descobrindo a rede de ruas desta encantadora vila de pescadores, explorar as lojas, ir para a praia para se divertir entre brincadeiras na areia e mergulhos no mar, ou descobrir a flora e fauna da área classificada da Ria de Alvor. O charme de Alvor não se esgota na Vila. Ficar hospedado em Alvor vai proporcionar-lhe momento mágicos entre paisagens de colinas, lagoas rasas e vistas panorâmicas sobre o Oceano Atlântico. Terá oportunidade de praticar o seu swing num dos campos de golfe de classe mundial e explorar as principais atrações históricas e alguns dos segredos mais bem escondidos do Algarve, nas proximidades, em Portimão e Mexilhoeira Grande. Consulte a lista dos nossos parceiros e escolha o hotel em Alvor, onde ficar durante as suas férias no Algarve." custom_kw_extractor = yake.KeywordExtractor(lan="pt") -keywords = custom_kw_extractor.extract_keywords(text_pt) +keywords = custom_kw_extractor.extract_keywords(text) ``` ## Text Highlighting @@ -73,30 +102,26 @@ custom_th = TextHighlighter( ) ``` - ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [Documentation](https://tiagolv.github.io/yakerf/docs) -- 📦 Python package: [GitHub](https://github.com/LIAAD/yake_demo) +- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs) +- 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) +- 💻 Pypi [https://pypi.org/project/yake/](https://pypi.org/project/yake/) ## Citation -If you use YAKE in your research, please cite: +If you use YAKE in your research, please cite the best suited: -``` Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. -Information Sciences Journal. Elsevier, Vol 509, pp 257-289. -``` -[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) +Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) -``` Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. -ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. -``` -[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) +ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) + +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) ## Awards From 6d85a057a9a21c2eeff854bf409c7ef92120fe4c Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 15:37:28 +0100 Subject: [PATCH 081/118] cleaning repository and read-me tests --- README.md | 76 +++++++++++++++++++++-------- demo/packages.txt | 9 ---- demo/streamlit_app.py | 107 ----------------------------------------- tests/README.md | 18 +++++++ tests/doc1.txt | 1 - tests/yakenew.md | 109 ------------------------------------------ 6 files changed, 74 insertions(+), 246 deletions(-) delete mode 100644 demo/packages.txt delete mode 100644 demo/streamlit_app.py create mode 100644 tests/README.md delete mode 100644 tests/doc1.txt delete mode 100644 tests/yakenew.md diff --git a/README.md b/README.md index d1ac5cda..d66171fd 100644 --- a/README.md +++ b/README.md @@ -25,12 +25,54 @@ pip install yake ## Basic Usage +#### Usage (Command line) + +How to use it on your favorite command line + +``` bash +Usage: yake [OPTIONS] + +Options: + -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. +``` + #### Usage (Python) ```python import yake -text = "YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text." +text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ +"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ +"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ +"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ +"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ +"was founded by Goldbloom and Ben Hamner in 2010. "\ +"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ +"it has managed to stay well ahead of them by focusing on its specific niche. "\ +"The service is basically the de facto home for running data science and machine learning competitions. "\ +"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ +"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ +"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ +"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ +"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ +"will keep the service running - likely under its current name. While the acquisition is probably more about "\ +"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ +"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ +"share this code on the platform (the company previously called them 'scripts'). "\ +"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ +"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ +"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ +"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " # Simple usage with default parameters kw_extractor = yake.KeywordExtractor() @@ -53,27 +95,21 @@ custom_kw_extractor = yake.KeywordExtractor( keywords = custom_kw_extractor.extract_keywords(text) ``` -#### Usage (Command line) - -How to use it on your favorite command line - +#### Output +The lower the score, the more relevant the keyword is. ``` bash -Usage: yake [OPTIONS] - -Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. +('google', 0.026580863364597897) +('kaggle', 0.0289005976239829) +('ceo anthony goldbloom', 0.029946071606210194) +('san francisco', 0.048810837074825336) +('anthony goldbloom declined', 0.06176910090701819) +('google cloud platform', 0.06261974476422487) +('co-founder ceo anthony', 0.07357749587020043) +('acquiring kaggle', 0.08723571551039863) ``` + + ## Multilingual Support YAKE! supports multiple languages. Example with Portuguese text: @@ -107,7 +143,7 @@ custom_th = TextHighlighter( - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) - 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs) - 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) -- 💻 Pypi [https://pypi.org/project/yake/](https://pypi.org/project/yake/) +- 💻 Pypi: [https://pypi.org/project/yake/](https://pypi.org/project/yake/) ## Citation diff --git a/demo/packages.txt b/demo/packages.txt deleted file mode 100644 index 6092a9af..00000000 --- a/demo/packages.txt +++ /dev/null @@ -1,9 +0,0 @@ -matplotlib==3.3.1 -importlib-metadata==4.13.0 -git+https://github.com/LIAAD/yake -numpy==1.18.5 -pandas==1.0.5 -spacy==2.3.2 -wordcloud==1.8.0 -streamlit==0.64.0 -Pillow==7.2.0 diff --git a/demo/streamlit_app.py b/demo/streamlit_app.py deleted file mode 100644 index 79a94f71..00000000 --- a/demo/streamlit_app.py +++ /dev/null @@ -1,107 +0,0 @@ -import streamlit as st -import yake -import pandas as pd -import numpy as np -from wordcloud import WordCloud -import matplotlib.pyplot as plt -from spacy import displacy -import re - -st.write('', unsafe_allow_html=True) -HTML_WRAPPER = """

    {}
    """ - - -st.sidebar.title("Yet Another Keyword Extractor (YAKE)") -st.sidebar.markdown(""" -Unsupervised Approach for Automatic Keyword Extraction using Text Features. -https://liaad.github.io/yake/ -""" -) - -st.sidebar.markdown(""" -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) -""") - -st.sidebar.header('Parameters') - -#side bar parameters -max_ngram_size = st.sidebar.slider("Select max ngram size", 1, 10, 3) -deduplication_thresold = st.sidebar.slider("Select deduplication threshold", 0.5, 1.0, 0.9) -numOfKeywords = st.sidebar.slider("Select number of keywords to return", 1, 50, 10) -deduplication_algo = st.sidebar.selectbox('deduplication function', ('leve','jaro','seqm'),2) - - - -input_text_demo = [ - "Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size . The need to automate this task so that text can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools . Yake is a novel feature-based system for multi-lingual keyword extraction , which supports texts of different sizes, domain or languages. Unlike other approaches, Yake does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where access to training corpora is either limited or restricted.", - "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner", - "Genius quietly laid off a bunch of its engineers — now can it survive as a media company?. Genius, which raised $56.9 million on the promise that it would one day annotate the entire internet, has been losing its minds. In January, the company quietly laid off a quarter of its staff, with the bulk of the cuts coming from the engineering department. In a post on the Genius blog at the time, co-founder Tom Lehman told employees that Genius planned to shift its emphasis away from the annotation platform that once attracted top-tier investors in favor of becoming a more video-focused media company. 'After taking a careful look at the company and our priorities,' Lehman wrote, 'we’ve had to make some tough decisions about how we want to spend our resources. And unfortunately this meant that today we laid off some very talented people.' The company then took the unusual step of posting the Genius usernames of those it had laid off — 12 full-time and five part-time employees. 'WE NEEDED TO SHIFT RESOURCES FROM CAPTURING KNOWLEDGE... TOWARD PACKAGING AND DISTRIBUTING KNOWLEDGE.' At the same time, Lehman noted that the company was continuing to hire for roles in video and sales. The company recently redesigned its homepage with expanded space for editorial content and advertising. It has also been deepening its Behind the Lyrics partnership with Spotify, for which it contributes a mix of song lyrics and factoids that pop up in a slideshow format when you’re listening to popular songs. 'The change we made in January was in recognition of the fact that we needed to shift resources from capturing knowledge — which we've been doing almost exclusively for the past five years — toward packaging and distributing knowledge into easy-to-consume formats like video and Spotify Behind the Lyrics,' Lehman told The Verge. It’s not unusual for tech companies to transform over time, though typically they are loath to lay off engineers. But Genius’ shift is more dramatic than most: going from all-encompassing annotator of the internet to a more traditional media company model, chasing video views alongside an ever-growing number of well-capitalized competitors. The move illustrates the company’s difficulty attracting contributors — and an audience for their contributions — particularly outside of the music world. In an interview last week, Lehman said the company had turned to video in an effort to reach its core audience‚ which continues to be rap fans, beyond its website and mobile apps. 'Video makes it a little bit more accessible,' he said. 'I love the Genius website. One of my favorite websites. But it can be a little frustrating to use. You have to be really, really dedicated to learn everything about a song on Genius. You've got to be down to click and read a lot.' Genius’ videos to date have included interviews with artists about their craft, and a series where rappers perform original freestyle verses. One of Lehman’s favorite videos traces a whistle sample featured in a series of popular songs back to its origins in a Quentin Tarantino movie. Last week, Genius posted a video about rapper Lil Yachty learning how to make pizza. The company is also investing in original editorial content, aggregating news headlines, doing Q&As with artists like the Track Burnaz, and writing short profiles. ", -] - - - -windowSize = 1 - -#User text in content -st.header('Demo') - -selected_input_text = st.selectbox("Select sample text", input_text_demo) -text = st.text_area("Selected text", selected_input_text, 330) -language = "english" - -#use yake to extract keywords -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_thresold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None) -keywords = custom_kw_extractor.extract_keywords(text) - - - - -#get keywords and their position -ents = [] -text_lower = text.lower() - -keywords_list = str(keywords[0][0]) -for m in re.finditer(keywords_list, text_lower): - d = dict(start = m.start(), end = m.end(), label = "") - ents.append(d) - -for i in range(1, len(keywords)): - kwords = str(keywords[i][0]) - keywords_list += (', ' + kwords) - for m in re.finditer(kwords, text_lower): - d = dict(start = m.start(), end = m.end(), label = "") - ents.append(d) - -#sort the result by ents, as ent rule suggests -sort_ents = sorted(ents, key=lambda x: x["start"]) - -st.header('Output') - -result_view = st.radio("Choose visualization type",('Highlighting', 'Word cloud', 'Table'), index=0) -if result_view == 'Highlighting': - #use spacy to higlight the keywords - ex = [{"text": text, - "ents": sort_ents, - "title": None}] - - html = displacy.render(ex, style="ent", manual=True) - html = html.replace("\n", " ") - st.write(HTML_WRAPPER.format(html), unsafe_allow_html=True) -elif result_view == "Table": - #tabular data (columns: keywords, score) - df = pd.DataFrame(keywords, columns=("keywords","score")) - st.table(df) - -else: - #create and generate a word cloud image - wordcloud = WordCloud(width = 1000, height = 600, max_font_size = 80, - min_font_size=10, prefer_horizontal=1, - max_words=numOfKeywords, - background_color="white", - collocations=False, - regexp = r"\w[\w ']+").generate(keywords_list) - - #display the generated image - plt.imshow(wordcloud, interpolation='bilinear') - plt.axis("off") - st.pyplot(plt) diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 00000000..47218002 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,18 @@ +🧪 How to run the tests +This project uses pytes to run it´s tests. + +📋 Pre-requirements +If not already installed install pytest: + +bash +``` +pip install pytest +``` + +🚀 Running the tests +To run the tests, run the following command on the root of your project: + +bash +``` +pytest tests/test_yake.py -v +``` diff --git a/tests/doc1.txt b/tests/doc1.txt deleted file mode 100644 index 7ef9c955..00000000 --- a/tests/doc1.txt +++ /dev/null @@ -1 +0,0 @@ -Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner \ No newline at end of file diff --git a/tests/yakenew.md b/tests/yakenew.md deleted file mode 100644 index 8a66c5db..00000000 --- a/tests/yakenew.md +++ /dev/null @@ -1,109 +0,0 @@ -Importações: - -Organizadas em grupos (stdlib, third-party, local) -Ordenadas alfabeticamente e por natividade -Removida importação não utilizada de string - -Nomes de variáveis e funções: - -Classes CamelCase -Função: snake_case -Variáveis: snake_case -Constantes: UPPER_CASE - -----------------------Docstrings----------------------------------: - -Adicionada docstring ao módulo -Adicionada docstring à classe -Adicionadas docstrings aos métodos com descrição dos parâmetros - -----------------------Formatação----------------------------------: - -Espaçamento atualizados -Parênteses removidos de condicionais desnecessários -Limite de 100 caracteres -Parâmetros do __init__ organizados verticalmente para melhor legibilidade - ------------------------Boas práticas------------------------------: - -Removida herança explícita de object (atualmente desnecessária em Python 3) -Melhorada mensagem de exceção -Substituído - - == False -por - not - -Melhorada verificação de string vazia usando if not text - ------------------------------------------------------------------------------------------------------------------------ - -Status semanda 07/02/2025 //////Refactoring score (3.21) ---------> PYlint (PEP 8) - -- Exploração das mencionadas ferramentas puppet e cheff. -(Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) (04 e 05 /02/2025) - -- finalização da configuração do pylint (Git Action), que me deu uma série de "code smells" em vários ficheiros. (07/02/2025) - -pylint: Action capaz de avaliar um commit, analizando todos os ficheiros .py, num sistema de pontos de 0 a 10 realçando melhoramentos. - -Planos próxima semana: - -- Criação de novos testes e possivel automatização dos mesmos para puder aprofundar refatorização. - (de 9 a 11 pretendo acabar esta etapa), visto que viajo dia 14 e 15 - -- Caso consigo tempo, começar a tratar de problemas identificados pelo pylint - -Status semana 14/02/2025 //////Refactoring score (3.21) - -- Automatização dos testes de resultados - -Planos próxima semana - -- Avançar com refatorização e tratamento de problemas identificados pelo pylint. - -////// Refactoring score (3.21) -> (3.94) 18/02/2025 - -Tamanhos de linha e troca para enumerate -isinstance() por vez de type() - -////// Refactoring score (3.94) -> (5.07) 20/02/2025 - -indexação de linhas e espaços -tamanho de linhas -atualizados os catches de erros (especificação quantos aos catches) - -////// Refactoring score (5.07) -> (6.57) 25/02/2025 - -organização dos métodos, classes e variaveis -generator por vez 'sum' -enumerate por vez de iteração com range e len -prefixos com 'u' e 'r' removidos e adicionados respetivamente ( 'u' não necessarios para o python 3.10 e o contrário para 'r') - - -///// Refactoring score (6.57) -> (6.59) 05/03/2025 - -yake.py - -Redução de código duplo -Criação de dicionários de "guia", _get_dedup_function -Lógica foi extraída para um método separado,_load_stopwords - -///// Refactoring score (6.59) -> (6.86) 06/03/2025 - -highligh.py - -Redução de código duplo (Próximo passo) -Documentação +/- -Separação de métodos e argumentos (quase todos) - -///// Refactoring score (6.86) -> (6.93) 07/03/2025 - -Criação de dicionários de forma a diminuir o numero de argumentos por cada função e comparações condicionais. - -///// Refactoring score (6.86) -> (7.23) 25/03/2025 - -data representation acabado -separação de argumentos e atributos por dicionáros -métodos mais compactos -criação de propriedades de "backwards compatibility" para facilitar refatorização, não necessário mas peça imperial para desenvolvimento sem problemas com variaveis e criação de novos dicionários From 04916576eba71e95e80b48c5ba1244f8f62c5a8d Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 16:00:24 +0100 Subject: [PATCH 082/118] Update README.md --- tests/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/README.md b/tests/README.md index 47218002..d8f25bbb 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,7 +1,7 @@ -🧪 How to run the tests +# 🧪 How to run the tests This project uses pytes to run it´s tests. -📋 Pre-requirements +### 📋 Pre-requirements If not already installed install pytest: bash @@ -9,7 +9,7 @@ bash pip install pytest ``` -🚀 Running the tests +### 🚀 Running the tests To run the tests, run the following command on the root of your project: bash From c510de000e123d50342f3bf8ab255417c7767a5f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 16:59:42 +0100 Subject: [PATCH 083/118] updated homepage and readme --- README.md | 6 +- docs-site/content/docs/index.mdx | 394 ++++++++----------------------- 2 files changed, 109 insertions(+), 291 deletions(-) diff --git a/README.md b/README.md index d66171fd..b233d68e 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ [![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) + YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. ## Features @@ -37,7 +39,7 @@ Options: -i, --input_file TEXT Input file -l, --language TEXT Language -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] + -df, --dedup-func [leve|jaro|seqm] * Deduplication function. -dl, --dedup-lim FLOAT Deduplication limiar. -ws, --window-size INTEGER Window size. @@ -46,6 +48,8 @@ Options: --help Show this message and exit. ``` +Dont know which Deduplication function to use, see more here () + #### Usage (Python) ```python diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index ceccb29d..8d246ce6 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,348 +1,165 @@ -# Yet Another Keyword Extractor (Yake) +# Yet Another Keyword Extractor (YAKE!) -Unsupervised Approach for Automatic Keyword Extraction using Text Features. +**Unsupervised, corpus-independent keyword extraction from single documents.** -YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app. +YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. -## Main Features +YAKE! is designed to be: +- 🧠 **Unsupervised** – no training data required +- 🌍 **Language & domain independent** – works across domains and languages +- 📄 **Single-document based** – no need for a reference corpus +- ⚡ **Efficient** – lightweight and fast -* Unsupervised approach -* Corpus-Independent -* Domain and Language Independent -* Single-Document +## Why YAKE!? -## Benchmark +In an era where data is abundant and multilingual content is common, keyword extraction must be fast, adaptable, and reliable. YAKE! is built to handle: +- Small or large documents +- Texts in various languages +- Environments with limited or no training data -For Benchmark results check out our paper published on Information Science Journal (see the references section). +Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. -## Rationale +## Try It Out -Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. +- 🧪 [Online Demo](http://yake.inesctec.pt) +- 🐍 [GitHub Repository](https://github.com/LIAAD/yake) -## Where can I find YAKE!? -YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords). +## Install YAKE! -## Installing YAKE! +You can use YAKE! via: -There are three installation alternatives. - -- To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our [simple YAKE! Docker image](#cli-image). This container will allow you to run text extraction as a command, and then exit. -- To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our [RESTful API server image](#rest-api-image). This container/server *will run in the background*. -- To install YAKE! straight "on the metal" or you want to integrate it in your Python app, you can [install it and its dependencies](#standalone-installation). - - -### Option 1. YAKE as a CLI utility inside a Docker container - -First, install Docker. Ubuntu users, please see our [script below](#installing-docker) for a complete installation script. - -Then, run: - -```bash -docker run liaad/yake:latest -ti "Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system." -``` -*Example text from Wikipedia* - - -### Option 2. REST API Server in a Docker container - -This install will provide you a mirror of the original REST API of YAKE! available [here](https://boiling-castle-88317.herokuapp.com). +### ▶️ Python Package ```bash -docker run -p 5000:5000 -d liaad/yake-server:latest +pip install git+https://github.com/LIAAD/yake ``` -After it starts up, the container will run in the background, at http://127.0.0.1:5000. To access the YAKE! API documentation, go to http://127.0.0.1:5000/apidocs/. - -You can test the RESTful API using `curl`: - -```bash -curl -X POST "http://localhost:5000/yake/" -H "accept: application/json" -H "Content-Type: application/json" \ --d @- <<'EOF' -{ - "language": "en", - "max_ngram_size": 3, - "number_of_keywords": 10, - "text": "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ..." -} -EOF -``` -*Example text from Wikipedia* +## How It Works - -### Option 3. Standalone Installation (for development or integration) +YAKE! assigns relevance scores to keywords based on multiple features: +- Term frequency +- Term position +- Word casing +- Sentence placement +- Contextual diversity -#### Requirements +The lower the score, the more relevant the keyword. -Python3 +## Example (Python) -#### Installation +```python +import yake -To install Yake using pip: +text = "Google is acquiring Kaggle, a platform for machine learning competitions..." +kw_extractor = yake.KeywordExtractor() +keywords = kw_extractor.extract_keywords(text) -``` bash -pip install git+https://github.com/LIAAD/yake +for kw in keywords: + print(kw) ``` -To upgrade using pip: - -``` bash -pip install git+https://github.com/LIAAD/yake –-upgrade -``` #### Usage (Command line) How to use it on your favorite command line + ``` bash Usage: yake [OPTIONS] Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. -``` -### Usage (Python) - -How to use it on Python - -``` python -import yake - -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ -"was founded by Goldbloom and Ben Hamner in 2010. "\ -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ -"it has managed to stay well ahead of them by focusing on its specific niche. "\ -"The service is basically the de facto home for running data science and machine learning competitions. "\ -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ -"will keep the service running - likely under its current name. While the acquisition is probably more about "\ -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ -"share this code on the platform (the company previously called them 'scripts'). "\ -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ -"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " + -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] * + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. ``` -#### assuming default parameters -```bash -kw_extractor = yake.KeywordExtractor() -keywords = kw_extractor.extract_keywords(text) +# Keyword Deduplication Methods in YAKE -for kw in keywords: - print(kw) -``` - -#### specifying parameters -```bash -language = "en" -max_ngram_size = 3 -deduplication_threshold = 0.9 -deduplication_algo = 'seqm' -windowSize = 1 -numOfKeywords = 20 +In YAKE (Yet Another Keyword Extractor), the methods `levs`, `jaro`, and `seqm` are used to compute **string similarity** during the **keyword deduplication** process — that is, removing keywords that are too similar to each other. Here's what distinguishes each of these methods: -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_threshold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None) -keywords = custom_kw_extractor.extract_keywords(text) +## 🔤 1. `levs` — **Levenshtein Similarity** -for kw in keywords: - print(kw) -``` +* **What it is:** Measures the edit distance between two strings — i.e., how many operations (insertions, deletions, substitutions) are needed to turn one string into another. +* **How it's used here:** The distance is **normalized** by the length of the longer string, then converted to a **similarity score**. +* **Formula used:** -#### Output -The lower the score, the more relevant the keyword is. -``` bash -('google', 0.026580863364597897) -('kaggle', 0.0289005976239829) -('ceo anthony goldbloom', 0.029946071606210194) -('san francisco', 0.048810837074825336) -('anthony goldbloom declined', 0.06176910090701819) -('google cloud platform', 0.06261974476422487) -('co-founder ceo anthony', 0.07357749587020043) -('acquiring kaggle', 0.08723571551039863) -('ceo anthony', 0.08915156857226395) -('anthony goldbloom', 0.09123482372372106) -('machine learning', 0.09147989238151344) -('kaggle co-founder ceo', 0.093805063905847) -('data', 0.097574333771058) -('google cloud', 0.10260128641464673) -('machine learning competitions', 0.10773000650607861) -('francisco this week', 0.11519915079240485) -('platform', 0.1183512305596321) -('conference in san', 0.12392066376108138) -('service', 0.12546743261462942) -('goldbloom', 0.14611408778815776) +```python +similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) ``` -### Highlighting Feature -Highlighting feature will tag every keyword in the text with the default tag ``. +* **Advantages:** + * Very accurate for small changes (e.g., "house" vs "horse"). + * Considers **character positions**. +* **Disadvantage:** + * **Slower** than other methods, due to calculating edit operations. -``` python +## 🔤 2. `jaro` — **Jaro Similarity** -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size = 3) -th.highlight(text, keywords) - -``` -#### Output -By default, keywords will be highlighted using the tag 'kw'. -``` -Sources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that google is hosting its Cloud Next conference in san francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the acquisition is happening. google itself declined 'to comment on rumors'. -..... -..... -``` +* **What it is:** Measures similarity based on matching characters and their relative positions. +* **Note:** YAKE uses the `jellyfish` library implementation. +* **How it works:** Gives more weight to **nearby matching characters** and penalizes character misalignments. +* **Score:** Ranges from 0.0 (completely different) to 1.0 (identical). +* **Advantages:** + * More **tolerant of transpositions** (e.g., "maria" vs "maira"). + * Faster than Levenshtein. +* **Disadvantage:** + * May be less accurate for strings with big length differences. +## 🔤 3. `seqm` — **SequenceMatcher Ratio** -### Custom Highlighting Feature -Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag `` makes use of an hyphotetical function `my_class` whose purpose would be to highlight in white colour or the relevant keywords. +* **What it is:** Uses Python's built-in `difflib.SequenceMatcher`, which measures similarity based on **common subsequences**. +* **How it works:** Detects matching blocks and computes a ratio: -#### Output ```python - -from yake.highlight import TextHighlighter -th = TextHighlighter(max_ngram_size = 3, highlight_pre = "", highlight_post= "") -th.highlight(text, keywords) -``` - -``` -self.highlight_postSources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that google is hosting self.highlight_postits Cloud Next conference in san francisco this week, the official announcement could come as early self.highlight_postas tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the self.highlight_postacquisition is happening. google itself declined 'to comment on rumors'. -..... -..... -``` - -### Languages others than English -While English (`en`) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text. -``` bash -text = ''' -"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui. -A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto. -''' - -custom_kw_extractor = yake.KeywordExtractor(lan="pt") -keywords = custom_kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) +ratio = 2 * M / T ``` -#### Output -``` bash -('conta-me histórias', 0.006225012963810038) -('liaad do inesc', 0.01899063587015275) -('inesc tec', 0.01995432290332246) -('conta-me', 0.04513273690417472) -('histórias', 0.04513273690417472) -('prémio arquivo.pt', 0.05749361520927859) -('liaad', 0.07738867367929901) -('inesc', 0.07738867367929901) -('tec', 0.08109398065524037) -('xutos inspiram projeto', 0.08720742489353424) -('inspiram projeto premiado', 0.08720742489353424) -('adam jatwot docente', 0.09407053486771558) -('arquivo.pt', 0.10261392141666957) -('alípio jorge', 0.12190479662535166) -('ciências da universidade', 0.12368384021490342) -('ricardo campos investigador', 0.12789997272332762) -('politécnico de tomar', 0.13323587141127738) -('arian pasquali', 0.13323587141127738) -('vitor mangaravite', 0.13323587141127738) -('preservados da web', 0.13596322680882506) -``` - -## Related projects - -### YAKE! Mobile APP -YAKE! is now available on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake) - -### `pke` - python keyphrase extraction - -https://github.com/boudinfl/pke - `pke` is an **open source** python-based **keyphrase extraction** toolkit. It -provides an end-to-end keyphrase extraction pipeline in which each component can -be easily modified or extended to develop new models. `pke` also allows for -easy benchmarking of state-of-the-art keyphrase extraction models, and -ships with supervised models trained on the SemEval-2010 dataset (http://aclweb.org/anthology/S10-1004). +where `M` is the number of matching characters, and `T` is the total number of characters in both strings. -Credits to https://github.com/boudinfl +* **Advantages:** + * Good for detecting shared blocks in longer strings. + * Reasonably fast. +* **Disadvantage:** + * Can be **too sensitive** to small changes in short strings. -### `SparkNLP` - State of the Art Natural Language Processing framework -https://github.com/JohnSnowLabs/spark-nlp - `SparkNLP` from [John Snow Labs](https://www.johnsnowlabs.com/) is an open source framework with full Python, Scala, and Java Support. Check [their documentation](https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction), [demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/) and [google colab](https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb). A video on how to use spark nlp with yake can also be found here: https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code +## 🧠 Which one to use? -### `General Index` by Archive.org -https://archive.org/details/GeneralIndex - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in [Nature](https://www.nature.com/articles/d41586-021-02895-8). +| Name | Based on | Best for... | Performance | +|------|----------|-------------|------------| +| `levs` | Edit operations | Typos and small changes | Medium | +| `jaro` | Matching character positions | Names and short strings with swaps | Fast | +| `seqm` | Common subsequences | General phrase similarity | Fast | -### `textacy` - NLP, before and after spaCy +## ✅ Practical Example: -https://github.com/chartbeat-labs/textacy - `textacy` is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE. +| Compared Strings | `levs` | `jaro` | `seqm` | +|------------------|--------|--------|--------| +| "casa" vs "caso" | 0.75 | 0.83 | 0.75 | +| "machine" vs "mecine" | 0.71 | 0.88 | 0.82 | +| "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | -Credits to https://github.com/chartbeat-labs +**Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. +## Highlighting Keywords - - -### `Annif` - Tool for automated subject indexing and classification -https://github.com/NatLibFi/Annif/ - `Annif` is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website http://annif.org/. - -### `Portulan Clarin` - Services and data for researchers, innovators, students and language professionals -https://portulanclarin.net/workbench/liaad-yake/ - `Portulan Clarin` is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website https://portulanclarin.net/. - -## How to install Docker - -Here is the "just copy and paste" installations script for Docker in Ubuntu. Enjoy. +```python +from yake.highlight import TextHighlighter -```bash -# Install dependencies -sudo apt-get update -sudo apt-get install \ - apt-transport-https \ - ca-certificates \ - curl \ - software-properties-common - -# Add Docker repo -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -sudo apt-key fingerprint 0EBFCD88 -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" -sudo apt-get update - -# Install Docker -sudo apt-get install -y docker-ce - -# Start Docker Daemon -sudo service docker start - -# Add yourself to the Docker user group, otherwise docker will complain that -# it does not know if the Docker Daemon is running -sudo usermod -aG docker ${USER} - -# Install docker-compose -sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -source ~/.bashrc -docker-compose --version -echo "Done!" +th = TextHighlighter(max_ngram_size=3) +highlighted = th.highlight(text, keywords) ``` -Credits to https://github.com/silvae86 for the Docker scripts. +## Benchmarks + +YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. ## References -Please cite the following works when using YAKE +Please best cite suited work when using YAKE In-depth journal paper at Information Sciences Journal @@ -353,6 +170,3 @@ Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) - -## Awards -[ECIR'18](http://ecir2018.org) Best Short Paper From 0df5032b2f1fa0d2ad4e60267e9241840b34bbfe Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:06:26 +0100 Subject: [PATCH 084/118] updated homepage doc site --- README.md | 4 +--- docs-site/content/docs/index.mdx | 14 +++++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b233d68e..eef130cf 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # YAKE! (Yet Another Keyword Extractor) -[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) - -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 8d246ce6..f8a06cb5 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -79,11 +79,11 @@ Options: --help Show this message and exit. ``` -# Keyword Deduplication Methods in YAKE +##### Keyword Deduplication Methods in YAKE In YAKE (Yet Another Keyword Extractor), the methods `levs`, `jaro`, and `seqm` are used to compute **string similarity** during the **keyword deduplication** process — that is, removing keywords that are too similar to each other. Here's what distinguishes each of these methods: -## 🔤 1. `levs` — **Levenshtein Similarity** +###### 🔤 1. `levs` — **Levenshtein Similarity** * **What it is:** Measures the edit distance between two strings — i.e., how many operations (insertions, deletions, substitutions) are needed to turn one string into another. * **How it's used here:** The distance is **normalized** by the length of the longer string, then converted to a **similarity score**. @@ -99,7 +99,7 @@ similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2) * **Disadvantage:** * **Slower** than other methods, due to calculating edit operations. -## 🔤 2. `jaro` — **Jaro Similarity** +###### 2. `jaro` — **Jaro Similarity** * **What it is:** Measures similarity based on matching characters and their relative positions. * **Note:** YAKE uses the `jellyfish` library implementation. @@ -111,7 +111,7 @@ similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2) * **Disadvantage:** * May be less accurate for strings with big length differences. -## 🔤 3. `seqm` — **SequenceMatcher Ratio** +###### 3. `seqm` — **SequenceMatcher Ratio** * **What it is:** Uses Python's built-in `difflib.SequenceMatcher`, which measures similarity based on **common subsequences**. * **How it works:** Detects matching blocks and computes a ratio: @@ -128,7 +128,7 @@ where `M` is the number of matching characters, and `T` is the total number of c * **Disadvantage:** * Can be **too sensitive** to small changes in short strings. -## 🧠 Which one to use? +###### Which one to use? | Name | Based on | Best for... | Performance | |------|----------|-------------|------------| @@ -136,7 +136,7 @@ where `M` is the number of matching characters, and `T` is the total number of c | `jaro` | Matching character positions | Names and short strings with swaps | Fast | | `seqm` | Common subsequences | General phrase similarity | Fast | -## ✅ Practical Example: +###### Practical Example: | Compared Strings | `levs` | `jaro` | `seqm` | |------------------|--------|--------|--------| @@ -145,7 +145,7 @@ where `M` is the number of matching characters, and `T` is the total number of c | "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | **Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. -## Highlighting Keywords +###### Highlighting Keywords ```python from yake.highlight import TextHighlighter From ae0828d42b975895570565b6f72d1cc94cfe65b5 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:09:15 +0100 Subject: [PATCH 085/118] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eef130cf..68b1c45f 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more here () +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods-in-yake) #### Usage (Python) From b758a7fcac2c0c2d777d44d63a0cd4c0ac19438e Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:27:49 +0100 Subject: [PATCH 086/118] updating homepage and doc site links --- docs-site/README.md | 4 + docs-site/content/docs/index.mdx | 147 ++++++++++++++----------------- 2 files changed, 71 insertions(+), 80 deletions(-) diff --git a/docs-site/README.md b/docs-site/README.md index 4bf5dfc1..2c0cec55 100644 --- a/docs-site/README.md +++ b/docs-site/README.md @@ -11,3 +11,7 @@ yarn dev ``` Open http://localhost:3000 with your browser to see the result. + +## You can also simply access the site from the following link + +https://tiagolv.github.io/yakerf/docs diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index f8a06cb5..9ef57d41 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -4,6 +4,8 @@ YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. +## Key Features + YAKE! is designed to be: - 🧠 **Unsupervised** – no training data required - 🌍 **Language & domain independent** – works across domains and languages @@ -19,33 +21,20 @@ In an era where data is abundant and multilingual content is common, keyword ext Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. -## Try It Out +## Quick Start + +### Try It Out - 🧪 [Online Demo](http://yake.inesctec.pt) - 🐍 [GitHub Repository](https://github.com/LIAAD/yake) -## Install YAKE! - -You can use YAKE! via: - -### ▶️ Python Package +### Installation ```bash pip install git+https://github.com/LIAAD/yake ``` -## How It Works - -YAKE! assigns relevance scores to keywords based on multiple features: -- Term frequency -- Term position -- Word casing -- Sentence placement -- Contextual diversity - -The lower the score, the more relevant the keyword. - -## Example (Python) +### Basic Usage ```python import yake @@ -58,85 +47,90 @@ for kw in keywords: print(kw) ``` -#### Usage (Command line) +### Highlighting Keywords -How to use it on your favorite command line +```python +from yake.highlight import TextHighlighter -``` bash +th = TextHighlighter(max_ngram_size=3) +highlighted = th.highlight(text, keywords) +``` + +## How It Works + +YAKE! assigns relevance scores to keywords based on multiple features: +- Term frequency +- Term position +- Word casing +- Sentence placement +- Contextual diversity + +The lower the score, the more relevant the keyword. + +## Command Line Usage + +```bash Usage: yake [OPTIONS] Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] * - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. + -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram + -df, --dedup-func [leve|jaro|seqm] + Deduplication function + -dl, --dedup-lim FLOAT Deduplication limiar + -ws, --window-size INTEGER Window size + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit ``` -##### Keyword Deduplication Methods in YAKE +## Keyword Deduplication Methods -In YAKE (Yet Another Keyword Extractor), the methods `levs`, `jaro`, and `seqm` are used to compute **string similarity** during the **keyword deduplication** process — that is, removing keywords that are too similar to each other. Here's what distinguishes each of these methods: +YAKE uses three methods to compute string similarity during keyword deduplication: -###### 🔤 1. `levs` — **Levenshtein Similarity** +### 1. `levs` — Levenshtein Similarity -* **What it is:** Measures the edit distance between two strings — i.e., how many operations (insertions, deletions, substitutions) are needed to turn one string into another. -* **How it's used here:** The distance is **normalized** by the length of the longer string, then converted to a **similarity score**. +* **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. * **Formula used:** ```python similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) ``` -* **Advantages:** - * Very accurate for small changes (e.g., "house" vs "horse"). - * Considers **character positions**. -* **Disadvantage:** - * **Slower** than other methods, due to calculating edit operations. +* **Best for:** Very accurate for small changes (e.g., "house" vs "horse") +* **Performance:** Medium speed -###### 2. `jaro` — **Jaro Similarity** +### 2. `jaro` — Jaro Similarity -* **What it is:** Measures similarity based on matching characters and their relative positions. -* **Note:** YAKE uses the `jellyfish` library implementation. -* **How it works:** Gives more weight to **nearby matching characters** and penalizes character misalignments. -* **Score:** Ranges from 0.0 (completely different) to 1.0 (identical). -* **Advantages:** - * More **tolerant of transpositions** (e.g., "maria" vs "maira"). - * Faster than Levenshtein. -* **Disadvantage:** - * May be less accurate for strings with big length differences. +* **What it is:** Measures similarity based on matching characters and their relative positions +* **Implementation:** Uses the `jellyfish` library +* **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") +* **Performance:** Fast -###### 3. `seqm` — **SequenceMatcher Ratio** +### 3. `seqm` — SequenceMatcher Ratio -* **What it is:** Uses Python's built-in `difflib.SequenceMatcher`, which measures similarity based on **common subsequences**. -* **How it works:** Detects matching blocks and computes a ratio: +* **What it is:** Uses Python's built-in `difflib.SequenceMatcher` +* **Formula:** ```python ratio = 2 * M / T ``` - where `M` is the number of matching characters, and `T` is the total number of characters in both strings. -* **Advantages:** - * Good for detecting shared blocks in longer strings. - * Reasonably fast. -* **Disadvantage:** - * Can be **too sensitive** to small changes in short strings. +* **Best for:** Good for detecting shared blocks in longer strings +* **Performance:** Fast -###### Which one to use? +### Comparison Table -| Name | Based on | Best for... | Performance | -|------|----------|-------------|------------| +| Method | Based on | Best for | Performance | +|--------|----------|----------|-------------| | `levs` | Edit operations | Typos and small changes | Medium | -| `jaro` | Matching character positions | Names and short strings with swaps | Fast | +| `jaro` | Matching positions | Names and short strings with swaps | Fast | | `seqm` | Common subsequences | General phrase similarity | Fast | -###### Practical Example: +### Practical Examples | Compared Strings | `levs` | `jaro` | `seqm` | |------------------|--------|--------|--------| @@ -145,28 +139,21 @@ where `M` is the number of matching characters, and `T` is the total number of c | "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | **Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. -###### Highlighting Keywords - -```python -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size=3) -highlighted = th.highlight(text, keywords) -``` ## Benchmarks YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. ## References -Please best cite suited work when using YAKE -In-depth journal paper at Information Sciences Journal +Please cite the appropriate work when using YAKE: + +### In-depth Journal Publication -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) +Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). **YAKE! Keyword Extraction from Single Documents using Multiple Local Features**. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [PDF](https://doi.org/10.1016/j.ins.2019.09.013) -ECIR'18 Best Short Paper +### ECIR'18 Best Short Paper -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **A Text Feature Based Automatic Keyword Extraction Method for Single Documents**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **YAKE! Collection-independent Automatic Keyword Extractor**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) \ No newline at end of file From 6b01aa926055e8dcb0a507326c0522526be46fd3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:37:54 +0100 Subject: [PATCH 087/118] homepage final form --- docs-site/content/docs/index.mdx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 9ef57d41..f20a24e8 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,9 +1,12 @@ # Yet Another Keyword Extractor (YAKE!) **Unsupervised, corpus-independent keyword extraction from single documents.** +--- YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. +--- + ## Key Features YAKE! is designed to be: @@ -12,6 +15,8 @@ YAKE! is designed to be: - 📄 **Single-document based** – no need for a reference corpus - ⚡ **Efficient** – lightweight and fast +--- + ## Why YAKE!? In an era where data is abundant and multilingual content is common, keyword extraction must be fast, adaptable, and reliable. YAKE! is built to handle: @@ -21,6 +26,8 @@ In an era where data is abundant and multilingual content is common, keyword ext Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. +--- + ## Quick Start ### Try It Out @@ -56,6 +63,8 @@ th = TextHighlighter(max_ngram_size=3) highlighted = th.highlight(text, keywords) ``` +--- + ## How It Works YAKE! assigns relevance scores to keywords based on multiple features: @@ -67,6 +76,8 @@ YAKE! assigns relevance scores to keywords based on multiple features: The lower the score, the more relevant the keyword. +--- + ## Command Line Usage ```bash @@ -86,6 +97,8 @@ Options: --help Show this message and exit ``` +--- + ## Keyword Deduplication Methods YAKE uses three methods to compute string similarity during keyword deduplication: @@ -140,10 +153,14 @@ where `M` is the number of matching characters, and `T` is the total number of c **Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. +--- + ## Benchmarks YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. +--- + ## References Please cite the appropriate work when using YAKE: From f903ca259c290c000f94d66913f62b8dc43d3e44 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Fri, 16 May 2025 19:29:23 +0100 Subject: [PATCH 088/118] cleaning up and link redirection working --- README.md | 25 +- docs-site/package.json | 1 + docs/AUTHORS.rst | 21 - docs/strategy.ini | 26 - package-lock.json | 4366 ++++------------------------------------ package.json | 5 + 6 files changed, 426 insertions(+), 4018 deletions(-) delete mode 100644 docs/AUTHORS.rst delete mode 100644 docs/strategy.ini create mode 100644 package.json diff --git a/README.md b/README.md index 68b1c45f..de509fa7 100644 --- a/README.md +++ b/README.md @@ -46,35 +46,14 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods-in-yake) +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods) #### Usage (Python) ```python import yake -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ -"was founded by Goldbloom and Ben Hamner in 2010. "\ -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ -"it has managed to stay well ahead of them by focusing on its specific niche. "\ -"The service is basically the de facto home for running data science and machine learning competitions. "\ -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ -"will keep the service running - likely under its current name. While the acquisition is probably more about "\ -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ -"share this code on the platform (the company previously called them 'scripts'). "\ -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ -"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " +text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " # Simple usage with default parameters kw_extractor = yake.KeywordExtractor() diff --git a/docs-site/package.json b/docs-site/package.json index 0a95f634..98de417c 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "build": "next build", + "deploy": "gh-pages -d out", "dev": "next dev --turbopack", "start": "next start", "postinstall": "fumadocs-mdx" diff --git a/docs/AUTHORS.rst b/docs/AUTHORS.rst deleted file mode 100644 index 3dda713c..00000000 --- a/docs/AUTHORS.rst +++ /dev/null @@ -1,21 +0,0 @@ -======= -Credits -======= - -Development ----------------- - -* Ricardo Campos -* Vitor Mangaravite -* Arian Pasquali -* Alípio Jorge - -Contributors ------------- - -None yet. Why not be the first? - - -DevOps - Docker ----------------- -* João Rocha da Silva diff --git a/docs/strategy.ini b/docs/strategy.ini deleted file mode 100644 index 0fe10d28..00000000 --- a/docs/strategy.ini +++ /dev/null @@ -1,26 +0,0 @@ -# Authorized and unauthorized licenses in LOWER CASE -[Licenses] -authorized_licenses: - bsd - new bsd - bsd license - new bsd license - simplified bsd - apache - apache 2.0 - apache software license - gnu lgpl - lgpl with exceptions or zpl - isc license - isc license (iscl) - mit - mit license - python software foundation license - zpl 2.1 - -unauthorized_licenses: - gpl v3 - -[Authorized Packages] -# Python software license (see http://zesty.ca/python/uuid.README.txt) -uuid: 1.30 diff --git a/package-lock.json b/package-lock.json index b7c742cc..852326a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,4112 +4,582 @@ "requires": true, "packages": { "": { - "dependencies": { - "@maximai/fumadocs-ui": "^12.5.4-beta1", - "fumadocs-ui": "^15.2.15" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", - "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", - "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", - "dependencies": { - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", - "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", - "dependencies": { - "@floating-ui/core": "^1.7.0", - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", - "dependencies": { - "@floating-ui/dom": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", - "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", - "dependencies": { - "tslib": "2" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", - "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", - "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", - "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", - "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", - "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", - "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", - "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", - "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", - "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", - "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", - "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", - "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", - "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", - "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", - "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", - "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", - "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", - "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", - "cpu": [ - "wasm32" - ], - "optional": true, - "peer": true, - "dependencies": { - "@emnapi/runtime": "^1.4.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", - "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", - "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@maximai/fumadocs-ui": { - "version": "12.5.4-beta1", - "resolved": "https://registry.npmjs.org/@maximai/fumadocs-ui/-/fumadocs-ui-12.5.4-beta1.tgz", - "integrity": "sha512-lC/LfNmU02aWFz7k14LJiGojIfUrps4nPBQPc0xvlx5fhQATseYMWfJatzNhUxfRnE5TnSOa/OIX9+wsoqbJbw==", - "dependencies": { - "@radix-ui/react-accordion": "^1.2.0", - "@radix-ui/react-collapsible": "^1.1.0", - "@radix-ui/react-dialog": "^1.1.1", - "@radix-ui/react-direction": "^1.1.0", - "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-scroll-area": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.0", - "@tailwindcss/typography": "^0.5.13", - "class-variance-authority": "^0.7.0", - "cmdk": "^1.0.0", - "fumadocs-core": "12.5.4", - "lucide-react": "^0.408.0", - "next-themes": "^0.3.0", - "react-medium-image-zoom": "^5.2.8", - "swr": "^2.2.5", - "tailwind-merge": "^2.4.0" - }, - "peerDependencies": { - "next": ">= 14.1.0", - "react": ">= 18", - "react-dom": ">= 18" - } - }, - "node_modules/@next/env": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.2.tgz", - "integrity": "sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==", - "peer": true - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.2.tgz", - "integrity": "sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz", - "integrity": "sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz", - "integrity": "sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz", - "integrity": "sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz", - "integrity": "sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz", - "integrity": "sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz", - "integrity": "sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz", - "integrity": "sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@orama/orama": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.6.tgz", - "integrity": "sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==", - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", - "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", - "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==" - }, - "node_modules/@radix-ui/react-accordion": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.10.tgz", - "integrity": "sha512-x+URzV1siKmeXPSUIQ22L81qp2eOhjpy3tgteF+zOr4d1u0qJnFuyBF4MoQRhmKP6ivDxlvDAvqaF77gh7DOIw==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-collapsible": "1.1.10", - "@radix-ui/react-collection": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.6.tgz", - "integrity": "sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==", - "dependencies": { - "@radix-ui/react-primitive": "2.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collapsible": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.10.tgz", - "integrity": "sha512-O2mcG3gZNkJ/Ena34HurA3llPOEA/M4dJtIRMa6y/cknRDC8XY5UZBInKTsUwW5cUue9A4k0wi1XU5fKBzKe1w==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.6.tgz", - "integrity": "sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-slot": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.13.tgz", - "integrity": "sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.9", - "@radix-ui/react-focus-guards": "1.1.2", - "@radix-ui/react-focus-scope": "1.1.6", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.8", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-slot": "1.2.2", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", - "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.9.tgz", - "integrity": "sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", - "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.6.tgz", - "integrity": "sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-navigation-menu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.12.tgz", - "integrity": "sha512-iExvawdu7n6DidDJRU5pMTdi+Z3DaVPN4UZbAGuTs7nJA8P4RvvkEz+XYI2UJjb/Hh23RrH19DakgZNLdaq9Bw==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-collection": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.9", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-visually-hidden": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popover": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.13.tgz", - "integrity": "sha512-84uqQV3omKDR076izYgcha6gdpN8m3z6w/AeJ83MSBJYVG/AbOHdLjAgsPZkeC/kt+k64moXFCnio8BbqXszlw==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.9", - "@radix-ui/react-focus-guards": "1.1.2", - "@radix-ui/react-focus-scope": "1.1.6", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.6", - "@radix-ui/react-portal": "1.1.8", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-slot": "1.2.2", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.6.tgz", - "integrity": "sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-rect": "1.1.1", - "@radix-ui/react-use-size": "1.1.1", - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.8.tgz", - "integrity": "sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==", - "dependencies": { - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", - "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.2.tgz", - "integrity": "sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==", - "dependencies": { - "@radix-ui/react-slot": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.9.tgz", - "integrity": "sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-collection": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.8.tgz", - "integrity": "sha512-K5h1RkYA6M0Sn61BV5LQs686zqBsSC0sGzL4/Gw4mNnjzrQcGSc6YXfC6CRFNaGydSdv5+M8cb0eNsOGo0OXtQ==", - "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.2.tgz", - "integrity": "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.11.tgz", - "integrity": "sha512-4FiKSVoXqPP/KfzlB7lwwqoFV6EPwkrrqGp9cUYXjwDYHhvpnqq79P+EPHKcdoTE7Rl8w/+6s9rTlsfXHES9GA==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-roving-focus": "1.1.9", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", - "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", - "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", - "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", - "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", - "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", - "dependencies": { - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", - "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.2.tgz", - "integrity": "sha512-ORCmRUbNiZIv6uV5mhFrhsIKw4UX/N3syZtyqvry61tbGm4JlgQuSn0hk5TwCARsCjkcnuRkSdCE3xfb+ADHew==", - "dependencies": { - "@radix-ui/react-primitive": "2.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", - "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" - }, - "node_modules/@shikijs/core": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", - "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", - "dependencies": { - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", - "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.2.0" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", - "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1" - } - }, - "node_modules/@shikijs/langs": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", - "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/rehype": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-1.29.2.tgz", - "integrity": "sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==", - "dependencies": { - "@shikijs/types": "1.29.2", - "@types/hast": "^3.0.4", - "hast-util-to-string": "^3.0.1", - "shiki": "1.29.2", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0" - } - }, - "node_modules/@shikijs/themes": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", - "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/transformers": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.29.2.tgz", - "integrity": "sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA==", - "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "peer": true - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "peer": true, - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", - "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "peer": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001717", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", - "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "dependencies": { - "clsx": "^2.1.1" - }, - "funding": { - "url": "https://polar.sh/cva" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "peer": true - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cmdk": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", - "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", - "dependencies": { - "@radix-ui/react-compose-refs": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-id": "^1.1.0", - "@radix-ui/react-primitive": "^2.0.2" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true, - "peer": true - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, - "peer": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/compute-scroll-into-view": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", - "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/estree-util-attach-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", - "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-visit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/flexsearch": { - "version": "0.7.21", - "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz", - "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==" - }, - "node_modules/fumadocs-core": { - "version": "12.5.4", - "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-12.5.4.tgz", - "integrity": "sha512-KE6vWCSijo2xYEq+xvebNcNrPK9gcIbigMoZn20AIoOVg7aKGkkshTjwR6M2lXdq9PyV/BdgAO5u+sWlTMebeQ==", - "dependencies": { - "@formatjs/intl-localematcher": "^0.5.4", - "@shikijs/rehype": "^1.10.3", - "@shikijs/transformers": "^1.10.3", - "flexsearch": "0.7.21", - "github-slugger": "^2.0.0", - "negotiator": "^0.6.3", - "npm-to-yarn": "^2.2.1", - "react-remove-scroll": "^2.5.10", - "remark": "^15.0.0", - "remark-gfm": "^4.0.0", - "remark-mdx": "^3.0.1", - "scroll-into-view-if-needed": "^3.1.0", - "shiki": "^1.10.3", - "swr": "^2.2.5", - "unist-util-visit": "^5.0.0" - }, - "peerDependencies": { - "next": ">= 14.1.0", - "react": ">= 18", - "react-dom": ">= 18" - } - }, - "node_modules/fumadocs-ui": { - "version": "15.2.15", - "resolved": "https://registry.npmjs.org/fumadocs-ui/-/fumadocs-ui-15.2.15.tgz", - "integrity": "sha512-2CkzLkv0bP7B0jShrpmHmWLXMcpbHdaFiWDG/l4AWkGf5nN1QhirM1tSsXuwYLmQX9OZXO7xB3HU6smAuUA+kA==", - "dependencies": { - "@radix-ui/react-accordion": "^1.2.8", - "@radix-ui/react-collapsible": "^1.1.8", - "@radix-ui/react-dialog": "^1.1.11", - "@radix-ui/react-direction": "^1.1.1", - "@radix-ui/react-navigation-menu": "^1.2.10", - "@radix-ui/react-popover": "^1.1.11", - "@radix-ui/react-scroll-area": "^1.2.6", - "@radix-ui/react-slot": "^1.2.0", - "@radix-ui/react-tabs": "^1.1.9", - "class-variance-authority": "^0.7.1", - "fumadocs-core": "15.2.15", - "lodash.merge": "^4.6.2", - "next-themes": "^0.4.6", - "postcss-selector-parser": "^7.1.0", - "react-medium-image-zoom": "^5.2.14", - "tailwind-merge": "^3.2.0" - }, - "peerDependencies": { - "next": "14.x.x || 15.x.x", - "react": "18.x.x || 19.x.x", - "react-dom": "18.x.x || 19.x.x", - "tailwindcss": "^3.4.14 || ^4.0.0" - }, - "peerDependenciesMeta": { - "tailwindcss": { - "optional": true - } - } - }, - "node_modules/fumadocs-ui/node_modules/@formatjs/intl-localematcher": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", - "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/core": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.4.0.tgz", - "integrity": "sha512-0YOzTSRDn/IAfQWtK791gs1u8v87HNGToU6IwcA3K7nPoVOrS2Dh6X6A6YfXgPTSkTwR5y6myk0MnI0htjnwrA==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/engine-javascript": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.4.0.tgz", - "integrity": "sha512-1ywDoe+z/TPQKj9Jw0eU61B003J9DqUFRfH+DVSzdwPUFhR7yOmfyLzUrFz0yw8JxFg/NgzXoQyyykXgO21n5Q==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.3" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/engine-oniguruma": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.0.tgz", - "integrity": "sha512-zwcWlZ4OQuJ/+1t32ClTtyTU1AiDkK1lhtviRWoq/hFqPjCNyLj22bIg9rB7BfoZKOEOfrsGz7No33BPCf+WlQ==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/langs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.0.tgz", - "integrity": "sha512-bQkR+8LllaM2duU9BBRQU0GqFTx7TuF5kKlw/7uiGKoK140n1xlLAwCgXwSxAjJ7Htk9tXTFwnnsJTCU5nDPXQ==", - "dependencies": { - "@shikijs/types": "3.4.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/rehype": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-3.4.0.tgz", - "integrity": "sha512-wm7RTSmrcmjZg+F9JRrsH0Brwi36joUMXkUWIDmBGW+XExNEi8Xjmmp2NOBXa3DujZtnL6Dbcg7V6gtZabGoXw==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@types/hast": "^3.0.4", - "hast-util-to-string": "^3.0.1", - "shiki": "3.4.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/themes": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.0.tgz", - "integrity": "sha512-YPP4PKNFcFGLxItpbU0ZW1Osyuk8AyZ24YEFaq04CFsuCbcqydMvMUTi40V2dkc0qs1U2uZFrnU6s5zI6IH+uA==", - "dependencies": { - "@shikijs/types": "3.4.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/transformers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.4.0.tgz", - "integrity": "sha512-GrGaOj1/I6h75IU0VvjdWDpqGCynx0bqHzd1rErBTGxrcmusYIBhrV7aEySWyJ6HHb9figeXfcNxUFS1HKUfBw==", - "dependencies": { - "@shikijs/core": "3.4.0", - "@shikijs/types": "3.4.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/types": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.0.tgz", - "integrity": "sha512-EUT/0lGiE//7j5N/yTMNMT3eCWNcHJLrRKxT0NDXWIfdfSmFJKfPX7nMmRBrQnWboAzIsUziCThrYMMhjbMS1A==", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/fumadocs-ui/node_modules/fumadocs-core": { - "version": "15.2.15", - "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-15.2.15.tgz", - "integrity": "sha512-Ly1xMGW8HYirs/O2yLX3cGHcOM/1nfKTk7gKiQ5J4wycGE1KdWFnGW2S60nLP8itgeqlYAp35FaNDNRDxCzWgA==", - "dependencies": { - "@formatjs/intl-localematcher": "^0.6.1", - "@orama/orama": "^3.1.6", - "@shikijs/rehype": "^3.3.0", - "@shikijs/transformers": "^3.3.0", - "github-slugger": "^2.0.0", - "hast-util-to-estree": "^3.1.3", - "hast-util-to-jsx-runtime": "^2.3.6", - "image-size": "^2.0.2", - "negotiator": "^1.0.0", - "react-remove-scroll": "^2.6.3", - "remark": "^15.0.0", - "remark-gfm": "^4.0.1", - "scroll-into-view-if-needed": "^3.1.0", - "shiki": "^3.3.0", - "unist-util-visit": "^5.0.0" - }, - "peerDependencies": { - "@oramacloud/client": "1.x.x || 2.x.x", - "algoliasearch": "4.24.0", - "next": "14.x.x || 15.x.x", - "react": "18.x.x || 19.x.x", - "react-dom": "18.x.x || 19.x.x" - }, - "peerDependenciesMeta": { - "@oramacloud/client": { - "optional": true - }, - "algoliasearch": { - "optional": true - }, - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/fumadocs-ui/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fumadocs-ui/node_modules/next-themes": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", - "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/fumadocs-ui/node_modules/oniguruma-to-es": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", - "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", - "dependencies": { - "oniguruma-parser": "^0.12.1", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, - "node_modules/fumadocs-ui/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fumadocs-ui/node_modules/regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", - "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/fumadocs-ui/node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/fumadocs-ui/node_modules/shiki": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.4.0.tgz", - "integrity": "sha512-Ni80XHcqhOEXv5mmDAvf5p6PAJqbUc/RzFeaOqk+zP5DLvTPS3j0ckvA+MI87qoxTQ5RGJDVTbdl/ENLSyyAnQ==", - "dependencies": { - "@shikijs/core": "3.4.0", - "@shikijs/engine-javascript": "3.4.0", - "@shikijs/engine-oniguruma": "3.4.0", - "@shikijs/langs": "3.4.0", - "@shikijs/themes": "3.4.0", - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/fumadocs-ui/node_modules/tailwind-merge": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", - "integrity": "sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" - }, - "node_modules/hast-util-to-estree": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", - "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-attach-comments": "^3.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/image-size": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", - "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=16.x" - } - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "optional": true, - "peer": true - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lucide-react": { - "version": "0.408.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.408.0.tgz", - "integrity": "sha512-8kETAAeWmOvtGIr7HPHm51DXoxlfkNncQ5FZWXR+abX8saQwMYXANWIkUstaYtcKSo/imOe/q+tVFA8ANzdSVA==", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/markdown-table": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", - "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", - "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-gfm-autolink-literal": "^2.0.0", - "mdast-util-gfm-footnote": "^2.0.0", - "mdast-util-gfm-strikethrough": "^2.0.0", - "mdast-util-gfm-table": "^2.0.0", - "mdast-util-gfm-task-list-item": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-find-and-replace": "^3.0.0", - "micromark-util-character": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", - "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^2.0.0", - "micromark-extension-gfm-footnote": "^2.0.0", - "micromark-extension-gfm-strikethrough": "^2.0.0", - "micromark-extension-gfm-table": "^2.0.0", - "micromark-extension-gfm-tagfilter": "^2.0.0", - "micromark-extension-gfm-task-list-item": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", - "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", - "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", - "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", - "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^3.0.0", - "micromark-extension-mdx-jsx": "^3.0.0", - "micromark-extension-mdx-md": "^2.0.0", - "micromark-extension-mdxjs-esm": "^3.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", - "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", - "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", - "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "devDependencies": { + "gh-pages": "^6.3.0" + } }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">= 8" } }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 8" } }, - "node_modules/next": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/next/-/next-15.3.2.tgz", - "integrity": "sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==", - "peer": true, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { - "@next/env": "15.3.2", - "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.15", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.3.2", - "@next/swc-darwin-x64": "15.3.2", - "@next/swc-linux-arm64-gnu": "15.3.2", - "@next/swc-linux-arm64-musl": "15.3.2", - "@next/swc-linux-x64-gnu": "15.3.2", - "@next/swc-linux-x64-musl": "15.3.2", - "@next/swc-win32-arm64-msvc": "15.3.2", - "@next/swc-win32-x64-msvc": "15.3.2", - "sharp": "^0.34.1" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next-themes": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", - "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18", - "react-dom": "^16.8 || ^17 || ^18" + "node": ">= 8" } }, - "node_modules/npm-to-yarn": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-2.2.1.tgz", - "integrity": "sha512-O/j/ROyX0KGLG7O6Ieut/seQ0oiTpHF2tXAcFbpdTLQFiaNtkyTXXocM1fwpaa60dg1qpWj0nHlbNhx6qwuENQ==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + "node": ">=8" } }, - "node_modules/oniguruma-parser": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", - "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==" - }, - "node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" - } + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" + "fill-range": "^7.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, - "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "peer": true - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=18" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "path-type": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/property-information": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", - "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "peer": true, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" + "reusify": "^1.0.4" } }, - "node_modules/react-medium-image-zoom": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.14.tgz", - "integrity": "sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/rpearce" - } - ], - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" } }, - "node_modules/react-remove-scroll": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", - "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=8" } }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", - "dependencies": { - "regex": "^5.1.1", - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==" - }, - "node_modules/remark": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", - "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", - "dependencies": { - "@types/mdast": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/remark-gfm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", - "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-gfm": "^3.0.0", - "micromark-extension-gfm": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, "dependencies": { - "mdast-util-mdx": "^3.0.0", - "micromark-extension-mdxjs": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.14" } }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "node_modules/gh-pages": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", + "dev": true, "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" + "async": "^3.2.4", + "commander": "^13.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^11.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-to-markdown": "^2.0.0", - "unified": "^11.0.0" + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" + "engines": { + "node": ">=10" } }, - "node_modules/scroll-into-view-if-needed": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", - "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { - "compute-scroll-into-view": "^3.0.2" - } - }, - "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/sharp": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", - "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", - "hasInstallScript": true, - "optional": true, - "peer": true, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.7.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.1", - "@img/sharp-darwin-x64": "0.34.1", - "@img/sharp-libvips-darwin-arm64": "1.1.0", - "@img/sharp-libvips-darwin-x64": "1.1.0", - "@img/sharp-libvips-linux-arm": "1.1.0", - "@img/sharp-libvips-linux-arm64": "1.1.0", - "@img/sharp-libvips-linux-ppc64": "1.1.0", - "@img/sharp-libvips-linux-s390x": "1.1.0", - "@img/sharp-libvips-linux-x64": "1.1.0", - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", - "@img/sharp-libvips-linuxmusl-x64": "1.1.0", - "@img/sharp-linux-arm": "0.34.1", - "@img/sharp-linux-arm64": "0.34.1", - "@img/sharp-linux-s390x": "0.34.1", - "@img/sharp-linux-x64": "0.34.1", - "@img/sharp-linuxmusl-arm64": "0.34.1", - "@img/sharp-linuxmusl-x64": "0.34.1", - "@img/sharp-wasm32": "0.34.1", - "@img/sharp-win32-ia32": "0.34.1", - "@img/sharp-win32-x64": "0.34.1" - } - }, - "node_modules/shiki": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", - "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", - "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/langs": "1.29.2", - "@shikijs/themes": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "optional": true, - "peer": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "peer": true, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">= 4" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "peer": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=0.10.0" } }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" + "is-extglob": "^2.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/style-to-js": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", - "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", - "dependencies": { - "style-to-object": "1.0.8" + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" } }, - "node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { - "inline-style-parser": "0.2.4" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "peer": true, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "client-only": "0.0.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } + "node": ">=8" } }, - "node_modules/swr": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", - "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "dependencies": { - "dequal": "^2.0.3", - "use-sync-external-store": "^1.4.0" + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" }, - "peerDependencies": { - "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/tailwind-merge": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", - "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tailwindcss": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz", - "integrity": "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==", - "peer": true - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8.6" } }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0" + "p-limit": "^2.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-position-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", - "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/unist-util-stringify-position": { + "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true + "node": ">=8" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" + "escape-string-regexp": "^1.0.2" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", - "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" + "is-number": "^7.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8.0" } }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "escape-string-regexp": "^1.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" } } } diff --git a/package.json b/package.json new file mode 100644 index 00000000..1b58964b --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "gh-pages": "^6.3.0" + } +} From b7565b5a6bbc29e0200c5a22c491fa65975115a3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 19 May 2025 19:39:58 +0100 Subject: [PATCH 089/118] doc site update --- docs-site/content/docs/About.mdx | 17 + .../content/docs/{index.mdx => Home.mdx} | 0 docs-site/content/docs/core/highlight.mdx | 2 +- docs-site/content/docs/core/yake.mdx | 482 ++++++++---------- yake/core/Levenshtein.py | 88 +++- .../__pycache__/highlight.cpython-310.pyc | Bin 12667 -> 15086 bytes yake/core/highlight.py | 67 ++- 7 files changed, 369 insertions(+), 287 deletions(-) create mode 100644 docs-site/content/docs/About.mdx rename docs-site/content/docs/{index.mdx => Home.mdx} (100%) diff --git a/docs-site/content/docs/About.mdx b/docs-site/content/docs/About.mdx new file mode 100644 index 00000000..657219bf --- /dev/null +++ b/docs-site/content/docs/About.mdx @@ -0,0 +1,17 @@ +This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at INESCTEC. It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). + +Authors +Ricardo Campos is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). + +Vítor Mangaravite is a research intern of LIAAD/INESC TEC - INESC Technology. He has MSc and BSc in Computer Science by Universidade Federal de Minas Gerais and Universidade Federal de Ouro Preto, respectively. + +Arian Pasquali is a researcher associated to University of Porto and the Artificial Intelligence and Decision Support Laboratory at INESC TEC - INESC Technology. He has MSc in Computer Science by University of Porto with specialization in data mining. + +Alípio M. Jorge is an associate professor at the Department of Computer Science of the Faculty of Science of the U. Porto and the coordinator of LIAAD/INESC TEC - INESC Technology and Science, the Artificial Intelligence and Decision Support Lab of U. Porto since 2012. He is PhD in Computer Science by U. Porto. + +Célia Nunes is an Assistant Professor at the Department of Mathematics of the University of Beira Interior (UBI) and member of CMA - Center of Mathematics and Aplications, UBI. She is PhD in Mathematics by UBI, MSc. on Applied Mathematics by the University of Évora (UE) and BSc. in Mathematics - Probability and Statistics (UE). + +Adam Jatowt is an Associate Professor at the Department of Computer Science, University of Innsbruck. He has received his Ph.D. in Information Science and Technology from the University of Tokyo, Japan in 2005. + +Aknowledgements +Project “TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020” is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/Home.mdx similarity index 100% rename from docs-site/content/docs/index.mdx rename to docs-site/content/docs/Home.mdx diff --git a/docs-site/content/docs/core/highlight.mdx b/docs-site/content/docs/core/highlight.mdx index c853e2e1..ae45ca1d 100644 --- a/docs-site/content/docs/core/highlight.mdx +++ b/docs-site/content/docs/core/highlight.mdx @@ -23,7 +23,7 @@ DEFAULT_HIGHLIGHT_PRE = "" DEFAULT_HIGHLIGHT_POST = "" ``` -## Class Definitions +## Constructor ### NgramData diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/core/yake.mdx index 7cc1ecfe..7489252d 100644 --- a/docs-site/content/docs/core/yake.mdx +++ b/docs-site/content/docs/core/yake.mdx @@ -1,15 +1,11 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' +KeywordExtractor Class +The KeywordExtractor class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. -# KeywordExtractor Class +Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation. -The `KeywordExtractor` class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. - -> **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. - -## Module Overview - -```python -""" +Module Overview +python""" Keyword extraction module for YAKE. This module provides the KeywordExtractor class which serves as the main entry point @@ -22,12 +18,8 @@ import os import jellyfish from yake.data import DataCore from .Levenshtein import Levenshtein -``` - -The `KeywordExtractor` class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. - -## Class Definition - +The KeywordExtractor class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. +Constructor @@ -38,49 +30,47 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def __init__(self, **kwargs): """ Initialize the KeywordExtractor with configuration parameters. - - Args: - **kwargs: Configuration parameters including: - lan (str): Language for stopwords (default: "en") - n (int): Maximum n-gram size (default: 3) - dedup_lim (float): Similarity threshold for deduplication (default: 0.9) - dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") - window_size (int): Size of word window for co-occurrence (default: 1) - top (int): Maximum number of keywords to extract (default: 20) - features (list): List of features to use for scoring (default: None = all features) - stopwords (set): Custom set of stopwords (default: None = use language-specific) - """ - # Initialize configuration dictionary with default values - self.config = { - "lan": kwargs.get("lan", "en"), - "n": kwargs.get("n", 3), - "dedup_lim": kwargs.get("dedup_lim", 0.9), - "dedup_func": kwargs.get("dedup_func", "seqm"), - "window_size": kwargs.get("window_size", 1), - "top": kwargs.get("top", 20), - "features": kwargs.get("features", None), - } - - # Load appropriate stopwords and deduplication function - self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) - self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) - ``` - + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values + self.config = { + "lan": kwargs.get("lan", "en"), + "n": kwargs.get("n", 3), + "dedup_lim": kwargs.get("dedup_lim", 0.9), + "dedup_func": kwargs.get("dedup_func", "seqm"), + "window_size": kwargs.get("window_size", 1), + "top": kwargs.get("top", 20), + "features": kwargs.get("features", None), + } + + # Load appropriate stopwords and deduplication function + self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) + self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) + ``` + - -**Parameters:** -- `lan` (str, optional): Language for stopwords (default: "en") -- `n` (int, optional): Maximum n-gram size (default: 3) -- `dedup_lim` (float, optional): Similarity threshold for deduplication (default: 0.9) -- `dedup_func` (str, optional): Deduplication function to use (default: "seqm") -- `window_size` (int, optional): Size of word window for co-occurrence (default: 1) -- `top` (int, optional): Maximum number of keywords to return (default: 20) -- `features` (list, optional): List of features to use for scoring (default: None = all features) -- `stopwords` (set, optional): Custom stopwords set (default: None, loads from language file) - -## Core Methods - +Parameters: + +lan (str, optional): Language for stopwords (default: "en") +n (int, optional): Maximum n-gram size (default: 3) +dedup_lim (float, optional): Similarity threshold for deduplication (default: 0.9) +dedup_func (str, optional): Deduplication function to use (default: "seqm") +window_size (int, optional): Size of word window for co-occurrence (default: 1) +top (int, optional): Maximum number of keywords to return (default: 20) +features (list, optional): List of features to use for scoring (default: None = all features) +stopwords (set, optional): Custom stopwords set (default: None, loads from language file) + +Core Methods @@ -91,87 +81,86 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def extract_keywords(self, text): """ Extract keywords from text. + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords - - Args: - text (str): The input text to extract keywords from - - Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) - """ - # Handle empty input - if not text: - return [] - - # Normalize text by replacing newlines with spaces - text = text.replace("\n", " ") - - # Create a configuration dictionary for DataCore - core_config = { - "windows_size": self.config["window_size"], - "n": self.config["n"], - } - - # Initialize the data core with the text - dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) - - # Build features for single terms and multi-word terms - dc.build_single_terms_features(features=self.config["features"]) - dc.build_mult_terms_features(features=self.config["features"]) - - # Collect and sort all valid candidates by score (lower is better) - result_set = [] - candidates_sorted = sorted( - [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h - ) - - # If deduplication is disabled, return all candidates up to the limit - if self.config["dedup_lim"] >= 1.0: - return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ - : self.config["top"] - ] - - # Perform deduplication by comparing candidates - for cand in candidates_sorted: - should_add = True - # Check if this candidate is too similar to any already selected - for h, cand_result in result_set: - if ( - self.dedup_function(cand.unique_kw, cand_result.unique_kw) - > self.config["dedup_lim"] - ): - should_add = False - break - - # Add candidate if it passes deduplication - if should_add: - result_set.append((cand.h, cand)) - - # Stop once we have enough candidates - if len(result_set) == self.config["top"]: + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input + if not text: + return [] + + # Normalize text by replacing newlines with spaces + text = text.replace("\n", " ") + + # Create a configuration dictionary for DataCore + core_config = { + "windows_size": self.config["window_size"], + "n": self.config["n"], + } + + # Initialize the data core with the text + dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + + # Build features for single terms and multi-word terms + dc.build_single_terms_features(features=self.config["features"]) + dc.build_mult_terms_features(features=self.config["features"]) + + # Collect and sort all valid candidates by score (lower is better) + result_set = [] + candidates_sorted = sorted( + [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h + ) + + # If deduplication is disabled, return all candidates up to the limit + if self.config["dedup_lim"] >= 1.0: + return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ + : self.config["top"] + ] + + # Perform deduplication by comparing candidates + for cand in candidates_sorted: + should_add = True + # Check if this candidate is too similar to any already selected + for h, cand_result in result_set: + if ( + self.dedup_function(cand.unique_kw, cand_result.unique_kw) + > self.config["dedup_lim"] + ): + should_add = False break - # Format results as (keyword, score) tuples - return [(cand.kw, h) for (h, cand) in result_set] - ``` - + # Add candidate if it passes deduplication + if should_add: + result_set.append((cand.h, cand)) + + # Stop once we have enough candidates + if len(result_set) == self.config["top"]: + break + + # Format results as (keyword, score) tuples + return [(cand.kw, h) for (h, cand) in result_set] + ``` + +Parameters: -**Parameters:** -- `text` (str): The text to extract keywords from +text (str): The text to extract keywords from -**Returns:** -- list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) +Returns: -## Helper Methods +list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) +Helper Methods @@ -182,46 +171,44 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def _load_stopwords(self, stopwords): """ Load stopwords from file or use provided set. + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use - This method handles the loading of language-specific stopwords from - the appropriate resource file, falling back to a language-agnostic - list if the specific language is not available. - - Args: - stopwords (set, optional): Custom set of stopwords to use - - Returns: - set: A set of stopwords for filtering non-content words - """ - # Use provided stopwords if available - if stopwords is not None: - return set(stopwords) - - # Determine the path to the appropriate stopword list - dir_path = os.path.dirname(os.path.realpath(__file__)) - local_path = os.path.join( - "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" - ) - - # Fall back to language-agnostic list if specific language not available - if not os.path.exists(os.path.join(dir_path, local_path)): - local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - - resource_path = os.path.join(dir_path, local_path) - - # Attempt to read the stopword file with UTF-8 encoding - try: - with open(resource_path, encoding="utf-8") as stop_file: - return set(stop_file.read().lower().split("\n")) - except UnicodeDecodeError: - # Fall back to ISO-8859-1 encoding if UTF-8 fails - print("Warning: reading stopword list as ISO-8859-1") - with open(resource_path, encoding="ISO-8859-1") as stop_file: - return set(stop_file.read().lower().split("\n")) - ``` - + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available + if stopwords is not None: + return set(stopwords) + + # Determine the path to the appropriate stopword list + dir_path = os.path.dirname(os.path.realpath(__file__)) + local_path = os.path.join( + "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" + ) + + # Fall back to language-agnostic list if specific language not available + if not os.path.exists(os.path.join(dir_path, local_path)): + local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") + + resource_path = os.path.join(dir_path, local_path) + + # Attempt to read the stopword file with UTF-8 encoding + try: + with open(resource_path, encoding="utf-8") as stop_file: + return set(stop_file.read().lower().split("\n")) + except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails + print("Warning: reading stopword list as ISO-8859-1") + with open(resource_path, encoding="ISO-8859-1") as stop_file: + return set(stop_file.read().lower().split("\n")) + ``` + - _get_dedup_function(func_name) @@ -231,30 +218,27 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def _get_dedup_function(self, func_name): """ Retrieve the appropriate deduplication function. + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use - Maps the requested string similarity function name to the corresponding - method implementation for keyword deduplication. - - Args: - func_name (str): Name of the deduplication function to use - - Returns: - function: Reference to the selected string similarity function - """ - # Map function names to their implementations - return { - "jaro_winkler": self.jaro, - "jaro": self.jaro, - "sequencematcher": self.seqm, - "seqm": self.seqm, - }.get(func_name.lower(), self.levs) - ``` - + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations + return { + "jaro_winkler": self.jaro, + "jaro": self.jaro, + "sequencematcher": self.seqm, + "seqm": self.seqm, + }.get(func_name.lower(), self.levs) + ``` + - -## Similarity Functions - +Similarity Functions @@ -265,22 +249,20 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def jaro(self, cand1, cand2): """ Calculate Jaro similarity between two strings. + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare - A string metric measuring edit distance between two sequences, - with higher values indicating greater similarity. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return jellyfish.jaro(cand1, cand2) - ``` - + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return jellyfish.jaro(cand1, cand2) + ``` + - levs(cand1, cand2) @@ -290,22 +272,20 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def levs(self, cand1, cand2): """ Calculate normalized Levenshtein similarity between two strings. + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare - Computes the Levenshtein distance and normalizes it by the length - of the longer string, returning a similarity score. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) - ``` - + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) + ``` + - seqm(cand1, cand2) @@ -315,30 +295,25 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def seqm(self, cand1, cand2): """ Calculate sequence matcher ratio between two strings. + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare - Uses the Levenshtein ratio which measures the similarity between - two strings based on the minimum number of operations required - to transform one string into the other. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return Levenshtein.ratio(cand1, cand2) - ``` - + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return Levenshtein.ratio(cand1, cand2) + ``` + - -## Usage Examples - -### Basic Usage - -```python -from yake import KeywordExtractor +Usage Examples +Basic Usage +pythonfrom yake import KeywordExtractor text = """ Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence @@ -353,12 +328,8 @@ keywords = kw_extractor.extract_keywords(text) # Print the keywords and their scores for kw, score in keywords: print(f"{kw}: {score:.4f}") -``` - -### Customized Usage - -```python -from yake import KeywordExtractor +Customized Usage +pythonfrom yake import KeywordExtractor # Create a custom stopwords set custom_stopwords = {"the", "a", "an", "in", "on", "at", "of", "for", "with"} @@ -380,22 +351,17 @@ keywords = kw_extractor.extract_keywords(text) # Print the top 10 keywords for kw, score in keywords: print(f"{kw}: {score:.4f}") -``` - -## Deduplication Functions - -The `KeywordExtractor` supports multiple string similarity algorithms for deduplication: +Deduplication Functions +The KeywordExtractor supports multiple string similarity algorithms for deduplication: -1. **Jaro-Winkler** ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches - -2. **Levenshtein Ratio** ("levs"): Based on Levenshtein edit distance normalized by string length - -3. **SequenceMatcher** ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm - -## Dependencies +Jaro-Winkler ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches +Levenshtein Ratio ("levs"): Based on Levenshtein edit distance normalized by string length +SequenceMatcher ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm +Dependencies The module relies on: -- `os`: For file operations and path handling -- `jellyfish`: For Jaro-Winkler string similarity -- `yake.data.DataCore`: For core data representation -- `.Levenshtein`: For Levenshtein distance and ratio calculations \ No newline at end of file + +os: For file operations and path handling +jellyfish: For Jaro-Winkler string similarity +yake.data.DataCore: For core data representation +.Levenshtein: For Levenshtein distance and ratio calculations \ No newline at end of file diff --git a/yake/core/Levenshtein.py b/yake/core/Levenshtein.py index ea3674bd..c2f82a8f 100644 --- a/yake/core/Levenshtein.py +++ b/yake/core/Levenshtein.py @@ -1,34 +1,63 @@ -"""Module providing Levenshtein distance and ratio calculations.""" +""" +Module providing Levenshtein distance and ratio calculations. + +This module implements the Levenshtein (edit distance) algorithm for measuring +the difference between two strings. It provides both a raw distance calculation +and a normalized similarity ratio, which are useful for comparing text strings +and identifying potential matches with slight variations. +""" import numpy as np class Levenshtein: - """Class for computing Levenshtein distance and similarity ratio.""" + """ + Class for computing Levenshtein distance and similarity ratio. + + This class provides static methods to calculate the edit distance between + strings (how many insertions, deletions, or substitutions are needed to + transform one string into another) and to determine a normalized similarity + ratio between them. + + These metrics are widely used in fuzzy string matching, spell checking, + and approximate text similarity measurements. + """ @staticmethod def __ratio(distance: float, str_length: int) -> float: - """Calculate the similarity ratio based on distance and string length. - + """ + Calculate the similarity ratio based on distance and string length. + + This method normalizes the Levenshtein distance into a similarity ratio + between 0 and 1, where 1 represents identical strings and 0 represents + completely different strings. + Args: distance (float): The Levenshtein distance between two strings. str_length (int): The length of the longer string. Returns: - float: The similarity ratio. + float: The similarity ratio, where higher values indicate greater similarity. + The range is [0.0, 1.0] where 1.0 means identical strings. """ return 1 - float(distance) / float(str_length) @staticmethod def ratio(seq1: str, seq2: str) -> float: - """Compute the similarity ratio between two strings. - + """ + Compute the similarity ratio between two strings. + + This is the main method for determining string similarity. It calculates + the Levenshtein distance and then converts it to a ratio representing + how similar the strings are. + Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - float: The similarity ratio. + float: The similarity ratio between the two strings, ranging from 0.0 + (completely different) to 1.0 (identical). """ str_distance = Levenshtein.distance(seq1, seq2) str_length = max(len(seq1), len(seq2)) @@ -36,35 +65,50 @@ def ratio(seq1: str, seq2: str) -> float: @staticmethod def distance(seq1: str, seq2: str) -> int: - """Calculate the Levenshtein distance between two strings. + """ + Calculate the Levenshtein distance between two strings. + + This method implements the core Levenshtein algorithm, which calculates + the minimum number of single-character edits (insertions, deletions, or + substitutions) required to change one string into another. + + The algorithm uses dynamic programming with a matrix approach to efficiently + compute the minimum edit distance. Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - int: The Levenshtein distance. + int: The Levenshtein distance - the minimum number of edit operations + required to transform seq1 into seq2. """ + # Create a matrix of size (len(seq1)+1) x (len(seq2)+1) size_x = len(seq1) + 1 size_y = len(seq2) + 1 matrix = np.zeros((size_x, size_y)) + # Initialize the first row and column of the matrix for x in range(size_x): - matrix[x, 0] = x + matrix[x, 0] = x # Cost of deleting characters from seq1 for y in range(size_y): - matrix[0, y] = y + matrix[0, y] = y # Cost of inserting characters from seq2 + # Fill the matrix using dynamic programming approach for x in range(1, size_x): for y in range(1, size_y): + # Check if the characters at current positions match if seq1[x - 1] == seq2[y - 1]: - cost = 0 + cost = 0 # No cost for matching characters else: - cost = 1 + cost = 1 # Cost of 1 for substitution + # Calculate minimum cost among deletion, insertion, and substitution matrix[x, y] = min( - matrix[x - 1, y] + 1, # Deletion - matrix[x, y - 1] + 1, # Insertion - matrix[x - 1, y - 1] + cost, # Substitution + matrix[x - 1, y] + 1, # Deletion (remove from seq1) + matrix[x, y - 1] + 1, # Insertion (add from seq2) + matrix[x - 1, y - 1] + cost, # Substitution or match ) - return int(matrix[size_x - 1, size_y - 1]) + # Return the bottom-right value of the matrix as the final distance + return int(matrix[size_x - 1, size_y - 1]) \ No newline at end of file diff --git a/yake/core/__pycache__/highlight.cpython-310.pyc b/yake/core/__pycache__/highlight.cpython-310.pyc index ec26a0352334fd4bacdd2a312ad34fbdb8a0959e..51673b912cf8c6b156b47734ff2a081ca392bbb3 100644 GIT binary patch delta 3062 zcmb7GU2GIp6z<)&WZdb`wn7V)!YwV*(sn6=MG>Q76ZwlY5#J!>?#%7Zb!TVB`RR5^ zNJS$?VvKkb6XMT{50DttWS)#h!kZz)_#z2JAAB}3MvW2y^_)Aqv)iorvztz)J9E$d z&Ue1^oqMbBL)7DTcW2w+GkbcAB@dnLInl|skhZq7XSVlbk60q0W!H>sPQA0AJ-A#E zp(Pv|@}-cPt`U{F69)P0{*YSCF>M~uf*V>i5Ka-6R9xSrgct!63smNoTfryQWy*X`1J4#At?^ld4@_bpb$KET zeNl))9_&{C;{%L!90TvBhgO6SEfyk8WwmtzI$fo9I$o;OS8l5<#XtcyTqk70sl!fS z)$ynp@&SHJaw+q9Cp!tW%7@zX9SBY?w7;=DrB)~{V8lh{3pWB* zQ7;|~L+(2X8D-eBzOU!I9`_Xze6L~&o2xj?^Xw|dNy+{fhGywA9F(f!g;mN7g9m}@ zgDN>_NePK9GGVg<2npcS7><8!@63=HdAsui@{7E%YR57rgrAf|r4(oeEG=TEAPB!o zJr~kYaaD>bP5_;!&=mj$A=HG0@1zm28JG#$NEbn1zr+D8%lU2ukL$AIrhH*?YyA7F zkdSAkt9_;K#c~Y5rK49KxaUqMdmT%$KfApZ`FsNcvKzWh8w$r1i^7bUUDK%&QkjK@ zr82GSASo*nl9tws93za9eo%d#6qKe)a(z)04n$VW1fd_n`#zV4^CR)OY=#g!en%fA z`Y}v}!ll0_zS5N?o$NH`a;CyP^Gr(mJkNBI5SiAparSSARd~CS`KQ1YJww{Xe6;7gA_neK zkg0xQh@hta7OOlpxjBVeUVV++i09UH6aAAquORWG1K(!mGxCwahg;F^gB@}3B+l*G z%uq$Edv}8#(PY}d5mYsRIT19pZGs`f+DHU2~ORP22LUz^zX)esW}G%X(&5o*1>@q zz#?d8Rv))$<=En;P!o{(qzc_OEN>0&h_4SlPV{zYtN@37W-uOGznhRtAc99t>}&j_ z(VHnX+_DF=7i3rz1`f1ZQI#*NMrj(_X@mx3nlz*QKDSkVJa$ulwBb4OR6MkC7ttxg zIRJ35!t@5YB6p3nI3{wr%HhuK$7<}3_2 z^jG*_Zrn6DTCo7UA`FP8u7`~e3V}01I;)_Jugc+x*WwGC4-)-(1T_bswBGoS`;QTF zRrT_T@%63b&DHh=&8hQ8v-_tc)_k%GhZ5$%)bye2Q|3}+p|&-KB? zpeRbV&^5%9Pv_6X!xQ5~KaVJPDwJ}5>(At}0$G@x5G~9#M$}43$bkobgR--kUxY(K z-P++~L>;#=O;csS$q#A`z3x_=I&Jd3sgnLR;=z%r^~%-LcgQ!gKmS-OVe{O_Mojz! zj*>VVeU7%m@vw_fQjm28t#p=@xzu6qJ~fA$r_jnl86VESMf9H#^;#5Qul#Y_jp9)pbD#Gr?WsI4CIp)#>=w#y9snKS?2_y6Y1d>LCgddHEjaE9 z$a`KFh=cTh!-X8oCb; Date: Mon, 19 May 2025 19:42:23 +0100 Subject: [PATCH 090/118] updated index --- docs-site/content/docs/{Home.mdx => index.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs-site/content/docs/{Home.mdx => index.mdx} (100%) diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/index.mdx similarity index 100% rename from docs-site/content/docs/Home.mdx rename to docs-site/content/docs/index.mdx From 6a25334ac662c3b24383b681f6e75354d760aea4 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 19 May 2025 19:45:04 +0100 Subject: [PATCH 091/118] Update yake.mdx --- docs-site/content/docs/core/yake.mdx | 482 ++++++++++++++------------- 1 file changed, 258 insertions(+), 224 deletions(-) diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/core/yake.mdx index 7489252d..4188c551 100644 --- a/docs-site/content/docs/core/yake.mdx +++ b/docs-site/content/docs/core/yake.mdx @@ -1,11 +1,15 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' -KeywordExtractor Class -The KeywordExtractor class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. -Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation. +# KeywordExtractor Class -Module Overview -python""" +The `KeywordExtractor` class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. + +> **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. + +## Module Overview + +```python +""" Keyword extraction module for YAKE. This module provides the KeywordExtractor class which serves as the main entry point @@ -18,8 +22,12 @@ import os import jellyfish from yake.data import DataCore from .Levenshtein import Levenshtein -The KeywordExtractor class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. -Constructor +``` + +The `KeywordExtractor` class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. + +## Constructor + @@ -30,47 +38,49 @@ Constructor def __init__(self, **kwargs): """ Initialize the KeywordExtractor with configuration parameters. - Args: - **kwargs: Configuration parameters including: - lan (str): Language for stopwords (default: "en") - n (int): Maximum n-gram size (default: 3) - dedup_lim (float): Similarity threshold for deduplication (default: 0.9) - dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") - window_size (int): Size of word window for co-occurrence (default: 1) - top (int): Maximum number of keywords to extract (default: 20) - features (list): List of features to use for scoring (default: None = all features) - stopwords (set): Custom set of stopwords (default: None = use language-specific) - """ - # Initialize configuration dictionary with default values - self.config = { - "lan": kwargs.get("lan", "en"), - "n": kwargs.get("n", 3), - "dedup_lim": kwargs.get("dedup_lim", 0.9), - "dedup_func": kwargs.get("dedup_func", "seqm"), - "window_size": kwargs.get("window_size", 1), - "top": kwargs.get("top", 20), - "features": kwargs.get("features", None), - } - - # Load appropriate stopwords and deduplication function - self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) - self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) - ``` - + + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values + self.config = { + "lan": kwargs.get("lan", "en"), + "n": kwargs.get("n", 3), + "dedup_lim": kwargs.get("dedup_lim", 0.9), + "dedup_func": kwargs.get("dedup_func", "seqm"), + "window_size": kwargs.get("window_size", 1), + "top": kwargs.get("top", 20), + "features": kwargs.get("features", None), + } + + # Load appropriate stopwords and deduplication function + self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) + self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) + ``` + -Parameters: - -lan (str, optional): Language for stopwords (default: "en") -n (int, optional): Maximum n-gram size (default: 3) -dedup_lim (float, optional): Similarity threshold for deduplication (default: 0.9) -dedup_func (str, optional): Deduplication function to use (default: "seqm") -window_size (int, optional): Size of word window for co-occurrence (default: 1) -top (int, optional): Maximum number of keywords to return (default: 20) -features (list, optional): List of features to use for scoring (default: None = all features) -stopwords (set, optional): Custom stopwords set (default: None, loads from language file) - -Core Methods + +**Parameters:** +- `lan` (str, optional): Language for stopwords (default: "en") +- `n` (int, optional): Maximum n-gram size (default: 3) +- `dedup_lim` (float, optional): Similarity threshold for deduplication (default: 0.9) +- `dedup_func` (str, optional): Deduplication function to use (default: "seqm") +- `window_size` (int, optional): Size of word window for co-occurrence (default: 1) +- `top` (int, optional): Maximum number of keywords to return (default: 20) +- `features` (list, optional): List of features to use for scoring (default: None = all features) +- `stopwords` (set, optional): Custom stopwords set (default: None, loads from language file) + +## Core Methods + @@ -81,86 +91,87 @@ Core Methods def extract_keywords(self, text): """ Extract keywords from text. - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords - - Args: - text (str): The input text to extract keywords from - Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) - """ - # Handle empty input - if not text: - return [] - - # Normalize text by replacing newlines with spaces - text = text.replace("\n", " ") - - # Create a configuration dictionary for DataCore - core_config = { - "windows_size": self.config["window_size"], - "n": self.config["n"], - } - - # Initialize the data core with the text - dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) - - # Build features for single terms and multi-word terms - dc.build_single_terms_features(features=self.config["features"]) - dc.build_mult_terms_features(features=self.config["features"]) - - # Collect and sort all valid candidates by score (lower is better) - result_set = [] - candidates_sorted = sorted( - [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h - ) - - # If deduplication is disabled, return all candidates up to the limit - if self.config["dedup_lim"] >= 1.0: - return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ - : self.config["top"] - ] - - # Perform deduplication by comparing candidates - for cand in candidates_sorted: - should_add = True - # Check if this candidate is too similar to any already selected - for h, cand_result in result_set: - if ( - self.dedup_function(cand.unique_kw, cand_result.unique_kw) - > self.config["dedup_lim"] - ): - should_add = False + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from + + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input + if not text: + return [] + + # Normalize text by replacing newlines with spaces + text = text.replace("\n", " ") + + # Create a configuration dictionary for DataCore + core_config = { + "windows_size": self.config["window_size"], + "n": self.config["n"], + } + + # Initialize the data core with the text + dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + + # Build features for single terms and multi-word terms + dc.build_single_terms_features(features=self.config["features"]) + dc.build_mult_terms_features(features=self.config["features"]) + + # Collect and sort all valid candidates by score (lower is better) + result_set = [] + candidates_sorted = sorted( + [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h + ) + + # If deduplication is disabled, return all candidates up to the limit + if self.config["dedup_lim"] >= 1.0: + return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ + : self.config["top"] + ] + + # Perform deduplication by comparing candidates + for cand in candidates_sorted: + should_add = True + # Check if this candidate is too similar to any already selected + for h, cand_result in result_set: + if ( + self.dedup_function(cand.unique_kw, cand_result.unique_kw) + > self.config["dedup_lim"] + ): + should_add = False + break + + # Add candidate if it passes deduplication + if should_add: + result_set.append((cand.h, cand)) + + # Stop once we have enough candidates + if len(result_set) == self.config["top"]: break - # Add candidate if it passes deduplication - if should_add: - result_set.append((cand.h, cand)) - - # Stop once we have enough candidates - if len(result_set) == self.config["top"]: - break - - # Format results as (keyword, score) tuples - return [(cand.kw, h) for (h, cand) in result_set] - ``` - + # Format results as (keyword, score) tuples + return [(cand.kw, h) for (h, cand) in result_set] + ``` + -Parameters: -text (str): The text to extract keywords from +**Parameters:** +- `text` (str): The text to extract keywords from -Returns: +**Returns:** +- list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) -list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) +## Helper Methods -Helper Methods @@ -171,44 +182,46 @@ Helper Methods def _load_stopwords(self, stopwords): """ Load stopwords from file or use provided set. - This method handles the loading of language-specific stopwords from - the appropriate resource file, falling back to a language-agnostic - list if the specific language is not available. - - Args: - stopwords (set, optional): Custom set of stopwords to use - Returns: - set: A set of stopwords for filtering non-content words - """ - # Use provided stopwords if available - if stopwords is not None: - return set(stopwords) - - # Determine the path to the appropriate stopword list - dir_path = os.path.dirname(os.path.realpath(__file__)) - local_path = os.path.join( - "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" - ) - - # Fall back to language-agnostic list if specific language not available - if not os.path.exists(os.path.join(dir_path, local_path)): - local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - - resource_path = os.path.join(dir_path, local_path) - - # Attempt to read the stopword file with UTF-8 encoding - try: - with open(resource_path, encoding="utf-8") as stop_file: - return set(stop_file.read().lower().split("\n")) - except UnicodeDecodeError: - # Fall back to ISO-8859-1 encoding if UTF-8 fails - print("Warning: reading stopword list as ISO-8859-1") - with open(resource_path, encoding="ISO-8859-1") as stop_file: - return set(stop_file.read().lower().split("\n")) - ``` - + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use + + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available + if stopwords is not None: + return set(stopwords) + + # Determine the path to the appropriate stopword list + dir_path = os.path.dirname(os.path.realpath(__file__)) + local_path = os.path.join( + "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" + ) + + # Fall back to language-agnostic list if specific language not available + if not os.path.exists(os.path.join(dir_path, local_path)): + local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") + + resource_path = os.path.join(dir_path, local_path) + + # Attempt to read the stopword file with UTF-8 encoding + try: + with open(resource_path, encoding="utf-8") as stop_file: + return set(stop_file.read().lower().split("\n")) + except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails + print("Warning: reading stopword list as ISO-8859-1") + with open(resource_path, encoding="ISO-8859-1") as stop_file: + return set(stop_file.read().lower().split("\n")) + ``` + + _get_dedup_function(func_name) @@ -218,27 +231,30 @@ Helper Methods def _get_dedup_function(self, func_name): """ Retrieve the appropriate deduplication function. - Maps the requested string similarity function name to the corresponding - method implementation for keyword deduplication. - - Args: - func_name (str): Name of the deduplication function to use - Returns: - function: Reference to the selected string similarity function - """ - # Map function names to their implementations - return { - "jaro_winkler": self.jaro, - "jaro": self.jaro, - "sequencematcher": self.seqm, - "seqm": self.seqm, - }.get(func_name.lower(), self.levs) - ``` - + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use + + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations + return { + "jaro_winkler": self.jaro, + "jaro": self.jaro, + "sequencematcher": self.seqm, + "seqm": self.seqm, + }.get(func_name.lower(), self.levs) + ``` + -Similarity Functions + +## Similarity Functions + @@ -249,20 +265,22 @@ Similarity Functions def jaro(self, cand1, cand2): """ Calculate Jaro similarity between two strings. - A string metric measuring edit distance between two sequences, - with higher values indicating greater similarity. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return jellyfish.jaro(cand1, cand2) - ``` - + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return jellyfish.jaro(cand1, cand2) + ``` + + levs(cand1, cand2) @@ -272,20 +290,22 @@ Similarity Functions def levs(self, cand1, cand2): """ Calculate normalized Levenshtein similarity between two strings. - Computes the Levenshtein distance and normalizes it by the length - of the longer string, returning a similarity score. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) - ``` - + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) + ``` + + seqm(cand1, cand2) @@ -295,25 +315,30 @@ Similarity Functions def seqm(self, cand1, cand2): """ Calculate sequence matcher ratio between two strings. - Uses the Levenshtein ratio which measures the similarity between - two strings based on the minimum number of operations required - to transform one string into the other. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return Levenshtein.ratio(cand1, cand2) - ``` - + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return Levenshtein.ratio(cand1, cand2) + ``` + -Usage Examples -Basic Usage -pythonfrom yake import KeywordExtractor + +## Usage Examples + +### Basic Usage + +```python +from yake import KeywordExtractor text = """ Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence @@ -328,8 +353,12 @@ keywords = kw_extractor.extract_keywords(text) # Print the keywords and their scores for kw, score in keywords: print(f"{kw}: {score:.4f}") -Customized Usage -pythonfrom yake import KeywordExtractor +``` + +### Customized Usage + +```python +from yake import KeywordExtractor # Create a custom stopwords set custom_stopwords = {"the", "a", "an", "in", "on", "at", "of", "for", "with"} @@ -351,17 +380,22 @@ keywords = kw_extractor.extract_keywords(text) # Print the top 10 keywords for kw, score in keywords: print(f"{kw}: {score:.4f}") -Deduplication Functions -The KeywordExtractor supports multiple string similarity algorithms for deduplication: +``` -Jaro-Winkler ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches -Levenshtein Ratio ("levs"): Based on Levenshtein edit distance normalized by string length -SequenceMatcher ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm +## Deduplication Functions -Dependencies -The module relies on: +The `KeywordExtractor` supports multiple string similarity algorithms for deduplication: + +1. **Jaro-Winkler** ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches + +2. **Levenshtein Ratio** ("levs"): Based on Levenshtein edit distance normalized by string length + +3. **SequenceMatcher** ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm -os: For file operations and path handling -jellyfish: For Jaro-Winkler string similarity -yake.data.DataCore: For core data representation -.Levenshtein: For Levenshtein distance and ratio calculations \ No newline at end of file +## Dependencies + +The module relies on: +- `os`: For file operations and path handling +- `jellyfish`: For Jaro-Winkler string similarity +- `yake.data.DataCore`: For core data representation +- `.Levenshtein`: For Levenshtein distance and ratio calculations \ No newline at end of file From 07dd952576f8511cc56b77dc2f0656b259aafe28 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:13:36 +0100 Subject: [PATCH 092/118] updated home.mdx --- docs-site/content/docs/About.mdx | 17 ----- docs-site/content/docs/Home.mdx | 115 +++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 17 deletions(-) delete mode 100644 docs-site/content/docs/About.mdx create mode 100644 docs-site/content/docs/Home.mdx diff --git a/docs-site/content/docs/About.mdx b/docs-site/content/docs/About.mdx deleted file mode 100644 index 657219bf..00000000 --- a/docs-site/content/docs/About.mdx +++ /dev/null @@ -1,17 +0,0 @@ -This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at INESCTEC. It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). - -Authors -Ricardo Campos is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). - -Vítor Mangaravite is a research intern of LIAAD/INESC TEC - INESC Technology. He has MSc and BSc in Computer Science by Universidade Federal de Minas Gerais and Universidade Federal de Ouro Preto, respectively. - -Arian Pasquali is a researcher associated to University of Porto and the Artificial Intelligence and Decision Support Laboratory at INESC TEC - INESC Technology. He has MSc in Computer Science by University of Porto with specialization in data mining. - -Alípio M. Jorge is an associate professor at the Department of Computer Science of the Faculty of Science of the U. Porto and the coordinator of LIAAD/INESC TEC - INESC Technology and Science, the Artificial Intelligence and Decision Support Lab of U. Porto since 2012. He is PhD in Computer Science by U. Porto. - -Célia Nunes is an Assistant Professor at the Department of Mathematics of the University of Beira Interior (UBI) and member of CMA - Center of Mathematics and Aplications, UBI. She is PhD in Mathematics by UBI, MSc. on Applied Mathematics by the University of Évora (UE) and BSc. in Mathematics - Probability and Statistics (UE). - -Adam Jatowt is an Associate Professor at the Department of Computer Science, University of Innsbruck. He has received his Ph.D. in Information Science and Technology from the University of Tokyo, Japan in 2005. - -Aknowledgements -Project “TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020” is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/Home.mdx new file mode 100644 index 00000000..9d32ea68 --- /dev/null +++ b/docs-site/content/docs/Home.mdx @@ -0,0 +1,115 @@ +--- +title: Yet Another Keyword Extractor (YAKE) +description: Unsupervised Approach for Automatic Keyword Extraction using Text Features +--- + +# Yet Another Keyword Extractor (YAKE) + +Unsupervised Approach for Automatic Keyword Extraction using Text Features. + + + +--- + +YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) + +## Background + +Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. + +## Main Features + +- Unsupervised approach +- Corpus-Independent +- Domain and Language Independent +- Single-Document + +## References + +If you use "YAKE" in a work that leads to a scientific publication, we would appreciate it if you would kindly cite it in your manuscript. + +- Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) + +- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) (ECIR'18 Best Short Paper) + +- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) + +## License + +Copyright (C) 2018, INESC TEC [license](https://github.com/LIAAD/yake/blob/master/LICENSE). + +## Contributing + +When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. Read more about becoming a contributor in [our GitHub repo](https://github.com/LIAAD/yake/blob/master/CONTRIBUTING.rst). + +### Thank you to the contributors of YAKE! + + + +If you are feeling nostalgic you can access the old site [here](http://yake.inesctec.pt/). + +--- + +
    +

    + Back to top +

    +

    + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

    +
    \ No newline at end of file From 963687abb2d565221d88e75892e37dbe783b54ac Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:37:24 +0100 Subject: [PATCH 093/118] final docs website structure --- docs-site/content/docs/Home.mdx | 14 +- docs-site/content/docs/about.mdx | 27 ++++ docs-site/content/docs/gettingstarted.mdx | 177 +++++++++++++++++++++ docs-site/content/docs/index.mdx | 176 -------------------- docs-site/content/docs/relatedprojects.mdx | 28 ++++ docs-site/public/logo_inesctec.png | Bin 0 -> 8724 bytes 6 files changed, 233 insertions(+), 189 deletions(-) create mode 100644 docs-site/content/docs/about.mdx create mode 100644 docs-site/content/docs/gettingstarted.mdx delete mode 100644 docs-site/content/docs/index.mdx create mode 100644 docs-site/content/docs/relatedprojects.mdx create mode 100644 docs-site/public/logo_inesctec.png diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/Home.mdx index 9d32ea68..1750c6ac 100644 --- a/docs-site/content/docs/Home.mdx +++ b/docs-site/content/docs/Home.mdx @@ -1,5 +1,5 @@ --- -title: Yet Another Keyword Extractor (YAKE) +title: HOME description: Unsupervised Approach for Automatic Keyword Extraction using Text Features --- @@ -7,18 +7,6 @@ description: Unsupervised Approach for Automatic Keyword Extraction using Text F Unsupervised Approach for Automatic Keyword Extraction using Text Features. - - --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx new file mode 100644 index 00000000..a0ca0451 --- /dev/null +++ b/docs-site/content/docs/about.mdx @@ -0,0 +1,27 @@ +--- +title: About +--- + +![Logo LIAAD](/yake/assets/images/logo_inesctec.png) + + +This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). + + +## Authors + +* **Ricardo Campos** is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). + +* **Vítor Mangaravite** is a research intern of LIAAD/INESC TEC - INESC Technology. He has MSc and BSc in Computer Science by Universidade Federal de Minas Gerais and Universidade Federal de Ouro Preto, respectively. + +* **Arian Pasquali** is a researcher associated to University of Porto and the Artificial Intelligence and Decision Support Laboratory at INESC TEC - INESC Technology. He has MSc in Computer Science by University of Porto with specialization in data mining. + +* **Alípio M. Jorge** is an associate professor at the Department of Computer Science of the Faculty of Science of the U. Porto and the coordinator of LIAAD/INESC TEC - INESC Technology and Science, the Artificial Intelligence and Decision Support Lab of U. Porto since 2012. He is PhD in Computer Science by U. Porto. + +* **Célia Nunes** is an Assistant Professor at the Department of Mathematics of the University of Beira Interior (UBI) and member of CMA - Center of Mathematics and Aplications, UBI. She is PhD in Mathematics by UBI, MSc. on Applied Mathematics by the University of Évora (UE) and BSc. in Mathematics - Probability and Statistics (UE). + +* **Adam Jatowt** is an Associate Professor at the Department of Computer Science, University of Innsbruck. He has received his Ph.D. in Information Science and Technology from the University of Tokyo, Japan in 2005. + + +## Aknowledgements +Project "TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020" is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx new file mode 100644 index 00000000..caac927b --- /dev/null +++ b/docs-site/content/docs/gettingstarted.mdx @@ -0,0 +1,177 @@ +--- +title: Getting Started +--- + +# Quick Start +{: .no_toc } + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) + +## Installing YAKE! + +Installing Yake using pip: + +``` bash +pip install git+https://github.com/LIAAD/yake +``` + +## Usage (Command line) + +How to use it on your using the command line: + +``` bash +Usage: yake [OPTIONS] + +Options: + -ti, --text_input TEXT Input text, SURROUNDED by single quotes(\') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. +``` + +## Keyword Deduplication Methods + +YAKE uses three methods to compute string similarity during keyword deduplication: + +### 1. `levs` — Levenshtein Similarity + +* **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. +* **Formula used:** + +```python +similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) +``` + +* **Best for:** Very accurate for small changes (e.g., "house" vs "horse") +* **Performance:** Medium speed + +### 2. `jaro` — Jaro Similarity + +* **What it is:** Measures similarity based on matching characters and their relative positions +* **Implementation:** Uses the `jellyfish` library +* **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") +* **Performance:** Fast + +### 3. `seqm` — SequenceMatcher Ratio + +* **What it is:** Uses Python's built-in `difflib.SequenceMatcher` +* **Formula:** + +```python +ratio = 2 * M / T +``` +where `M` is the number of matching characters, and `T` is the total number of characters in both strings. + +* **Best for:** Good for detecting shared blocks in longer strings +* **Performance:** Fast + +### Comparison Table + +| Method | Based on | Best for | Performance | +|--------|----------|----------|-------------| +| `levs` | Edit operations | Typos and small changes | Medium | +| `jaro` | Matching positions | Names and short strings with swaps | Fast | +| `seqm` | Common subsequences | General phrase similarity | Fast | + +### Practical Examples + +| Compared Strings | `levs` | `jaro` | `seqm` | +|------------------|--------|--------|--------| +| "casa" vs "caso" | 0.75 | 0.83 | 0.75 | +| "machine" vs "mecine" | 0.71 | 0.88 | 0.82 | +| "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | + +**Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. +## Usage (Python) + +How to use it using Python: + +``` python +import yake + +text = """Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning +competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud +Next conference in San Francisco this week, the official announcement could come as early as tomorrow. +Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. +Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, +was founded by Goldbloom and Ben Hamner in 2010. +The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, +it has managed to stay well ahead of them by focusing on its specific niche. +The service is basically the de facto home for running data science and machine learning competitions. +With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, +it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow +and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, +Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. +That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google +will keep the service running - likely under its current name. While the acquisition is probably more about +Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition +and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can +share this code on the platform (the company previously called them 'scripts'). +Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with +that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) +since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, +Google chief economist Hal Varian, Khosla Ventures and Yuri Milner """ +``` + +### Simple usage using default parameters +```bash +kw_extractor = yake.KeywordExtractor() +keywords = kw_extractor.extract_keywords(text) + +for kw in keywords: + print(kw) +``` + +### Specifying custom parameters +```bash +language = "en" +max_ngram_size = 3 +deduplication_thresold = 0.9 +deduplication_algo = 'seqm' +windowSize = 1 +numOfKeywords = 20 + +kw_extractor = yake.KeywordExtractor(lan=language, + n=max_ngram_size, + dedupLim=deduplication_thresold, + dedupFunc=deduplication_algo, + windowsSize=windowSize, + top=numOfKeywords) + +keywords = kw_extractor.extract_keywords(text) + +for kw in keywords: + print(kw) +``` + +### Output +The lower the score, the more relevant the keyword is. +``` bash +('google', 0.026580863364597897) +('kaggle', 0.0289005976239829) +('ceo anthony goldbloom', 0.029946071606210194) +('san francisco', 0.048810837074825336) +('anthony goldbloom declined', 0.06176910090701819) +('google cloud platform', 0.06261974476422487) +('co-founder ceo anthony', 0.07357749587020043) +('acquiring kaggle', 0.08723571551039863) +('ceo anthony', 0.08915156857226395) +('anthony goldbloom', 0.09123482372372106) +('machine learning', 0.09147989238151344) +('kaggle co-founder ceo', 0.093805063905847) +('data', 0.097574333771058) +('google cloud', 0.10260128641464673) +('machine learning competitions', 0.10773000650607861) +('francisco this week', 0.11519915079240485) +('platform', 0.1183512305596321) +('conference in san', 0.12392066376108138) +('service', 0.12546743261462942) +('goldbloom', 0.14611408778815776) +``` \ No newline at end of file diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx deleted file mode 100644 index f20a24e8..00000000 --- a/docs-site/content/docs/index.mdx +++ /dev/null @@ -1,176 +0,0 @@ -# Yet Another Keyword Extractor (YAKE!) - -**Unsupervised, corpus-independent keyword extraction from single documents.** ---- - -YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. - ---- - -## Key Features - -YAKE! is designed to be: -- 🧠 **Unsupervised** – no training data required -- 🌍 **Language & domain independent** – works across domains and languages -- 📄 **Single-document based** – no need for a reference corpus -- ⚡ **Efficient** – lightweight and fast - ---- - -## Why YAKE!? - -In an era where data is abundant and multilingual content is common, keyword extraction must be fast, adaptable, and reliable. YAKE! is built to handle: -- Small or large documents -- Texts in various languages -- Environments with limited or no training data - -Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. - ---- - -## Quick Start - -### Try It Out - -- 🧪 [Online Demo](http://yake.inesctec.pt) -- 🐍 [GitHub Repository](https://github.com/LIAAD/yake) - -### Installation - -```bash -pip install git+https://github.com/LIAAD/yake -``` - -### Basic Usage - -```python -import yake - -text = "Google is acquiring Kaggle, a platform for machine learning competitions..." -kw_extractor = yake.KeywordExtractor() -keywords = kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) -``` - -### Highlighting Keywords - -```python -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size=3) -highlighted = th.highlight(text, keywords) -``` - ---- - -## How It Works - -YAKE! assigns relevance scores to keywords based on multiple features: -- Term frequency -- Term position -- Word casing -- Sentence placement -- Contextual diversity - -The lower the score, the more relevant the keyword. - ---- - -## Command Line Usage - -```bash -Usage: yake [OPTIONS] - -Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram - -df, --dedup-func [leve|jaro|seqm] - Deduplication function - -dl, --dedup-lim FLOAT Deduplication limiar - -ws, --window-size INTEGER Window size - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit -``` - ---- - -## Keyword Deduplication Methods - -YAKE uses three methods to compute string similarity during keyword deduplication: - -### 1. `levs` — Levenshtein Similarity - -* **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. -* **Formula used:** - -```python -similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) -``` - -* **Best for:** Very accurate for small changes (e.g., "house" vs "horse") -* **Performance:** Medium speed - -### 2. `jaro` — Jaro Similarity - -* **What it is:** Measures similarity based on matching characters and their relative positions -* **Implementation:** Uses the `jellyfish` library -* **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") -* **Performance:** Fast - -### 3. `seqm` — SequenceMatcher Ratio - -* **What it is:** Uses Python's built-in `difflib.SequenceMatcher` -* **Formula:** - -```python -ratio = 2 * M / T -``` -where `M` is the number of matching characters, and `T` is the total number of characters in both strings. - -* **Best for:** Good for detecting shared blocks in longer strings -* **Performance:** Fast - -### Comparison Table - -| Method | Based on | Best for | Performance | -|--------|----------|----------|-------------| -| `levs` | Edit operations | Typos and small changes | Medium | -| `jaro` | Matching positions | Names and short strings with swaps | Fast | -| `seqm` | Common subsequences | General phrase similarity | Fast | - -### Practical Examples - -| Compared Strings | `levs` | `jaro` | `seqm` | -|------------------|--------|--------|--------| -| "casa" vs "caso" | 0.75 | 0.83 | 0.75 | -| "machine" vs "mecine" | 0.71 | 0.88 | 0.82 | -| "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | - -**Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. - ---- - -## Benchmarks - -YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. - ---- - -## References - -Please cite the appropriate work when using YAKE: - -### In-depth Journal Publication - -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). **YAKE! Keyword Extraction from Single Documents using Multiple Local Features**. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [PDF](https://doi.org/10.1016/j.ins.2019.09.013) - -### ECIR'18 Best Short Paper - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **A Text Feature Based Automatic Keyword Extraction Method for Single Documents**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **YAKE! Collection-independent Automatic Keyword Extractor**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) \ No newline at end of file diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx new file mode 100644 index 00000000..11eaf072 --- /dev/null +++ b/docs-site/content/docs/relatedprojects.mdx @@ -0,0 +1,28 @@ +--- +title: Related Projects +--- + +# Related projects +{: .no_toc } + +List of relevant projects using YAKE: + +- [SparkNLP](https://github.com/JohnSnowLabs/spark-nlp) by [John Snow Labs](https://www.johnsnowlabs.com/). +Open source framework with full Python, Scala, and Java Support. Check [their documentation](https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction), [demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/) and [google colab](https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb). A video on how to use spark nlp with yake can also be found [here](https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code): + +- [pke](https://github.com/boudinfl/pke) - Python Keyphrase Extraction module. +Ii is an open source python-based keyphrase extraction toolkit. It provides an end-to-end keyphrase extraction pipeline in which each component can be easily modified or extended to develop new models. Credits to Florian Boudin. + +- [Textacy](https://github.com/chartbeat-labs/textacy) - NLP, before and after spaCy. +Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE. + +- [General Index](https://archive.org/details/GeneralIndex) by Archive.org. +A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in [Nature](https://www.nature.com/articles/d41586-021-02895-8). + +- [Annif](https://github.com/NatLibFi/Annif) is a tool for automated subject indexing and classification. +Multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official [website](http://annif.org/). + +- [Portulan Clarin](https://portulanclarin.net/workbench/liaad-yake/) - Provides Sservices and data for researchers, innovators, students and language professionals +Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official [website](https://portulanclarin.net/). + +- [Tell me stories](https://contamehistorias.pt/arquivopt) is a research project that allows users to automatically build news narratives based on news preserved by the [Portuguese Web Archive](https://arquivo.pt). \ No newline at end of file diff --git a/docs-site/public/logo_inesctec.png b/docs-site/public/logo_inesctec.png new file mode 100644 index 0000000000000000000000000000000000000000..eb36b4b376437227646aab597163beb57d3807fb GIT binary patch literal 8724 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 Date: Tue, 20 May 2025 02:40:31 +0100 Subject: [PATCH 094/118] Update about.mdx --- docs-site/content/docs/about.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index a0ca0451..04be95e7 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -2,7 +2,7 @@ title: About --- -![Logo LIAAD](/yake/assets/images/logo_inesctec.png) +![Logo LIAAD](logo_inesctec.png) This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). From d1800c80246027c990f5bd9d048c7043a991aa85 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:42:07 +0100 Subject: [PATCH 095/118] Update about.mdx --- docs-site/content/docs/about.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 04be95e7..69d68587 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -2,8 +2,6 @@ title: About --- -![Logo LIAAD](logo_inesctec.png) - This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). From b3fd21140c74e02c992b6d678be21d4433b250cb Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:44:09 +0100 Subject: [PATCH 096/118] compatibility error --- docs-site/content/docs/gettingstarted.mdx | 1 - docs-site/content/docs/relatedprojects.mdx | 1 - 2 files changed, 2 deletions(-) diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index caac927b..b4a423bd 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -3,7 +3,6 @@ title: Getting Started --- # Quick Start -{: .no_toc } [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx index 11eaf072..f1b465e9 100644 --- a/docs-site/content/docs/relatedprojects.mdx +++ b/docs-site/content/docs/relatedprojects.mdx @@ -3,7 +3,6 @@ title: Related Projects --- # Related projects -{: .no_toc } List of relevant projects using YAKE: From 00230a2233ab044a75717a9943c1f0a957df387d Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:46:47 +0100 Subject: [PATCH 097/118] index --- docs-site/content/docs/{Home.mdx => index.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs-site/content/docs/{Home.mdx => index.mdx} (100%) diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/index.mdx similarity index 100% rename from docs-site/content/docs/Home.mdx rename to docs-site/content/docs/index.mdx From 0ada57fcc57c18423cebc2adbb17b307e36710b4 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 03:18:47 +0100 Subject: [PATCH 098/118] updated formattting --- docs-site/content/docs/about.mdx | 1 - docs-site/content/docs/gettingstarted.mdx | 16 +++++++++------- docs-site/content/docs/index.mdx | 9 ++------- docs-site/content/docs/relatedprojects.mdx | 2 -- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 69d68587..c98d8c8d 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -2,7 +2,6 @@ title: About --- - This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index b4a423bd..22137576 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -2,6 +2,8 @@ title: Getting Started --- +--- + # Quick Start [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) @@ -13,7 +15,7 @@ Installing Yake using pip: ``` bash pip install git+https://github.com/LIAAD/yake ``` - +--- ## Usage (Command line) How to use it on your using the command line: @@ -35,11 +37,11 @@ Options: --help Show this message and exit. ``` -## Keyword Deduplication Methods +### Keyword Deduplication Methods YAKE uses three methods to compute string similarity during keyword deduplication: -### 1. `levs` — Levenshtein Similarity +#### 1. `levs` — Levenshtein Similarity * **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. * **Formula used:** @@ -51,14 +53,14 @@ similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2) * **Best for:** Very accurate for small changes (e.g., "house" vs "horse") * **Performance:** Medium speed -### 2. `jaro` — Jaro Similarity +#### 2. `jaro` — Jaro Similarity * **What it is:** Measures similarity based on matching characters and their relative positions * **Implementation:** Uses the `jellyfish` library * **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") * **Performance:** Fast -### 3. `seqm` — SequenceMatcher Ratio +#### 3. `seqm` — SequenceMatcher Ratio * **What it is:** Uses Python's built-in `difflib.SequenceMatcher` * **Formula:** @@ -71,7 +73,7 @@ where `M` is the number of matching characters, and `T` is the total number of c * **Best for:** Good for detecting shared blocks in longer strings * **Performance:** Fast -### Comparison Table +#### Comparison Table | Method | Based on | Best for | Performance | |--------|----------|----------|-------------| @@ -79,7 +81,7 @@ where `M` is the number of matching characters, and `T` is the total number of c | `jaro` | Matching positions | Names and short strings with swaps | Fast | | `seqm` | Common subsequences | General phrase similarity | Fast | -### Practical Examples +#### Practical Examples | Compared Strings | `levs` | `jaro` | `seqm` | |------------------|--------|--------|--------| diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 1750c6ac..4596f28e 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,14 +1,9 @@ --- -title: HOME -description: Unsupervised Approach for Automatic Keyword Extraction using Text Features +title: Yet Another Keyword Extractor (YAKE) --- - -# Yet Another Keyword Extractor (YAKE) - -Unsupervised Approach for Automatic Keyword Extraction using Text Features. +> **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- - YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx index f1b465e9..c2bb657a 100644 --- a/docs-site/content/docs/relatedprojects.mdx +++ b/docs-site/content/docs/relatedprojects.mdx @@ -2,8 +2,6 @@ title: Related Projects --- -# Related projects - List of relevant projects using YAKE: - [SparkNLP](https://github.com/JohnSnowLabs/spark-nlp) by [John Snow Labs](https://www.johnsnowlabs.com/). From 7c11fb4cee77746ec04b467504503ee9a3f8172f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 03:34:54 +0100 Subject: [PATCH 099/118] icon test --- README.md | 2 +- docs-site/content/docs/about.mdx | 1 + docs-site/content/docs/gettingstarted.mdx | 6 +++--- docs-site/content/docs/index.mdx | 1 - docs-site/content/docs/relatedprojects.mdx | 1 + 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index de509fa7..afed494a 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods) +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/gettingstarted#keyword-deduplication-methods) #### Usage (Python) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index c98d8c8d..944cf408 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -1,5 +1,6 @@ --- title: About +icon: CircleHelp --- This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index 22137576..3b9d9881 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -1,7 +1,7 @@ --- -title: Getting Started ---- - +title: Quick Start +description: Getting Started with Yake! +icon: Album --- # Quick Start diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 4596f28e..39203415 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -2,7 +2,6 @@ title: Yet Another Keyword Extractor (YAKE) --- > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. - --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx index c2bb657a..8c396869 100644 --- a/docs-site/content/docs/relatedprojects.mdx +++ b/docs-site/content/docs/relatedprojects.mdx @@ -1,5 +1,6 @@ --- title: Related Projects +icon: GitCompareArrows --- List of relevant projects using YAKE: From 8ce7ca4b867a1b871bba9e7f4c053d3d9c0b46e6 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 03:45:16 +0100 Subject: [PATCH 100/118] docs --- docs-site/content/docs/about.mdx | 3 +-- docs-site/content/docs/gettingstarted.mdx | 6 ------ docs-site/content/docs/index.mdx | 7 +++---- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 944cf408..4ecc0747 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -4,8 +4,7 @@ icon: CircleHelp --- This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). - - +--- ## Authors * **Ricardo Campos** is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index 3b9d9881..b464c53c 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -1,9 +1,3 @@ ---- -title: Quick Start -description: Getting Started with Yake! -icon: Album ---- - # Quick Start [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 39203415..4ab68ec0 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,12 +1,11 @@ ---- -title: Yet Another Keyword Extractor (YAKE) ---- + +# Yet Another Keyword Extractor (YAKE!) > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) - +--- ## Background Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. From fb723061196f6c38b752ecd10c49ec0b36366f8f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:24:21 +0100 Subject: [PATCH 101/118] added notebook --- docs-site/content/docs/about.mdx | 2 + .../content/docs/{index.mdx => home.mdx} | 0 docs-site/public/1YAKE.ipynb | 1480 +++++++++++++++++ 3 files changed, 1482 insertions(+) rename docs-site/content/docs/{index.mdx => home.mdx} (100%) create mode 100644 docs-site/public/1YAKE.ipynb diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 4ecc0747..7b013048 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -4,7 +4,9 @@ icon: CircleHelp --- This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). + --- + ## Authors * **Ricardo Campos** is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/home.mdx similarity index 100% rename from docs-site/content/docs/index.mdx rename to docs-site/content/docs/home.mdx diff --git a/docs-site/public/1YAKE.ipynb b/docs-site/public/1YAKE.ipynb new file mode 100644 index 00000000..3e7f0287 --- /dev/null +++ b/docs-site/public/1YAKE.ipynb @@ -0,0 +1,1480 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "source": [ + "
    YAKE
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Notebook Developed by**: [Ricardo Campos](http://www.ccc.ipt.pt/~ricardo)
    \n", + "**email:** ricardo.campos@ubi.pt
    \n", + "**Affiliation:** *Assistant Professor* @ [University of Beira Interior](http://www.ubi.pt);\n", + "*Researcher* @ [LIAAD](https://www.inesctec.pt/en/centres/liaad)-[INESC TEC](https://www.inesctec.pt/en)\n", + "\n", + "
    \n", + "\n", + "\n", + "

    \"Download

    \n", + "

     

    \n", + "

     

    \n", + "\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "toc": true + }, + "source": [ + "

    Table of Contents

    \n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## YAKE - Yet Another Keyword Extractor" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "HTML('
    ')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unsupervised Approach for Automatic Keyword Extraction using Text Features." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package, we also make available a [demo](http://yake.inesctec.pt) an [API](http://yake.inesctec.pt/apidocs/#!/available_methods/post_yake_v2_extract_keywords) and a [mobile app](https://play.google.com/store/apps/details?id=com.yake.yake)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Main Features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Unsupervised approach\n", + "* Corpus-Independent\n", + "* Domain and Language Independent\n", + "* Single-Document" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rationale" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Where can I find YAKE?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Package" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Installation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#!pip install git+http://github.com/LIAAD/yake\n", + "!pip install yake\n", + "\n", + "#no caso de já ter instalado o package previamente e quiser fazer um update\n", + "#!pip install git+http://github.com/LIAAD/yake --upgrade" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage (Python)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "text = '''\n", + "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner'''" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Google', 0.02509259635302287)\n", + "('Kaggle', 0.027297150442917317)\n", + "('CEO Anthony Goldbloom', 0.04834891465259988)\n", + "('data science', 0.05499112888517541)\n", + "('acquiring data science', 0.06029572445726576)\n", + "('Google Cloud Platform', 0.07461585862381104)\n", + "('data', 0.07999958986489127)\n", + "('San Francisco', 0.0913829662674319)\n", + "('Anthony Goldbloom declined', 0.09740885820462175)\n", + "('science', 0.09834167930168546)\n", + "('science community Kaggle', 0.1014394718805728)\n", + "('machine learning', 0.10754988562466912)\n", + "('Google Cloud', 0.1136787749431024)\n", + "('Google is acquiring', 0.114683257931042)\n", + "('acquiring Kaggle', 0.12012386507741751)\n", + "('Anthony Goldbloom', 0.1213027418574554)\n", + "('platform', 0.12404419723925647)\n", + "('co-founder CEO Anthony', 0.12411964553586782)\n", + "('CEO Anthony', 0.12462950727635251)\n", + "('service', 0.1316357590449064)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "# assuming default parameters\n", + "kw_extractor = yake.KeywordExtractor()\n", + "keywords = kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Playing with the parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Google', 0.02509259635302287)\n", + "('Kaggle', 0.027297150442917317)\n", + "('CEO Anthony Goldbloom', 0.04834891465259988)\n", + "('data science', 0.05499112888517541)\n", + "('acquiring data science', 0.06029572445726576)\n", + "('Google Cloud Platform', 0.07461585862381104)\n", + "('data', 0.07999958986489127)\n", + "('San Francisco', 0.0913829662674319)\n", + "('Anthony Goldbloom declined', 0.09740885820462175)\n", + "('science', 0.09834167930168546)\n", + "('science community Kaggle', 0.1014394718805728)\n", + "('machine learning', 0.10754988562466912)\n", + "('Google Cloud', 0.1136787749431024)\n", + "('Google is acquiring', 0.114683257931042)\n", + "('acquiring Kaggle', 0.12012386507741751)\n", + "('Anthony Goldbloom', 0.1213027418574554)\n", + "('platform', 0.12404419723925647)\n", + "('co-founder CEO Anthony', 0.12411964553586782)\n", + "('CEO Anthony', 0.12462950727635251)\n", + "('service', 0.1316357590449064)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "language = \"en\"\n", + "max_ngram_size = 3\n", + "deduplication_thresold = 0.9\n", + "deduplication_algo = 'seqm'\n", + "windowSize = 1\n", + "numOfKeywords = 20\n", + "\n", + "custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_thresold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None)\n", + "keywords = custom_kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Google', 0.02509259635302287)\n", + "('Kaggle', 0.027297150442917317)\n", + "('CEO Anthony Goldbloom', 0.04834891465259988)\n", + "('data science', 0.05499112888517541)\n", + "('acquiring data science', 0.06029572445726576)\n", + "('Google Cloud Platform', 0.07461585862381104)\n", + "('data', 0.07999958986489127)\n", + "('San Francisco', 0.0913829662674319)\n", + "('Anthony Goldbloom declined', 0.09740885820462175)\n", + "('science', 0.09834167930168546)\n", + "('science community Kaggle', 0.1014394718805728)\n", + "('machine learning', 0.10754988562466912)\n", + "('Google Cloud', 0.1136787749431024)\n", + "('Google is acquiring', 0.114683257931042)\n", + "('acquiring Kaggle', 0.12012386507741751)\n", + "('Anthony Goldbloom', 0.1213027418574554)\n", + "('platform', 0.12404419723925647)\n", + "('co-founder CEO Anthony', 0.12411964553586782)\n", + "('CEO Anthony', 0.12462950727635251)\n", + "('service', 0.1316357590449064)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "language = \"en\"\n", + "max_ngram_size = 3\n", + "deduplication_thresold = 0.9\n", + "deduplication_algo = 'seqm'\n", + "windowSize = 1\n", + "numOfKeywords = 20\n", + "\n", + "custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_thresold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None)\n", + "keywords = custom_kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Highlighting feature will tag every keyword in the text with the default tag ``." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner\"" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from yake.highlight import TextHighlighter\n", + "\n", + "th = TextHighlighter(max_ngram_size = 3)\n", + "th.highlight(text, keywords)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag `` makes use of an hyphotetical function `my_class` whose purpose would be to highlight in white colour or the relevant keywords." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner\"" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from yake.highlight import TextHighlighter\n", + "th = TextHighlighter(max_ngram_size = 3, highlight_pre = \"\", highlight_post= \"\")\n", + "th.highlight(text, keywords)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While English (`en`) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Conta-me Histórias', 0.006225012963810038)\n", + "('LIAAD do INESC', 0.01899063587015275)\n", + "('INESC TEC', 0.01995432290332246)\n", + "('Conta-me', 0.04513273690417472)\n", + "('Histórias', 0.04513273690417472)\n", + "('Prémio Arquivo.pt', 0.05749361520927859)\n", + "('LIAAD', 0.07738867367929901)\n", + "('INESC', 0.07738867367929901)\n", + "('TEC', 0.08109398065524037)\n", + "('Xutos inspiram projeto', 0.08720742489353424)\n", + "('inspiram projeto premiado', 0.08720742489353424)\n", + "('Adam Jatwot docente', 0.09407053486771558)\n", + "('Arquivo.pt', 0.10261392141666957)\n", + "('Alípio Jorge', 0.12190479662535166)\n", + "('Ciências da Universidade', 0.12368384021490342)\n", + "('Ricardo Campos investigador', 0.12789997272332762)\n", + "('Politécnico de Tomar', 0.13323587141127738)\n", + "('Arian Pasquali', 0.13323587141127738)\n", + "('Vitor Mangaravite', 0.13323587141127738)\n", + "('preservados da Web', 0.13596322680882506)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "text = '''\n", + "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", + "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", + "'''\n", + "\n", + "custom_kw_extractor = yake.KeywordExtractor(lan=\"pt\")\n", + "keywords = custom_kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the following we are going to constuct a word cloud. To begin, we need to adapt the \"content\" structure to a dictionary consisting of the keyword and of the score. In addition to that, we resort to a normalization function that bounds the values into a range between [0,1]." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Conta-me Histórias': 1.0,\n", + " 'LIAAD do INESC': 0.9016047583205323,\n", + " 'INESC TEC': 0.8941768232148362,\n", + " 'Conta-me': 0.7001059072167914,\n", + " 'Histórias': 0.7001059072167914,\n", + " 'Prémio Arquivo.pt': 0.6048303678150379,\n", + " 'LIAAD': 0.4514826541353427,\n", + " 'INESC': 0.4514826541353427,\n", + " 'TEC': 0.4229227806321687,\n", + " 'Xutos inspiram projeto': 0.37580139629126075,\n", + " 'inspiram projeto premiado': 0.37580139629126075,\n", + " 'Adam Jatwot docente': 0.3229017164607676,\n", + " 'Arquivo.pt': 0.25705075169290126,\n", + " 'Alípio Jorge': 0.10835997942955777,\n", + " 'Ciências da Universidade': 0.09464741520636755,\n", + " 'Ricardo Campos investigador': 0.06215018572037523,\n", + " 'Politécnico de Tomar': 0.021021989718509326,\n", + " 'Arian Pasquali': 0.021021989718509326,\n", + " 'Vitor Mangaravite': 0.021021989718509326,\n", + " 'preservados da Web': 0.0}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for item in keywords])\n", + " min_value = min([item[1] for item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = (item[1] - float(min_value))/(float(max_value) - float(min_value))\n", + " result[item[0]] = abs(1 - normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for\n", + " item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = 1 - item[1]/float(max_value)\n", + " result[item[0]] = abs(normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install matplotlib\n", + "!pip install wordcloud" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 999.5, 499.5, -0.5)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from wordcloud import WordCloud\n", + "import matplotlib.pyplot as plt\n", + "\n", + "wordcloud = WordCloud(max_font_size=100, max_words = 20, width = 1000, height = 500).generate_from_frequencies(keyword2WordCloud) #Objeto que permite gerar wordcloud a partir de texto\n", + "plt.figure(figsize=(16,9))\n", + "plt.imshow(wordcloud, interpolation=\"bilinear\") #imshow plota imagens que derivam de arrays\n", + "plt.axis(\"off\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suponha agora que necessita passar esta imagem a partir de uma API. Com vista a esse objetivo deverá converter a imagem em base64. O código abaixo permite guardar a imagem em buffer e mostra a sua conversão em base64." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import base64\n", + "import io\n", + "from io import BytesIO\n", + "\n", + "buffer = io.BytesIO()\n", + "wordcloud.to_image().save(buffer, 'png')\n", + "b64 = str(base64.b64encode(buffer.getvalue()).decode(\"ascii\"))\n", + "b64" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A partir dos b64 seria depois possível voltar a mostrar a imagem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from io import BytesIO\n", + "from PIL import Image\n", + "\n", + "img1 = Image.open(io.BytesIO(base64.b64decode(b64)))\n", + "img1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage (Command Line)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "Usage: yake [OPTIONS]\n", + "\n", + "Options:\n", + " --help Show this message and exit.\n", + " -ti, --text_input TEXT Input text, SURROUNDED by single quotes(')\n", + " -i, --input_file TEXT Input file\n", + " -l, --language TEXT Language\n", + " -n, --ngram-size INTEGER Max size of the ngram.\n", + " -df, --dedup-func [leve|jaro|seqm] Deduplication function.\n", + " -dl, --dedup-lim FLOAT Deduplication limiar.\n", + " -ws, --window-size INTEGER Window size.\n", + " -t, --top INTEGER Number of keyphrases to extract\n", + " -v, --verbose Gets detailed information (such as the score)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A few examples:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "yake -i text.txt -l en -n 3\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## API" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### API Docs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "http://tm-websuiteapps.ipt.pt/yake/apidocs ou http://yake.inesctec.pt/apidocs/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Extract Keywords from Text" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"\n", + "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords\"\n", + "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords\"" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://boiling-castle-88317.herokuapp.com/v2/extract_keywords\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'keywords': [{'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", + " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", + " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", + " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", + " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", + " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", + " {'ngram': 'plataforma', 'score': 0.14041950406587828},\n", + " {'ngram': 'Universidade', 'score': 0.15430157935310973},\n", + " {'ngram': 'docente', 'score': 0.16062340283143323},\n", + " {'ngram': 'fontes', 'score': 0.22178899197855695},\n", + " {'ngram': 'Web', 'score': 0.24221396811318066},\n", + " {'ngram': 'Prémio', 'score': 0.26491441089796414},\n", + " {'ngram': 'TSF', 'score': 0.2814604328980921},\n", + " {'ngram': 'Tomar', 'score': 0.3296342992141605},\n", + " {'ngram': 'Arian', 'score': 0.3296342992141605},\n", + " {'ngram': 'Mangaravite', 'score': 0.3296342992141605},\n", + " {'ngram': 'Alípio', 'score': 0.3296342992141605},\n", + " {'ngram': 'Jorge', 'score': 0.3296342992141605},\n", + " {'ngram': 'Porto', 'score': 0.3296342992141605},\n", + " {'ngram': 'Kyoto', 'score': 0.3296342992141605},\n", + " {'ngram': 'Ricardo', 'score': 0.35667154152030806},\n", + " {'ngram': 'Campos', 'score': 0.35667154152030806},\n", + " {'ngram': 'Instituto', 'score': 0.35667154152030806},\n", + " {'ngram': 'Politécnico', 'score': 0.35667154152030806},\n", + " {'ngram': 'Pasquali', 'score': 0.35667154152030806},\n", + " {'ngram': 'Vitor', 'score': 0.35667154152030806},\n", + " {'ngram': 'Faculdade', 'score': 0.35667154152030806},\n", + " {'ngram': 'Ciências', 'score': 0.35667154152030806},\n", + " {'ngram': 'Adam', 'score': 0.35667154152030806},\n", + " {'ngram': 'Jatwot', 'score': 0.35667154152030806}],\n", + " 'message': 'success',\n", + " 'params': {'language': 'pt',\n", + " 'max_ngram_size': 1,\n", + " 'number_of_keywords': 30,\n", + " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import requests\n", + "\n", + "text = '''\n", + "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", + "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", + "'''\n", + "\n", + "payload = {'content': text, 'max_ngram_size': 1, 'number_of_keywords': 30}\n", + "r = requests.post(url_api, data=payload)\n", + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Conta-me\n", + "Histórias\n", + "LIAAD\n", + "INESC\n", + "TEC\n", + "Arquivo.pt\n", + "plataforma\n", + "Universidade\n", + "docente\n", + "fontes\n", + "Web\n", + "Prémio\n", + "TSF\n", + "Tomar\n", + "Arian\n", + "Mangaravite\n", + "Alípio\n", + "Jorge\n", + "Porto\n", + "Kyoto\n", + "Ricardo\n", + "Campos\n", + "Instituto\n", + "Politécnico\n", + "Pasquali\n", + "Vitor\n", + "Faculdade\n", + "Ciências\n", + "Adam\n", + "Jatwot\n" + ] + } + ], + "source": [ + "for ele in content['keywords']:\n", + " print(ele['ngram'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you want to tag the keywords in the text, please specify the tag as follows: \n", + "- `preTag` (e.g. `` or ``) \n", + "- `posTag` (e.g., `` or ``)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui. A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import requests\n", + "\n", + "text = '''\n", + "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", + "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", + "'''\n", + "\n", + "payload = {'content': text, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", + "r = requests.post(url_api, data=payload)\n", + "content = r.json()\n", + "content['highlighted_text']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get a better visualization of the results:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'highlighted_text': '\"Conta-me Histórias.\" Xutos inspiram '\n", + " 'projeto premiado. A plataforma \"Conta-me '\n", + " 'Histórias\" foi distinguida com o Prémio '\n", + " 'Arquivo.pt, atribuído a trabalhos inovadores de '\n", + " 'investigação ou aplicação de recursos preservados da '\n", + " 'Web, através dos serviços de pesquisa e acesso '\n", + " 'disponibilizados publicamente pelo Arquivo.pt . '\n", + " 'Nesta plataforma em desenvolvimento, o utilizador pode '\n", + " 'pesquisar sobre qualquer tema e ainda executar alguns '\n", + " 'exemplos predefinidos. Como forma de garantir a '\n", + " 'pluralidade e diversidade de fontes de informação, esta '\n", + " 'são utilizadas 24 fontes de notícias eletrónicas, '\n", + " 'incluindo a TSF. Uma versão experimental (beta) do '\n", + " '\"Conta-me Histórias\" está disponível aqui. A '\n", + " 'plataforma foi desenvolvida por Ricardo Campos '\n", + " 'investigador do LIAAD do INESC '\n", + " 'TEC e docente do Instituto Politécnico de '\n", + " 'Tomar, Arian Pasquali e Vitor '\n", + " 'Mangaravite, também investigadores do LIAAD do '\n", + " 'INESC TEC, Alípio Jorge, '\n", + " 'coordenador do LIAAD do INESC TEC e '\n", + " 'docente na Faculdade de Ciências da '\n", + " 'Universidade do Porto, e Adam Jatwot '\n", + " 'docente da Universidade de Kyoto.',\n", + " 'keywords': [{'ngram': 'Conta-me Histórias', 'score': 0.006225012963810038},\n", + " {'ngram': 'LIAAD do INESC', 'score': 0.01899063587015275},\n", + " {'ngram': 'INESC TEC', 'score': 0.01995432290332246},\n", + " {'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", + " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", + " {'ngram': 'Prémio Arquivo.pt', 'score': 0.05749361520927859},\n", + " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", + " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", + " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", + " {'ngram': 'Xutos inspiram projeto', 'score': 0.08720742489353424},\n", + " {'ngram': 'inspiram projeto premiado',\n", + " 'score': 0.08720742489353424},\n", + " {'ngram': 'Adam Jatwot docente', 'score': 0.09407053486771558},\n", + " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", + " {'ngram': 'Alípio Jorge', 'score': 0.12190479662535166},\n", + " {'ngram': 'Ciências da Universidade',\n", + " 'score': 0.12368384021490342},\n", + " {'ngram': 'Ricardo Campos investigador',\n", + " 'score': 0.12789997272332762},\n", + " {'ngram': 'Politécnico de Tomar', 'score': 0.13323587141127738},\n", + " {'ngram': 'Arian Pasquali', 'score': 0.13323587141127738},\n", + " {'ngram': 'Vitor Mangaravite', 'score': 0.13323587141127738},\n", + " {'ngram': 'preservados da Web', 'score': 0.13596322680882506}],\n", + " 'message': 'success',\n", + " 'params': {'language': 'pt',\n", + " 'max_ngram_size': 3,\n", + " 'number_of_keywords': 20,\n", + " 'posTag': '',\n", + " 'preTag': '',\n", + " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}\n" + ] + } + ], + "source": [ + "import pprint\n", + "content = r.json()\n", + "pprint.pprint(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Extract Keywords from URL" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"\n", + "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords_by_url\"\n", + "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Ftechcrunch.com%2F2017%2F03%2F07%2Fgoogle-is-acquiring-data-science-community-kaggle%2F&max_ngram_size=3&number_of_keywords=3&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" + ] + } + ], + "source": [ + "import requests\n", + "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", + "#url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", + "url = \"https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/\"\n", + "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 3, 'preTag':\"\", 'posTag':''}\n", + "r = requests.get(url_api, params=payload)\n", + "print(r.url)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", + " 'message': 'insuccess',\n", + " 'params': {'max_ngram_size': 3,\n", + " 'number_of_keywords': 3,\n", + " 'posTag': '',\n", + " 'preTag': '',\n", + " 'url': 'https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/'},\n", + " 'result': []}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Fwww.publico.pt%2F2019%2F01%2F10%2Fmundo%2Fnoticia%2Fmaduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373&max_ngram_size=3&number_of_keywords=20\n" + ] + } + ], + "source": [ + "import requests\n", + "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", + "url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", + "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20}\n", + "r = requests.get(url_api, params=payload)\n", + "print(r.url)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", + " 'message': 'insuccess',\n", + " 'params': {'max_ngram_size': 3,\n", + " 'number_of_keywords': 20,\n", + " 'url': 'https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373'},\n", + " 'result': []}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again there is a chance to get the text labelled with the tags." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=http%3A%2F%2Fneurosciencenews.com%2Fgenetics-brain-aging-6250&max_ngram_size=3&number_of_keywords=20&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" + ] + } + ], + "source": [ + "import requests\n", + "url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", + "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", + "r = requests.get(url_api, params=payload)\n", + "print(r.url)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", + " 'message': 'insuccess',\n", + " 'params': {'max_ngram_size': 3,\n", + " 'number_of_keywords': 20,\n", + " 'posTag': '',\n", + " 'preTag': '',\n", + " 'url': 'http://neurosciencenews.com/genetics-brain-aging-6250'},\n", + " 'result': []}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para poder gerar uma word cloud a partir de resultados obtidos da API começamos por criar uma lista composta apenas pelas keywords (e respetivos scores):" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Columbia University Medical', 0.00529347656322898),\n", + " ('University Medical Center', 0.0056204056835212944),\n", + " ('Brain Aging', 0.007981486613454188),\n", + " ('Brain Aging Gene', 0.008561464903059477),\n", + " ('Gene Discovered Summary', 0.011117241458580198),\n", + " ('Aging Gene Discovered', 0.011543956129580845),\n", + " ('Brain', 0.01423327097089573),\n", + " ('Aging', 0.015001419612135828),\n", + " ('University Medical', 0.015066192388173577),\n", + " ('normal brain aging', 0.015170215216394334),\n", + " ('Columbia University', 0.015967452701775162),\n", + " ('Medical Center', 0.016898333782857357),\n", + " ('Aging Gene', 0.024664710351924097),\n", + " ('Discovered Summary', 0.028839657817467175),\n", + " ('disease', 0.029978432676500924),\n", + " ('Gene Discovered', 0.036645602314177926),\n", + " ('Gene', 0.036950964796584024),\n", + " ('brain disease', 0.043948285235841565),\n", + " ('University', 0.047988124236656333),\n", + " ('Medical', 0.047988124236656333)]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "keywords = [(kw['ngram'],kw['score']) for kw in content['keywords']]\n", + "keywords" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De seguida balizamos os valores entre [0,1]:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Columbia University Medical': 1.0,\n", + " 'University Medical Center': 0.992342620489739,\n", + " 'Brain Aging': 0.9370410532302345,\n", + " 'Brain Aging Gene': 0.9234567207386875,\n", + " 'Gene Discovered Summary': 0.8635949653479431,\n", + " 'Aging Gene Discovered': 0.8536003947342071,\n", + " 'Brain': 0.7906108869653287,\n", + " 'Aging': 0.7726192022203064,\n", + " 'University Medical': 0.771102085214606,\n", + " 'normal brain aging': 0.7686656480055105,\n", + " 'Columbia University': 0.7499926402908452,\n", + " 'Medical Center': 0.7281894136146929,\n", + " 'Aging Gene': 0.5462842570603634,\n", + " 'Discovered Summary': 0.4484980545022026,\n", + " 'disease': 0.42182551072706065,\n", + " 'Gene Discovered': 0.2656661324210402,\n", + " 'Gene': 0.2585138897150733,\n", + " 'brain disease': 0.09462167322975978,\n", + " 'University': 0.0,\n", + " 'Medical': 0.0}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for item in keywords])\n", + " min_value = min([item[1] for item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = (item[1] - float(min_value))/(float(max_value) - float(min_value))\n", + " result[item[0]] = abs(1 - normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for\n", + " item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = 1 - item[1]/float(max_value)\n", + " result[item[0]] = abs(normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install matplotlib\n", + "!pip install wordcloud" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 999.5, 499.5, -0.5)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAAHMCAYAAAB80T2eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d5hk6X3fh35OqjqVU+ccJuewO5szFhuwBEAEAgREkSIl6pFlyZIlJ/lafq5sS/b1la9oSZRFUQLFAIDIkYuw2Jwn7O7k2NM5V8510v3j1FR3Teee7kl7Ps+zYWqqznvie95f+v4Ey7JwcHBwcHBwcHBwcHBwcJiPeKt3wMHBwcHBwcHBwcHBweH2wzEWHRwcHBwcHBwcHBwcHBbgGIsODg4ODg4ODg4ODg4OC3CMRQcHBwcHBwcHBwcHB4cFOMaig4ODg4ODg4ODg4ODwwLk5f5SEARHKtXBwcHBwcHBwcHBweEuxbIsYam/cyKLDg4ODg4ODg4ODg4ODgtwjEUHBwcHBwcHBwcHBweHBTjGooODg4ODg4ODg4ODg8MCHGPRwcHBwcHBwcHBwcHBYQGOsejg4ODg4ODg4ODg4OCwAMdYdHBwcHBwcHBwcHBwcFiAYyw6ODg4ODg4ODg4ODg4LMAxFh0cHBwcHBwcHBwcHBwWIN/qHXBwcHD4WCEKKFE/csADloWeLqClC2Bat3rPHBwcNhBBlnC3hBFVpfaZlsihpfLO8+7g4HDH4BiLDg4ODjcRtTVCx998Ev/uTizdJH30EpPfeY/SSPxW75qDg8MGosT89PzXn8K/o7322cQ332Lyu+9h5Mu3cM8cHBwcVo9jLDrcnlSjL66GAHLIi+RxISj27WrpBmZJQ88U0JJ5tHgOs6zd4h12cFgFokDoyBbC922tfRR9dBe5c2OUxpNgmLdw5xwcHBwWIvncuBqDyGEfss+N4JIRFAksQDcxdR0jX8bIl9EzRbRkDrPkvJMdHO4WHGPR4bbD099McF833r4m3G0RlFgA2a8iumWwwNQMjEIZLZGjMp2hODJL8coUuQvjaPEcWE56z8cVQZHw72zHv7tz2e9ZhomlGRjFiu10mM1SmkhiZEubvIMCrqZg3UeiW0H2exAkEcsxFh0cHG4TlIgf/95O/DvbUTtiNeet6FYQXTJYFpZuYpY19GzJnksTOcqTKcoTSQqDMxQHZzCLlVt9KA4ODjeAYyw63DbIQQ+RR3YSeWg7vm2tSF73ot+TZAnJ48IVC+Db2kpI20JlNkPh0iST33mXwpUpx2D8mCK6ZAIHemj78kNLfseyLDAtLN3AKGkYuRJaKk9lKk3+0gSZDwYpjczaXvONxrKoTGfqPjIKZbR0Hks3NmFABwcHh7UhSCKBfV1EH99NYF8XrqYQgiAs/l1ZQlQV5JAXiAJgmRZGtkhpPEn62BUmv/MulubMbw4OdyqOsehwW+Buj9L8mXsJP7gNJeJb8sW0GKIiobZGEKsvrc1Z5TvcLQiCAJKAIImIbgUl5EVtj2Lt6iB4qJfIA9tIHx8g8epZKjOZlTe4FkyL9NHLBPZ12TWLZY3k2xfInR5xBC8cHBxuOYIsEXlkB82fvgdPXzOiIq19G6KAHPLiD3nJXxiHNbzPHRwcbj8cY9HhlqN2xmj9zYcI37cVUVXqDEXLMOxU0+FZ9EwRQRaRQ1683U0oMX/ddjIfDVGeTDm2osO6EAQBJexDDnrx9Dbh29HO1PfeJ3d2dEMj1aXxJMP/7pfIQQ+YJpVkHj1d2LDtOzg4OKyX0L39tHzhfjxdDQjSXHc1yzDRknlKY3G0ZAGroiMoIpJPxd0UwtUcQvK46rZllnVS71zE0vSbfRgODg4biGMsOtxSXM0hWr5wP5EHt9s1ENhpgmaxQvb0MDN/9QGFK1OYFR0MCwRAFJHcMmpXA5FHdhA82IsgS6SPXkZL5G7tATncduiZAtM/OUFlNgvYnnPZ70YOeHC3RfH2NiEFVPv+EwXbKx7wEL63H3dLmImvv0nq/csbl0ZlWlSm01Sm0xuzPQcHB4cNQO2MEfvEXjzdDQiibSiaFZ3cmRGmf3SM/JUprIpu11ZbVN/HAoIkIakKalcDgb1dBPZ1426LkDs9TGk84ThwHRzucBxj0eGWIfncxJ7cQ+TRnXWpLnoyz8S332HmxQ9tj+QiLxojC5XZLNmPhnC3R1A7YuQvTjipfA4LMIoaybcuUBycmfuwGrwWBAHRo+Db1kbj8wfx7+xADnsRBAFBlvD0NNLxe09gGiaZY1ewdEeAxsHB4S5EFPDvaie4v7tmKFqmSfzVM4z8P7+0FceXeb3qQHkqRfrYFUSXjLe/2VYtd7ImHBzueBxj0eHWIAr4drQTe2ovknuuYbFRKDPxrXeY/tGxVW3GMkxKw3FKw06POoclsKy5f2qfXfuPhZErkzlxlezJISKP7KT1Nx5A7YwhiCKCIOBuidD25YfQZjIUBqYcL7mDg8Ndhxzw4O1trhOWq0xnmPjGW6tvg2EBloVZ0sidGd2cHXVwcLjpiCt/xcFh45GDHsL3b0Vti9Q+syyL5NsXmP3lyVu4Zw4fVyzdJPn6OUb+w6/IX5ywVVOr+La10vDsAcR5jg0HBweHuwXJr6Jc19Yn+9EQeqZ4i/bIwcHhdsGJLDrcfARwt0YIHemv+7g8lWbmxQ8xS7emJ5PodeFuCeNuCtV6SYHtJdVzZSozGcoTSYx8aeOjS4KAHPKgttu9rCS/iqBIWLphj58qUJ5KUZlOY5Y3TixADnrs/lmNQSSf2x7TMO0xs0Uqk2lKE0msysdDoMAyTLInh5n63vt0/O4TuFvCtb+LPraL+CunyZ8du3U7uFaq95W7JYIS9SH57dpMQZbsZtqajlGooGeL6Mk85Zk0ZmFjnz9RVXA1h3A1BJFDXiSPq9rQ25q7v3Nl9HQBLZ5FS95gGxFJxBUL4G4No0T9yD43yJLdD65YQUvmKE8kqcxk7qq0YiXqR+2IokQD9rMsi/YxlzT0TIHSeJLKVGrzj1kAKeDBUzev2D35jFIFI12kPJuhMpXGyK2/r6kgS7iagrhbIyhhH6LHhSAJmBUDs1imEs9RHk+iJXMbWp4gR/14OqLVY1NBEDArGnqmSGUqRWk0UR+Ju0NKI0RFQvLUt6sqT6U+dr1f5ZAX3/Y2XI1BEAX0dIHClSlbPG/euRBkEXdrBG9fM3LQYwsAJXIUrkytS0VbkEW8/S14uhsRVQWjUKY0Grf7VF4X2ZXDXvzb21EaAgiCgJ4rUhpNUByeXde7WlAklFgAV0MAJexD8rlrNfyWbmCWdfRcCT2RozyRQs8VNz3DRnDJeDpjuFvCSEEPoiKDYIsmGflSrZ+nFnd0Km4GjrHocNMRFBn/rg7cDfVezOSb5ymNxG96mp/kdePf3UHgQA/e3iZcTSHksBfJrdhiOyUNI1+iMp2hNBIn89EgmeNXMQrlVY/hag4Rvn8broYAAPlLE6TevYRV0ZECKqF7txDc342nqwGlIYDsVxEUubaY1lJ5ylMpCpcmSb13ieLV6Rta9CkRP4GDPQT2duHpbsDVGELyuxHlemOxPJmieHWa5NsXyV8cv2MWPjeCpRtkTw6ReOMczZ++pxZNtGts967KWJSDHsIPbEPtiK34XSNXIvn2Bfve3ygEcDWFCN27Bd+2VtS2CErUbxuLbhlBkrAMA6tiYBTL6JkiWjJPeTpNaThO/vwYhStTN2S0ST43wcN9Cxp628aifJ2xWEJPF6jEs5QnUhSuTJE+enn16W8AkojaESV0Tz++bW3zjtmNIIlYholRrKAn8pQmkhQuTpB6/xLFwdlVqd3KIa99Tdujtc+Kg9Mk37xg13OtA0GWaHz+oL0wnb/NN87bol6rQGkIEDrcR2BvF2pXA66ov2os2tfYLGlo6SLl8QT5S5Ok37tE4er0up5l0S3T+KlDKBFbibp4dZrU0csYWdvoExSJ0JEthO7pw9PdiKsxiOyrOr6qc6meKVCZyVAajpN48zy5U8Nr2wlBwNvXTOi+fnxbWnG3hpHDPiSvC0EUMTUds1ChEs9SGk2QPz9G+ugVylOpG3q3yEEPwUO9BA/24ultwtUURPK6EUTBXkxnivYcfXmS1DsXyZ0bA9Na9XW8Lbi+w8VN6ngReXA7vp1ttQGLw7Ok37+8pnpH0a3Q8NwBXLFA7bPsqSGyHw0tcLAqUR+hI1trz3L8pVMUh2dtwb3P30fwQA+uhiCI2Mbi5SlmfvYh6eMDYJiIboXgoV4aPrkP75YWu8ekbqIlc2TPjjL7i5OL39eCQPBwH8H93QDkL4yTevcSgiwSfXw3sSd24+lrQlJdGPkyxZFZkm+eJ/HaOfRUHgC1I0bz547Y/S9jARAFjGyJ0mic5FsXmH3pFGZxFQ4/UcDVEMC/swNvXxPu9qhtLEb89n3tlhGE+cZiES2RpzyeIHd+nNTbF9YddY48vAPv1hYEUURL5ki+fq4mQIcg4NvWSvj+rfh2tOFuiSAHPTUBRLOiYeTKVBI5yuMJ0u9fIfHa2UXHCR7uJbi/p9a6RUtkSb13mfJ4cl37jSgQ3N9D8ODcNi3NYPL772Nk7+4IvGMsOtx0RLdC6GBvXe8lPV0gd2oYI796A2wjcDWHaHzuIOH7tuBujdQmpGsIgOiXkP0q7uYw/l0dBA50EzzQw8Rfvr2gwfqS48QCxJ7cg29rCwDp4wNkTw4h+FVav/QAoSNbcDUGa8ICtfFdMqJLRg568HQ1ENjdSWBvF1M/PEb62JW1exEFAd/2Nhqf3U/gQA+uWKBOHh3shszXxlTbowT2duHf3UHyjfPM/vLkTb9GtwI9UyTzwVVCh/vw9jXXPg8e7EGO+NCT+WV/L/lVIg9vJ3S4f9nvAZSn0xSuTm+csShAYF83zZ87gm9La02wZ8HXRBkUGcnnthdG2KngRrZEcXiW0T95lfzZ9dUdebe10vSpQwT2dNoNvaXFKh7mel3KIS9UF25mRSfz4SC5MyOrNhZFj4vwfVuJPb0X35YWOzJ/3TELooioyChBL56eRoL7ugge6mXmxQ/txcYqDEZPdyPNn7mn9ufSaJzsqWEq0+szFj09jTR+6hBqRxRBEDCKFWZ+emLJxU8dokBgbxcNz+wnsLcLJepfeMySiOhSkINe1I4ogX3dBPZ1kXj1LInXz645iiy4ZBo+sQ9PTyMAqfcvk788iZEtIaoKzb9+hNgTu3G3RRbOZczNpWpbFLUtSv7SBLlTa9gBUaDhqb3EPrnPVjH2uhd8RZJcSKoLJerH299C8EAPgQM9zPzVB2RPDq1L1djdGqHx+YNEHtpuz9PX3c+Sx4XkceFuDuHf0U5gbxfTPz5O5oPBNTkVbyWWZiwwMtwtEdvRssljBw/20PD8wdr9m3rvEvlzY2syFgWXbL9jt7TMfWhZttF+nbEoh7z2/HyoD4DyZIpKPEvrbzxA7Mk9desAV0PQjro1BasO41n8ezpp++rDeHoa5+5zWbKj3A1B5KCXsXyJ4sB0/T6KAoE9nbR8/j4AEm+cI3d+nMD+Llo+fx/u1giCaJ8DOeixnerNYSzNIP7yaUSXTNtXHyb80HZEeU4UUIz6UaJ+3O1RjEKZ+CtnlnUGSV4XjS8cJrCnE7UjhhL1L1j71Pb52hwd9KC2RfHv7qg5ASe/++669CKCh3qJPbUHUZEpjcbtaOxsFkGRiDy0g8Zn9+Pb3obgkhfMaZLHjeRx42oM4u1tojKThSXmS0ESafrsvbVzpaXy6Lky5YnkuhxHSsRH9LGdxJ7eV9uv/OVJJr/33to3dofhGIsONx3J68K7rbXus8LAFOWp9Ib2s1sJV0uYjr/xOMGDvch+dVW/ESQRtS2KKxZADnoZ+eOXqUyl1jy2p6cR2e+h+fP3EX1054L+VEtxLQoqh7wY2SLZM2to5i4KBPZ10/rlB/Fvb1t1/Z3okvFtb8fVFEIKepj+0fGal/NupjgwTf7iBJ7eJlsdVRBQgl78O9pIvXPpVu/ekvh3ddL5N5+y91tcW2hAEIRqanIUfZ1taMIPbqP514/g29aKIEuLGqrLIbpkSsOzq47WiR4XDc/sp/kz9yzqcFkKyafi39Npp6oGVKZ/emLZZ0nPFsmfH0N/fJdt3GIbEd6trfaCZR1zV/BQL8o8Y15L5MieGl45a0AUCN+/lZbP34+3v3nJhd58BEFA8rgI7OnE3RxG9qvM/PyjG/KISz4VyeNCdMm0fPEBGp87gBxa3DlxPVoiR3FodtVjCbJE06cP0/TCYVzNoVWNIYgCSsRnt8FpDjHxjbfW3AbH1Ryi+XNHiD62C9mnrhhtE10yvq2ttH75IeSA54ZSbW8mer68IH0ysL8bOaBSWU2k6g7G09VA+P5tRB7avuizJAgCnt4mGj91kMlvv0PTp+/B07P4/CoqEoHdHUQf2cnY0Gxd6ur1KBE/wUO9RB/ZgbslvGB7giDgivmJPbWX/IVxggd7Cd3Tv4TzzXZKN3/2XlLvz0X7F0OQJSIPbsO7tXXN87MgCChRP9HHdiKqCqN//PK60m5r23PJ9pwhi0Qf20XLF+5HbY8ueYzzsTSD3JmRJf8+f36c0sgs3l7b4StX39+Z4wPrarOmtkXxXXfOUu9cxCjeGQ6hG8ExFh1uOmp7DMlX7xEuDEyjrRCt2Ugkn5uO33uC8JEtiIpsi5lYFpV4juzJIXJnR2uTiSsWwL+zncC+bpRYAAR7ggvd24+lGwz925+veUGgRHy0/bVHCN3bj6gqWIZJeTpN5oOrFK5MoSXsc+FuChI82EvwQE8tLUQQRdSOGG1ffZgr/9v30Ve52PNtbaXtqw/j395mp6hZFpgWxRE75ac4NIORr9i1GC1hO6K4p9P23gt2TVTTcwexyjpTPzi67tS7OwU9W6R4dRo9U0SpGgeCIuHf3bmisahnisRfOk3h6gyyX0UKqMg+D3JQRYn4aml8G40c9ND21x7G09uIIApY1VTP4uAM2Q8HKY7E7dQhw7QFLRoCeLoa8G610/lEWQJRIHN8YC4taA2EH9hG229WPe6SaKeaVu8zPVOkcGWS0lgCPV3AMi07Yt8atlMWqxFIPVci/cHq0rwFWSTy8A7avvwQcsCuH7MsCwyTwtVp0scHKA3PYuQriF4XanuU4IEe28BSFQTA3Rah+XNHMHWD2Z99uLTH2bQoDs2QvzxJ8FCv/SxKIpEHt5NeRx9OOWBHDiSf7aiyTJPSeJLsKlQkAwe6af3Sg3j7mu3Ij2VhaQaFq1NkTlylNBzHKJQRXDJqW4Tgvm78ezptT70o4moK0vzZezEKZWZfOrXummQ5YN/bjZ86SMMz+20j2rTQMgXyFycojc6i50qAbbR5exrt9DNZpjyVpjg8s+IYAAjQ8NwBmj5zby2V37IsjHyZ/PkxsieHKE+mMMs6oteFr7+F0D39qJ0xuw+gLOHpaaL9bzyBlszb0aZVGPeS1030sV3EntxTc+hZloVlmOROjZA+epnydAZM045kbmsldKjXjvK0hGn+/H13jrGYLVIcmcXUdLs+DDuq1vzZI4z8x5eXNXrudPw72/Hv6QRg6odHyZ0ZQQ75aPjEHrxb22pGXOSBbVRmswT3d6On8yTfuUT2oyE7Pfu5A/i22d8VPS5829tQ26OUhpd2iLibQzQ9dwB3a6RW+mBky4Qf2kb0kZ32HCoIeLe0EH18N6F7+hBcMpkTV0m8dhazrBG6p5/Ig9uRvC4QBNSOGP5dnaTfW/odZZQ0Ukev4N3aWpufjWKF4tVpClemKA7PoqcLmJpuZzV1N9aeJ0GyVcJRZIIH7VTc8a+/ue4Ub9El20bz4T6aP3cEtcPOMDGKFQpXpihcnkTPFrF0s6br4NvaghT0oOdKtsN8qeMslEm+fs427AW7h7J/dydqe3TNxqKg2K203PNKS4xCmdS7F+0e4Hc5jrHocHMRBNSuWJ1nxjItypMpWzjmZiAKNDx7gPB9W+0aPcvCLFZIvHaWqR8es2tbdLOmhikIAvGXTqF2xGj50gOEj2yxF12KZE9wv36EiW+8uaYaQkG0F5lIdgF9/FenmfmrE1TiuWrD43lj/+o0gf3dtP/Wo6hdDQji3KTn39tJ6u2LK47nagzS+MIh/DvbEUR7calnikx97z1mf34So1iuEzIQRIGZn36Ab0cbnX/rqVp0TQp6aHhmP6WJJMk3z9/dNYwWdjF/Mj9nLMqSnZYqsOzL0ciVSLx5HuHtC1CNSiLY1z14qJf+f/Lrm7LL4fu34elpqhlNeirP9A+P2RGkQhnLvNZGhOr+CCCKiLKEqyVE6FAf4fu3MvuLk1jG2owf37ZWmj9zTy2iec1oK47Emf35h6TeuWS/9K819IbaOREUCXdL2DbCJHHVtctqVwPtf/1R5IAHBNvgKk+kmPrBUZJvXcDIl+oaiAuiyPQPjxI83EfrFx+oGbWuphBNzx+iPJEi+9HgkmOXxhLkzowQ2Ndl110CocN9KFE/lan0ms6Xf4+9aLm2EDXyZdLHrmCuYCSrnTGanj+Et7+59ixryTzjf/Y6idfPYenGdccsMP3j44QO9dHxt560jXJBQI74aP7MvZQnU2Q+GFxXZFQOqMQe24V3SwtK2EtlOsP0j4+TeO0MRq6MZc671tV5Sw55Ce7vse+F1Yh1CRA80EPjM/vnDEXDJH9+jPFvvEX+3Jh9zObcfZ16+yJTPzxGwyf30fTpe5CDHgRRwN0apuP3nuTy//rdFVPJ7UV6M03PH0JSq5kfloWezDP+9Tdri3XLnJureekU7uYQrV9+kMiD223HUNi35vN6SzBMChcnyV+YwL+7o7a4bnhmPwgCU997Dy2VX1ca7+2Op68Js2Iw+rVXmP3Zh1iGiSAIlMcStP/uE/azVn1m2r78IHq2yOS33mH2FycxNR0EgfyFMbb9r79ZE51xNQXxdDUsaywqsQBKxEfizQuMf/0NKhMpLMsif2kcDJPok3vsXsCKRNOvHUaQRZJvXmDo3/wMo1ix02yrzqXYk3sQJNsxEtzftayxaFV0km9eIHzfFvRMkeRbF8h+NFQTF1vwnpBEpn90jKZfu4fGZ/cjBTz2esDnJniwl+TbFylenV5yvOUQ3QrBgz0IUh+ezgaMXJnkWxeY/slxypMpu27+uveFqCr4d7bjaggsm0pv6SbJdy7R9Ol7USL2c6h2RPHtaCN/aWJNNfGuhgCB/d116b/p96/YWSUfAxxj0eHmIlCnMAlg5Ip2bcJNMjw83Y00//q9tTQHs6Qx8/OPmPzWO4vWSFjYnuTCwBQjf/QrRJdM6HAfgmzX34Tv20LmxNVl0yEWRRIwCxVmfnKCiW+9s6iYiIVle6/ev4yoKnT83pO4onZUSpBEIg/tsKNcyyz0BEUidG8/0cd21VL09GyR0a+9QuLVs4tGFSzTwtJNsh8NMfgHf8WWf/oFu75REHC3hIk8tJ3CpQnKE6m1HfMdRmUmjZbK48Gu0RJEwRY/8qkrRwwME6t6SWtXR2Btoi1r5FokWBAEW9n19ChTPzq2+JgW1YWuiVHRKQ5MUxyYZvK7763ZcJBDHmJP78O/u3MulcowSR8bYPRrryxbj2lhQFmjcHmSwuXJVY8pyBLtv/UYStRvG4qW7XQa+9PXSL19caGKowWWaWDoBsnXz6HFs3T9nWeqdUcCnt5Gmp4/SHkssWRalaUZ5C9MUBpN4O1tAuw02MiD25n6/vur33dFwr+nsyZsY1kWWiJH+v3Ly/7OHmub7bC69iynCwz/25+Teu/SwjnUmnuWk+9exKjo9P6jF1CqqaJqZ4zIIzsoDs6sKy1LDvmIPr4bBIHi4AzDf/hzcsvUuVpApZRm9hcfrXoMJRag4Zn99nUSBCzTonBpgsF/9SLl8cSig1imgRbPMvXDo1iGSetvPFB7Lvw724k+vIPpHx9f/tgCKg1P78M1r52EUSgz9udvEH/59IJ508J2jpRG4gz9m5/X6mjXmgp+KykMTJF8+wJqZwwl6LWVbT0uml44RGBvJ9M/PUH25DBaPLup89jNRhBFSqPTxH95smYMW1hkTw+TvzCOp7sRQamm1MsS+QvjzP7q9LzsGovSSILc2VEij+wEwU55nC9ctfi4ApVkgeQbZymPzt3LlZksiTfPE35wey2iLbpkjGKFib98u+7doyVy5M6OEjzUawveCILtMFyB8licS//zt2uZJktSe55yTHzzLeSIj9hju2r1hK7GIN7+5vUbi6pC6HAfCNW+nt98266nXuL+sjAwyxqpd1dXCqIlciTfvkDT84dqxmbonn5S711afb2lYNfv+nd11tLQzYpO8p0LttH+McDps+hwcxEElLC37iM9V755D5wo0PD0PmS/7RmzLIv8xQnivzq1qmJ6LZ5l9ucfoaXnpKPdrRGCh3sR5DU+Tpatijr1o2Mrq04aJvlzYwsMUm9/84q5/XLQaxftVz1ilmmSfOM8mVUK5BQHZ5j9xcm6aEtgTxee3ia4gxZC60HPFhfcm6Is1WrWbjfkkHfOCaLpdquVtS7q1hFh8m5pIbCns+5eLA7PMvLHv9pYldf5Y25rwb+rvZalYJY0Eq+fI31sYFVy/7kzo0z/5HhtwSeIIt7tbQT2ddWJb11PYXCa4sCUHTXDdtqE7rOzDVaL2h7F29s0Vx9lmOTOja0YnXQ3hwg/uN1ufYIdYZv95UmyJ4dWdraZFvnzYyRfP1v3LIfu6cfdFlmX8qUg2qm4WiLL+J+9Tu7C+No3suwAENjdaYtdVI1js1hh8rvvLW4oXodZqJB+/3I17XTu8+iTe1as2VaifoJVARSwDfrU+1fIHB9Ycd40ixWmvvPehreh2WwszbDVN189i54vzWXXSCLevma6/vbT9P7XL9D4wmH8e7tQGgJ3zTsge3JowXvY0m3jf37Wk1Eokz8/vmgGQHFohms3mqQqdmr8CpRG4rZeQ93AtvPoetXO/IXxRcsDKjMZ9Gs1itWSkeXmsGvHpifza0ovNksaiV+drqaW20gBFXdzaNXbuJ5r6fxGrszMX31A4s1zG+qIMApl0kev1JU1+La24ulqgFXURYLtpPPvbK9buxYGpmwD+S5Oz56PYyw63FQEqNXoXMOq6DfWV20NuJtD1RQye7FlFirkzoxQHFxl7Qz2S6UynbY9ydieV29vk13PuAYs3bDVRVdZ01KZtVt3zD9XSsSH6F1GHEcQ8PY24ds6JyikJXJkTgysukbU0gzSRy/XTbZKxIe3v3nVwjx3KmZZX5h2JYkLam5vG+YZeoIkIgfU2r2+WYheF74d7XUtJSzTYvpHx9cvUb4KYo/vRlTnFvylkTiZ41dXJxtfJfnGOVsZr4orFsC/qwM55FnyN3oyT/7iRE02XhDtOiFvf8uSv7ke75YWu56uilnR7bTuZRBkCe+WllpEE+w5IX30yqoVio1CmfSJwToHiCsWwLulpZZWu1YsyyL5+jk7orjBCyfZ76mmm81rLTI0Q+bE1VVvozSWIH9xwk4XrKK2R1G7G5b+kSTi29leS10D2wDMnLi66ghsYXCa3Ln1qQnfSrTZLFM/eN92iiZyNYMR7OiWf2c7Hb/9GD1//znaf+tRYk/ttWuk5c2dZzab0ki8llI8n8pstu55MYqVJWtttUSu5pQQZAlRda3oRNbiOfTMwjWAUW3/Mp/ClSksbaGjwsiVav2pBUFAVJVViV6th/ylCYzsnCNBdMkL1nRrxbIscudGSb17aeMdLKZFaSRuO4yqiKpC6J5+uwfvKpADHoKH5zmOTMsWybmJOhu3GicN1eGmI163eDW1lY1FT08jgQM9Kz7cpmaLVCzV/8e/qwMl7KtTH7zWD2u1GIUKhcHpqlCDfSyuhgDulvCa6pb0XInsGnqMWbqJni5glDRkf/UcCgKyX8VY4ngFSbDrwOad8+LVaUpja5OO1hI5SmMJfPNUbD09TUh+9a5upWEu4si4VkNyO1KZSmNpOoJbsY2LbW0ED/SQ+eDqpjVjVyJ+fP0tdYvF8niC9PErmzIe2E3ffVWhJrAjbKWRWbt/4BowCmUyJ67W2qMIooCnrxl3awQ9tXSmQe7MKOWJVK0eTfK6Cd+/hfwqjAM54MG3tbWulq00kSJ3fvn+naKq2EJX885z/sL42pQITYvKbIbyVKrO6PRtbSHuVjDWIXSjpwpkTg7VRRs2CldLyK6BnRcBSB8fWFPvQkszKI8n0dOFWlqgIIv4d7RRuDix6G8ESSSwu7Pus9JYgtJ4YtVN6i3NIPPhIKF7Vm6fc7tRmUrbbRHGEsSe2oN/R3vdNRAk0Ta426OEH9xG/vw42VPDZD8aojAwdUfWNVZmMotmVRiFct07wKroVKYXr1MzrjN0BEm0e9ouM/fq2SLmImqalm4syGopT6UWvf/s99Q8zQFBQHBJsAkidGaxgp4pgBWbqzl3yXaUbp3OIrNYIX9hvM5xt5FoyRyZD64S2N9VE28KHupF+eGxlXtFVtP1vX3znHTxLLnz43dMW5yNwDEWHW4+10nbW4aJtYKalLe3iebP3LtiuoORt4ujl5oAPL1NdZE4PVtcV5pcZTJVZ2DKIS9KbG0Kl6XR+Jqb2l4f6brmRVwSUcS3va1+3IkUWnJt9UmmZlCZTtcZi+7W8F0fWcSizrN+u5M5OUTk4R2IbsWuSWuP0PaVh1HboyTfvWQ7Mzb4eJSQF3dHtO6zzIeDm+pE8HTEkHxzvRSNYoXSaGJFcZgFWJA9PULLF+6vfeRuCeNqCLCcz7g4GqdwdQpvfxOiS6lGXDpQov4VI0/ujqjtaJpvAL17CbO4/MJOdMkLopfF4fiq1ZCvYZY0tHgW5hmLakcM0SWxniV+aTS+7tYhK6FEAwtq3PMXxtdc366n8/b9aJceI0gSalfjkt8XRAHPdZHH0nhyTZEESzfsPntVkZA7DT1VYPaXJykOThO6p5/QfVvxdDfUCXwAyD6V4KFe/Ls6CN3bT+bEVZJvnKc0tjqRqtsFPVtcdH8t3ai730zdQM8u7kha4PSWRJCWv/hGqbK488O0FhjdeqqwaPTTMkww6w01UZHX9TyvBtuInbuxr4nuWescUEvmKQ7PrtoRs1bMkkb+Un2tuSsWILi/m9IK44ouidA9/XVp6/mzo5TGEnfU/X2jOGmoDjef6x5MAeGmvEwFl4y7LYLosh96y7IwCpV1CTvo2VLd4khUXYs2iF6O8mh8wQS/EpZpLnhZLFezKHlduNsj835vK2SueSFvmOjX/UYOeDY9xfFWIyjSgvQqux3F7VmnkP1wkNz5sdrLT1RkvFtbafniA/T8V8/R+qUHN7bWVLAdJe6meidO4dLkpkYX1K5YnaPCKJQpT69NjfQapdF43WJBDqh2v8Zl7m2rotvqgdXooyDa6of+66JR1yNIIp6eRjzdc4aKUaqKNaxgbEkBu81IbR9MCy2eW3N9j6UZCyIgcsi76v6U11OZTm9OewhJxBXzI89LBbUMk/Lk2q+zUdLqFuSCuLB2fj6iW8Z1nZGqJ3JrO04LtHThzu7BZpjkz48z9f33Gf43P2Pkj35F+tgV9OuUy6/18PTv6qD5s/fS+ftP2f0A75T3g8XSugnXVEGvYVhLOnYWvJsFlu9jaC1dhnOtndd8jGJlcUfJ9XOHwIo1izfEBosR6pniDfVqXA2lkbit+XDtXAkCkUd3rlhrLqouwke21P5sFCt2a7XZzd3f2w0nsuhw07neiyYo4qoasN4ost+N7HXXqdP5drSx4//719a+raC3rsZHdMmrbnJ/DS1VWKdnavU/UsK+mnEMgACNzx0kfP/WtQ0pijXZ+mtIHtcdX6eyEqJbXphyWu1JdTti5MtMfP1N1NZwTRHvWmNyOeTF299C9Ind5C+MEX/lLLnTwzdk1AmSiBRQa6k9YC+YiqOrT9dbD0rYV7cQNUvamqPltd8WK+jpgi0KgZ1WJQc9tvrgMucm+9EQlZmMbVgKAkrYR3B/F8m3LyyZjiVHfPh3tNdlA+ROD1OeTi2/k0K1Pnn+wkaA1i89QONz+1d9rGDXUs2vAQTs9P51OhD0fHlNaaGrRVRsIam6SJYo0P9PPrvmGndRddUrU1bT95dC8tbf0wBaZqHY1UqYmo6WLqzZkXi7YeTL5C+M271L37+E2hGz+/s9vB2lqpINtmEkBzwED/TgbgnbysTvrb0H6c3GNIxVp1BaloW5QRoLlmnajsdVvtLt87jKL6/1cRYFXA1B1M4YansUJexFCniQvG7Eaquwa//1dDduqDFqVrRNT+nUM0Vy58cIP7DNVo3FLqXx9jeTO720kr1/Z3vd3FEanrVrR29Th/Fm4RiLDjcVCxbUtohuZcGL+XoKV2eY+uHR+he8JOLb0mLLLq8C0eOuW2AK1QWDvK1tmV+tDkESF6TnrIRRrGx6FoMUUOvm9GtS1ytJeq8G0SXfUbLw60HyuOsW6NeanxuZlZVzbxWFgWmu/Isf0PrlhwjdtwXJrdh1JWL1fveruFvChI9soTSWIPHqWVLvX0aL59a8CBckEdnrrluYmGUNs7y5xrToddU5mCzDXLeCnmXaGQbKvExayeuuOoOWXsDomWKt3lHyuOxFVG8z3t6mJVuAuFsjBPZ21RbXlmmSeP3cKkR57EV43SfVNjbXp2muB9GlrPtZtir6pjgGBEWyG43P/0wQavWlN7Zx6p1o1yH5XHX3tGVatgLqWo/TtDBX00vyDsGu18tQmc2SOzvK1A+OEnlwG43PHcTVHKq1lxBkCXd7lI7ffZLKdNbuG3g7p+yZ1ur3z2LNGUFLb8taU5lDXd/SDUB0y7jbo4Tv30bocB/ua9dQlqo9eK/1CK4+DMJcFtiyEdM1YukmVmWTHQqWRf7CBPlLEyhRv13C45KIPb57WWMx8siOmiPNMkxyF8YpDK6vTcidjGMsOtxcLGtBBEDyuRE9y0flioPTFIemmf8GF90yDc8eWL2xWBX9uF2wNGNT6nzmI3ncm5iOcncbigCuxiDydU21jUIZbY21pjcVy1Z/G/q/X8S/t5PG5w7i29pqNyavLuZERUKQPfh2tOPb1kbTrx1m9pcnSb5z0W4MvdpFsSQiXle3apa1Te+ZKqmuOuPGMm5gsWFZGNcJQdhzxcrZDsm3LtDw9D5E1a4RdbdFCOzppHBlasGzLaoK/u1tuObVXReH4+QvjK/spRaqz/JmcQOPcq2B9wYjSNKaszXWNsDSfyWqrrov2HX167i/TAurcvf0I6xhWpgljUopzdQPjxF/9SyNLxyi4RN7cTUEbOeUIOBqDtHyxfu5+n/9ZE0qxTed29mQnc9G7acgoHZEaXzuINHHdyEHPbV1wrWWYpgWlm5gGob9jJtW7VmX/CrI4sYZjBabvhYCKI8nyZ8ZI7i3y1ZwFQSC9/ShNATQFmlJosT8BPb11P5cmU6TOzNyx7XE2QgcY9Hh5mKxQDFU8qv25COw/GRoUfeFxQq9l+P6ec0yLfR03lYGvVEsa9Nz7tfD9ZO5XfOT2hjJZ9O8q5VQAVzNoTrVSqvadHuzjaGNwCxrZI4NkDszSmB3B+GHtuPtb8HdFKpGnKv3hmS3fmj/7ccIHe5j8vtHbfXU9aYWbmatTBXLMOvWFoIg3FAd5vVp8JZhrmrxUhqeJX950m7cLggoQQ++ba0oYe+CZ0wJ+wje0zcXVbQs0scur/5ZvO7wTL2q8rkRjgvD3JRU0hun/qDNim6rbd5wCpi1vLDZos/32u8vi7W/p+44LLsOfvIv36Z4ZYr233oUtbvBjjAKQi1itZb2VOthxfpAhxqe3iY6/9ZTBPd3z31oWbYjNJFHSxfQkjm0ap2uUaxglvVq1ohO65cfxNOztEDUbYtlkT09TGR0O75trbXsssiD25n+0bEFXw/fvxXJ67INaNOiMDRrC2x9DHGMRYebi2XZKlLzEBUZV0MAUXVtqvfRKGr1EtimSfbUMMN/+IuN2f4GNpLdKPR8vRCPWdGZ/dmHzP7y5AZt/+41FkWXjNoWsb2uVSzNIH95cbn92xWzWCF9bIDMh4N4epoIHujBv7sTb5/dG/RahE4QRQL7ulEag4z+x1dIvXNxZYPJMBfUcYluZYHi8UZjCz3MMxgkYUWhgiURBER3/W/NkrZqgyT5xjnCR7YguEQQBDw9TXj6mtGOD9SN4W6L1PU71TNFcqdHV+dwsVjwPbOsMfXd90i9d2lV+7nC5jGymyBScwNYulHrHXcNo1Bm6A/+akOcXctFz+fUHm3sFghrv6cFYWGrqLsVSzPInBjA3RKi9SsPI1d77wkuCf/O9k03Fu2xnCXtSkh+lfavPlxnKJoVneLgDJnjA2RPj1C4MrmsE6rxuf1gNd6RyUXFwWkKV6ZsZfyq1kTonn7iL52qq5sUXDKhw/21MhSjUKZwcZzK9O0XFLgZOE+Ww02nPJHEyJfrGpur7THkgIfKphqLZcz5bSdEEUGRl5TMvhvQs6X6CIwiYVnWxkQj7nLc7VF821prLwvLsjArOtll6htuZyzdpHB5ksLlSVyvnSVwoIfg/m78e7pwNwZqEUG1NULrlx6gcHmSygoKo5ZhLhAmsJs0u1fOFLgBjFypzpgTZWnVDZavR5DEBWInRrGyalGO7KkRKjMZ1Ha76NHdGsa7pZnsqeFadFZ0ywQP9dYpuOYvjFfl11dzkqwFLTJEl4JpGHfts7xYnznR48IoVDb9mI1Cue7eFUS7RZEgi2uLaooL07TvZsyyTv7CBKWROP4d7dVPBdwdsc0ffKU2Ug4AhO7tJ3Cgp/ZnUzfInhxi8jvvkjs3trp5T7hzGymYZZ3Mh4MED/fibg7bPUM7ovh2tpOZ5+DzdDegdjXUnESVmQyZj4Zu1W7fcm7ZFf/Mr6v8t//EzyefXf4FryjwiU+6+Xv/wMe99zkTwd2AkS9TuDpV95m3vxkl6lviFxs0bq5kLzKvRSQEu15S9nuW/+EdjJ7K2zVkVQRJtBUGnZfqsgiyhG97G57+ejGN4tAM5esi43cilZkM8ZdOMfq1Vxj/izfInhmpi7R4uhtXpZhrGSZGtlR/j4kCaltkUxWOK9NpzHm1YKLHVVMzXStyyFvnuLJ0Y8FzsxxGrkj62JW5fXEr+La01qkHi6pS15zd1HRyp0cWrZNZFMvuRVZ3nmURJeS7a6MpZkVHTxXqHHyiS173dV4LRqG8wFCVg541G36CLC4QJrrb0VL5BZFfObC08ixsjE9JUKQVx/nYIwl2H955c0Z5PMnMix+SPT2yageZpCp3ZFTxGtnTw5TGkrW1oBz2EjrUW1fKEDzUW8sqMjXD1s0Y+PgJ21zjlhmLjz3u5q//jo/7H1x+8vV4BH7rt7387f/CzyefVVGcNe4dj1nWyZ4crvvM3RrG29e8qQsfSzMojSVq6nR2vrqnrg/h3YZRrFAanq39WRAE3E0h5NDmGuZ3OmpXjOhjuxYs9BKvnr17JLMtu09f4tUzTH7n3ToHjiCLqxOOqvaSK1+XmuPb1rapYlKFoZm6xbzkdeNuWd9z7OluqOsxqKULVOLZVYv8WIZJ6u2LdTV/vq0ttUgjgKerAbVtbv/K40kKVyZXbZCC7eyan8IvCAJqe7SW7nfXYVpU4tm6PriCIODtb970ulhLMyhP1NeyK9HA2hyLgl2nKq0z4n3HYloL1EJXmjMt3bgukiuuuQbZFfUjbaYg0l2AHPDibo3MnVvLojg0Y/cfXGVtreCW7/h7Wk8VyH40WHuHiG4F75YW+9xgq8j7d7TXMkGMXInMiatrmq/vNm77WLJhwOSkSS5rMjNtot+ONfgOa8KsaGRODtWlVYmKTOThHXViIptB4cpUXdqcEvPPS5e5CzFMcufH6j7y9jfjbgkt8QMHOeKj8dkD+He21wkmFIdm6iJIdwuWZpD9aIj82bG5mt6qkuFqFmx6urAg2ho83LupveUqkym02WzNMyy6FdSOKEpkjfOHIBCcl5IF2AJQq434AVhQGkuQvzhXy6rEAnj6mu1IlAChw311xnP+0gTFodnFtrYkZlkjf6m+JYdvRztK7O51/FTi2QVGW+je/k1v2WOZFqXrro/aEV1TVFOQJDw9jXWOiI8DoseFeJ1y70ppw9fX+4tuZUEd8Ur4trfdFHGtOxkl7LVbXlXPk2mYaMncghT35fB0NdTUn+9kUm9fRM8UsSzLdqI3h/DvsNuoefuacbfYKaqWZTut0vNr0D+G3PazWKFg8b//bxm+8NkE3/jzws1Q13XYbCzbs545cbWux5B/dweRh7ZvanQxe9JupH1tXDngIbC3y1YzvAuxTJPUu5fqetC5W215/zvdO7jhCKBE/XT89mPEntpbl6pjljUmv/0u+kaoyN6GmGUdLVOsr+ld5WJAi2fJXRivay3gaggSeWznpqUqWbpJ8p2LmGXdftmLAp7uBnxrdPwoUT/Bgz1z2zVNCpcmFohwrYSeK5F8+0JtXhEkEf+uDpSID0GSCN27pfZdLV0gf2F8zSItRrFC+ujlOu+2pyuGf3fn5raYuIWUxxLkL4zXNUH37+ywo4ubiKUbZD4arHs/qe1RPF0Ndb16l0OsCmR83HC3Ruqi6FhWXXbLYujp+r61StS3JsexIImEjmxZ+Ysfd0Shfk42LSxtDb0bBQgf2Wq3nbjDKU0k7Qy3agaJEvXj296G6JLx72hHidllBJZmkDk+gJ66fXsr3wxue2PRsiCZsBgdMchmHUvxbkFL5Ii/ehY9NbdgEhWZ1t98iOCBnk1LYdNTBRKvnMEsarVFZmBfFw2f3L9+40kUbl+PpgWl0cSChWzjswcJHOhZ9cKnDoEbalNwuyHIIlJAJbCvm95//GvEntxTJ0RiljWmf3KczPGBTWk+vmGI628fIaoKStQ/ZyBbdu3RalKTzJJG7swIhYHpuXtMFGj53H34trXBJtUuJl49W9euxt0WJfLwDlxNq4uaCy6Z5s8dqfXRtCyL0pi9gFhrSxirYtcgzm8L5N/RhqshiG97G0pjsDZGcXCG3LmxtfcVMy0KV6ZIH59zsgmyZJ/n7a3rO8+3+bNsljQyHw5SvDpTO2bJ76b9tx9DXm+N+2qeE9Mid36c8vhcVFNQJCKP7qxLL14O7/ZWAvNbE9zmCLJkR/PWezsItqEYfmBr3TNo5MsLyk6upzhQ35fU1RLGu6VldbX1gkDo3v67O0NogzByZSzdrJs/5IBndQ56QcC3tZXwA1vvDs0D0yL+q1NzPXYlEbWzAd/ODjy9TbX1oFGsEH/17C3c0duDTa2MVxRoaZUIhQQkWaBStkgkTOKz5rLvSdUDPT0yHu+8prgmTE8bjI+tvFgTBAiGBGIxEZ/PHts0oVK2yOcskimTfM5ach/cbog1iIRCIm63gGla5HIW8VmTdHrpHZcViEREQiEBj2du3HLJIpkwmZlZ/rgVBRqb7HFdLgFBAMOwKJUgkzZJJEy0ZVKmQ2GBxkYRr1dEFKFSsUinLWZnDMq3W4cD0yJ/YYz4y2doeuFQzTMu+1W6/96zjP6nV8ieHEJPFZZcoAuSsC6jMv7KGSKP7MC/uxMAyafS+NxBLN0gfm0BuoJRICgSkl/FFfMj+T2UhmY2pnfhJmDkS8z+8iT+3R24m8OAnX7b8TeeQBBF+zynV/CaCXZqkBzw4GoM2oveoZk7ozmtKCL51WqxumDL4MuiLYjgV3F3RAnft5XwvVvs+3DeYskolEm8eZ7pH5+47VUn3c0hXM0hu09WImcbPKswSES3TOiefjvttmpwWKZJ7szoqscuDEyRPnYFtT2G5LUNbSXqp+cfPM/o114lf2HcPn/L7Y8oIKkupKAHTJNKPLfsc2jkSkz/5AQdv/sEkqogiALh+7dSiWeY+ckJKrPZJY1dKeAh9sQuYk/uQVTs16BZ1sl+OEj2zPrUbiuzdqpS4/MH7XrogAdPbyPu5nCtfYKlGRSuTK4YaVkKbTZL4tUz+LbNCei4GoN0/RfPMPzvX6JwcXxlQ7eqGikHPbiaQlgVneLgdK2W+3Yjf36c9LHLuNvCyD4VQRTx7+6k6/efZuIv36Y8nly5lkgSkTwu5KAHd1uEylR6+T6LgJ4pkHjjHC1fuB9RlhCEqmPxmf1Mff/9pSX0JRF3S5i2rz6CIN/2/nigGgnf2Y5vRxu5s6NUZrO2IFyhsso5xE4Db3jmANFHdtbShC3TJPH6WbTM8u+X4vAserpQS/MVZYnIg9spXJ4k88FgXcuruv12yXj7mmn9ysMfK9XZ9aLFs3Z2THsUhKoYWVcM39YWcmdHl4wwCoqE2tVA61cftqPrt6tzfI3kzo9RHJwhsLuzqucQJHzfFlzNodox5i+MUxra/LYvtzubZix6PAJPPu3mi1/ysGePgtcnEJ81Ofp+hR9+v4ggUpfiMZ+2Non/4X8KsHefgtst4HKBVoE/+U95/j//Irfob64hy7Bth8xzz6s89LCL3j4Zn0+gXIF43GTgis6rL5d48adlZqYXLkQaGkUefczFJz6psne/QkODSKVicXXA4NVXyvzspyUuXdQxrpu7VA8886zKgw+72L1Hob1dwusT0CowNWVw9P0K3/9OkWPHNIxF3sl+v32+nnteZfcemYYGCVGy03AnJwzOnNb49jeLvP/ewpeiIMD2HTIvfFrl8SfcdHbLuFyQSJicPqXxixdLvPKrMonE7RWZ1VMFEq+dxdPTSGB/N2LV8HNF/XT/3WdIvXuZzIkBylMpjEIFyzBtCXOXjOh142oKEtjVseZxjVyJ8b94k55/+CncVQ+oEvHR8oX78fa3kHz7IuWJhK3yqBmAZRsYiozkcSH53Libw3i3tRDY24WRLTH0b3522xqLmBb5SxNM//AYLV96ECXkBUBti9D1X3ySxCtnSB8fQE/l7ZYBugEICLJot0HwupGDHtvrtq21JjE99mev3xHGouxz0/jsAdsgFu1Fo+h1oUT8tkBI0LOgBsqyLPRknuSb55n60bEVW0jUjRe01TUFWUSQJfu/kv1fUZHxbm2p+77okvFuacGs6LbXVzewDGPu/3UTo1BCz5aWjfSpHTE6/9ZTGEWNzAdX7dYX8eqiL1+ubR+hGk31uFEiPnzbWol9Ym9dk2U9VSD53sVVH7NZqNjPclcjoSP9iIpdF6N2NdD9954l+eYFsicHqcxmMQsVTK0qMiVLiKqC5LX3xdPZgG9nO6WxBBNff3NFAz3x8mkCezuJPLgdoWoQND5/CCXkI/nmeUpj1edYN+xj9rpxNQYJ3dtPwyf2olTV7izDJH9hnNlfnlx3v0E9UyB7eoTo47trbTz8uzvwdjfVnFqVmQy50yPrFkmyDJPsySFmf/4hTZ++pybApHbG6PmvniP+0ilyZ0bR0nk7e8IwQLAdJKJbsdWfQ177PG9vxbejncQrp5mYSN62xqJZ1oj/8hRqW5TwA9vs+d8lE35gG67mEInXzlK8MoWeKWKWNdu5KImIsoiouux7K+bH091oG0TbWhn8v19c0Vg0CxWSb5wndKjXjpBjp2Y3PncAQZZIvHqW8lTK7g1sWQgu2XYQdDXQ+NxB/NtawTDRS9qC1iy3HaKAuzNGx+88jpYqULg8Sf7yJMWhGfRUASNfwihVz61h2veULNacO96+ZiIPb7eFreaLpwzOMPPiB7UWMkthFCok3jhH86fvqWXpePuaafniA0g+N4XLk2jpIpZu2GsAjwsl7MO7tYXG5w7i7W0Cy0LPlj526rNrwTJM0h9cxbe9FaHqoPf2NtHw7AEsw6Q0Ep9rGyNgvyNifrxbW2n85D78uzpAFNDSBfu9eacbjYZF4pUz+Hd12A6+sI/A3i7ksL1GskyLxOvnbvFO3h5sirEoCPDMc27+238SwO8T+OhDjckJE1mB3l6Zv/v3/aiqsOSNFp81+dY3irz1RplIVOSTz6q0tqwugtTXL/Nf/n0/Dz/qYuCKwWuvlimXLbwegWhMZOtWmWLBzVtvVJi5TgW3oUHkq7/l5ctf8aAbcOmCzrtvm6iqQF+/xN/8fS+7dsn863+V49TJ+skvEBD5rd/x0t4uMTho8PprZcolC49HYNsOhc9+zsPWbTL/8/8rw+mTCyfOp59x8z/8T0Es0+LUSY333tUQBNuIbGmReOwJlWNHtUWNxX37Ff6rf+TnyH0uLpzXePXlEroGsUaR/QcUDh5SaG2T+NofF8jnby+DsTAwxdQPjiJ6XHZPO1kCQUDyuok9uZvIQ9uozGSoJHJYFR1BlpCqC30l5l+3eEDuzCiT33mXls/fV4u2SV43kYe2EzrcR2k8QWUqjVGqgGkvBCSPGyXsRWkIVA0Me+z8xfGNOh2bhlmokHjzPEosQOwTe2sGoxLy0vSZe4g9sZviaLzaMkC3I4kuGcmrokT9uBoDmypYsplIPjexJ/es7suWLdlfGJgk+cZ5Em+cQ4sv76CajyCLRB/dSWBfF4JbRnTZQg3XBBtEt7LgPMpBLy2fO4Lx3AHMso5Z1ux/Ktf+Xyd7cojk6+dWjm6KAr6tLXi3NGNVdMoTKcrTaTvSmCvVFDtFt512qnZEUTtjSOq8tNuSRvxXpyhcnlpqlEUpDceZ/ukJ5KAH3872WjTGFQvQ9OnDxJ7cTXk8ae9LTYVORg56UaJ+lFjAlmQHtFRhVandRrHM5LfeQQ56CezptFvDeN00fGIfgf3dFC5NUJnOYJQ0u+1CLIC3vwl3S2Qu2meaFIdnmfnpcQqXJ1cYcRlMuzarcHmC4P4eAAK7u5ACKoIoYJkmpbEEufM3Nl/omSLxl88gh322Yq9frakct375QfRUgdJYAj1dsCNuou30kQMqSiyAEvXXpVnfCRr45ckUUz88huRzEzjQgyhLiIqEf3sb3r5mtNkM5cmU3Ve2oiMoUjV66kWJ+VHCvroa5FWPO55k5mcfokQDtUiu6FJofP4ggd2d5C+O2/eqadlOxJYw3q0tyCEvGCbZU8Po2RLRR3du9CnZHAQBJeIjdG8/oXv7MTUDLZFDi2fRMgWssm47E0XBzjQJenE3h1AaAvXrOcuiODTLxLfeoTSWXHq8a1/XdBKvnSV0qBe1s6G6LxDY04naESN/YcxWMi9pCIqMEvKidsbwdDcged1YlkX2oyG0ZJ7YE7s36eTcHSRfP0vssV0156DoVog+shO1NUL2jN0z1tIMRLeMEg3g7W3Cu60VJeTFMi1yZ0fIX5ig6dcO3/lteyyLzIe2E9PdGERUFdTOWM3hUZnJkDu1fAr1x4VNudK9fRJ/7bd9hEMi3/1Okb/40wKjowaKDFu3yfzO7/l46BHXkm0w0mmLn/7Y9u4GAgK9ffKqjcX9BxXuu9/Flcs6//b/zvPBcY1iycLns1M0+7fIzEybjI7UhwZdbnjoERdf/qqHdMri639e4M03ysxMmXi8Avv3K/zu3/Ly4MNuRkcMxsfyxONz3uFsxuSP/l0ev1/g0kWdiXGTYtHC6xPYt1/hf/ynAbZslfnkMyqnTy5cfH7xy17cLvjLb5b4+p8VmJ01EQUIBAU6OiR6+2VefmlhelFDo8hv/66X+x9w8Yuflfnz/5zn6lUdTYPmZolnn3Pz5a96+eu/4+OD4xpvv1W5vUSCTIvsR4MANH/6HgL7uurEGuz0lhjqapv6rvLYLN0g/qvTWLpJ47P78fa31FLwRFXB29eMt2+VIgq30/lcBm02y/SPj2MUK8Se2mM3pBVtp40c8hKoGpAfV4xihcLAFNmPhsh8cJX8pckVPeLXY6fIdRB5eMcafmM7R5Yzxi3NIH30CqwyFVYQBAS3gqensS5iuBJ6tkji1TPM/PTEiqnYi5E9OcQ40PSpQ7ZqpWIbjNfSMuXtG+z1t6A4OMP4n79B8+eOEDzYW+sB5m4K1TIHlvy5ZVG4PMXkd94h9e6lG96d8lSK3NkxO61JlurUWY1Chdy50bo67XWPM5Fk6gdHMQplYk/sRonZi3VBFG3Dey29CG+rF8LS5M+PMf71N2nOl2sRRgBRkXC3Rmqy96tilYdsljVS715GCftofP4grga79lQQhOWfLQvSHw0x/udv4OlpJPrIjtu3rn0ZREXC3RzC3bx69WyjpJE/P8bMT0+QPj6wujnUguLVGSa/9z6tv/FA3bVUwl7C9y3T89WyyJ0eYfwv3sDdEnGMxRUoT6SY+sH7tP/247X5SXTJ+Hd14N/VYWe0mGZt7r6GpRtkTw8z8ZfvUJnJEPvE3nU5YG43tGSe9HuXaXrhkD2Hzjum9HuX1qQUezezKVf64UfddPdIzM7aBtTI8Jxh9v57GqqnwI6dMu0dGy9i4lEFVFUglbS4dEGvGXSFvMXMtMnZM4tPXNGoyLPPq/h8At/+ZpHvfadIriqok81avPpKGZ9fYP8BF/cccbFte5l33p5LwSuV4KVflK9vL0Q+b/HyS2We+oSbL3zJQ1//4qc8FBLQDRgdNhi8One+MhmLsVGT995dvCbjvvtdHDqskEmb/NG/y9UdXyatk0iY7Nmn8MRTbp59XuXddyoLUmhvNZZukvngKloyR+TB7UQf34W7NbLqFAfLNGupM7nTwyvX31UxixUSr5yhPJ4g/MB2O1e9KbiqaKVlWbaU/YVxO211qfqV24zKdJqZnxynODhN9OEdBA/3IVUjEythmRZ6Ok/u3Bipdy9h5NaXrncrsSwLTAuzomMUyujpApWZDKXxJMWr0xSHZykNz9apx94plMaTZI5fRfK4kcPeNaUIGSWNwqUJEm+cI/XOxbredmvCtMh+OIiWyFG4PEnk0Z14uhtX3erAsiwqM1m7hm6VhrpVbQ9j/Onr9n39yE57/lhB8EVL5Um/f4X4y6fInl59n7HlMAsVCpcmKE9nrlOEBD2VJ3Ns4+TXy2MJpn5wlOLAFJFHdtqG8irrtizTREvkyJ0dJX18YEED+tuV/PlxxrJvULgyReThHXj7mlZdt24ZJqWJJLlTw+QvT6z8gyp6Ks/Mzz9CzxRp+OR+PH1NtZKJRb+fL5F65xIzPzlO/uIEkteFni/f1qmolmFSGpolffQKvm2tdn33Go1bs6JTvDpN+tgVUu9dpjg0s+om72Ab5sk3z2PpBg2f3I9vW9uK7TP0bJH0+5eZefFDchfGwbQwSpW6TAmHhSRePweiSOPzB+1naN6aR5BFhOu0L7VUntQ7l5j95Ud2xolgt5JS9t05Ak5LYZY1Uu9fIvbE7jqRQ6NYIfXe5ds2Pf9msynG4u49MgG/wLH3KoyNLpwsThzTmJ01N8VYHBkxGB012H9A4W//XR/f/VaRD05oC4y464lERO6512UblKe1mqF4DU2DwasG8bi9323tC/d9qTEsCwYGdESxKnwjscBgO35M44tfkvncFz1UKhavvFxmanIFkRUB9u5XaGySeOetCkNDC891fNZkaNAWuDlwWEEUF459W2BaFAemqUxnyHxwFf/uTvzb21A7YygRH6Lqshf5mo5Z1Kgkc1RmMpQnUpSGZihPpajE7XSZtSz0zbJG9tQIxeE4ybfP49vWhm9bK2pnA66GQG3xdc240OI5ylMpioMzFK5M2ePOZFas3SsOzzLy739ZNxkVh2fXvEC1UyYyNVEOyzApryLNZz56pkjqvcsUrkyhvnyawJ5OfFtbcbdGkEN2H6ZrBpWeK1GZSVMaS1C8Mk1xZJbKdMZuWr7GqNvNwChpxH91mvy5sSW/Y1kWGCamZmCWNYxCBSNbtGsCbzDKYuoGk99+l/jLp29oO9dTiWdXrIktT6aY/M67JN+6gKevye4V1RxCifqR/SqiW0FQJCzLwipp6NkSpSn7+clfmKB4dZry5MbUrpWGZ5mazZD5cBBPbxP+He2oXTFcDUEkv4rokrAM2+FiZItUZrN2o/qBKYpDs5RG42sz2A2T4tAMlR9kyZy4anvJd3agdjfgivoRFMm+n9NFyhNJ8hfGyZ0dpXB1Gi2e3dDsgOyZEQb/r58sUFc2CpU191ZcCbuu9gL5i5N4ek8T2NuFt7cJV3O4+ixLYJgYFR09U7SFXcYSFAemKY7GqVRTlFe7qDcLFYb+8Od1Rml5InlTnSvlsYStTvzhIN6+Jnw72/F0N+JqDCEHVARZxNIMjJKGnsxTnk5TGo1TGJimPJ60j3mN9eV6Mk/85dPkL04Q2NtFYH83np5GlLAPQRIxCmXKU2kKlybIfDhI/vw4lVnbgZi/NMmVf/79Wtpzafzmnq9VYVoULk8w8h9ewtUUQm2LoHY32vNHzI8S8tm99RQJQRSxdPv8Gvky5WtzyOVJSkOzlKfS63YkGvkyyTfPUxiYxr+zHf8uW5nSFfUjVjMvjHypdq6zJ4fJXxinErfFrApDM1z5X75XExYqT6YWfTeXJ9OM/enrTP/wGGA7QrXk4g6y4tBs3T1v5MtLiu7lL4xz+f/97ZqhXZnJ1PWQtEyT2ZdOkquKaFmWRWl08TY9eqbI1A+Oknzz/Lx9WVxopTKbZfRrr1ZF3KjOdUs7zc2SRvzl0xSvTuPf00lgbxeerhhyyE7XtnQDPVOkPJUif9F2wucvTdrnyLRAgNH/8KtaBkNlJrOmOuzpHx0j+faFmkNTTxfQ0rcogmdalEbj5M6NErpnrtVN/ryd+nynZF5sNsJSIjMAgiCs+Sy53fBv/32Ex5908Uf/Ls//+b/nFj3X//4/hnn0MTff+HqBf/ZPl26AHAgI/J//KsSjj7pXJXATCAp8+StefvdveQn4RaanDc6f0/mrn5R4840yqeTCnRFEeOhhF1/7swiVCkxOGguMRbBFezo6JUQR/vk/y/Knf3JdbyAFtmyVuf8BF31b5KoyqYBbFWhtk2hvl3jtlTK//7tJ9OvWY339Ev/sn4e494hCKmUxNqpz9H2NF39a4uxpjcoitojXJ/C//osgn/6sSjptMT5mLGqwNjeLRGMiibjJI/fPLKuoersgVoVkJFWxRUIkESx7crUME0szbMOxrNlCDkuopa15XNUWgRBVF6IizVOHnDduRcMoVqrCBhsy7K1DsNVgJa/LNiZkyY4CXTvXulGrnTMKldvSQHRYiOhWEL0uWwxEkezoiyDYtXMWYJpYholZ1qv3cnndoisrISiSfY+pCoJLtj3XwnX7Mf8e0/Qbfq5q84fHVUunsszq/VzWbcGOYmVDoom3DaIw9yy75Ppned71ts9zeU1Rn9sV+95yI6mu6+4tCwwLU7fna7OkYVZF0m4UUVVs54vXPTeeYdLxYDvdj3Rw5k8+YPLoONYdfG/ZNfoKoss2EEVFAlG05xCB2vm1n10No6ht+BwiuGRknxvR47Kdo9cyBa6NmS8va7jVb0zgqf/f02gFjTf+p1exjDv32mw0oqogB1RE1VWbM+x3v1mbK4xCZV1lCXcKSixAx+8+MZfCbMHIf3iJmRc/+FhFFi3LWjKdYMMjiy6XgKzYOf2FwtIPZKFgbcp7Opux+NOv5XnnrTKf+XUPn3xW5cGHXDzwoIuJcYPvfLvIj39YYnZeGwuxKiQjigKybBGNigSX6NGez1tYJmha/c63ton8w3/s5/HHVRAsNA3SaZNUym67kc+ZwNKR1KsDBv/g76Z49HEXn/uChx07Ffr6ZT7/BQ8ffljhP/y7PMePa+jzDD3VDW63XQ+kuqG1VVpyjZVOW+RuM3Gb5TCrxtjNtmvNknb7eX03E8tWh70TU0odluaaSM7tgKUZ6Kk8N/OVe6vmj1uKaWFkixgbUGMje2Sa9jXT83Qv0e0xFK9COVNm9twsV35yifjZjY2Qrhf73iqgc2MNsxt2N7L/bx4kui2KZVqYhkk5XSF5Oc7I6yNMHp9Ay9vOQbOkUSlpwJyTW5RFfMEumvfEGO+PMHNyCr145y4yrYqOXtGBW1evZVV0tIoOG6EyLkBkS4RKtmIb93e8l3fjmLufP6YIdtup4MGe2kfF4Rly58c/VobiSmy4sVipWOia7Xma3yfxeq71EdwMymU4fUrn9Kksf/ivczz9jMqnPq2yc6fMf/PfB+jrk/nXf5CrpXlalm28WpbF+XM6//L/yHLi+NIPj2XZx3kNxQX/8B8H+OznVC5d1PnPXyvw8i/LxONzBunv/x0f/90/WbqRqWXB7KzJ975T4ic/KrFjh8JzL6g8/KiL+x9wc+iwi3/wX6Z4/dW5EGO5Yu+HZVl877sF/uBf5imVlp4ETdO6I6KKDg4ODg63BjWisuM3drH9CzsxSjr5qTzlTBl30E3HAx2YFfO2MRY3ClEWcYXsNMfZc7OYmomnwUvL4VY6H+1m7O1RTv3JR6QHU4tGvU3dJHFhltE3Roifm8Uo3/lRWweHjwOi6rJVpUPX2mWYZE5cpTyxtvKeu50NNxbLZUgmTXQdenrkaspC/XdUj10juM6uB2simbT41jeLvPjTEl/8soff/zs+nnrazasvl5matNVFTdM21NJpi2BIIBAUyeVW73kK+EWeeMpNJm3xve8U+dY3FnrjIpHVH2ylAidPapw8qfHdb0v8o/8uwGOPu/md3/PVGYuFvMXsrEmlAl1dMuWytab9dnBwcHBwuIbokuh6vIcdv7GL9ECKM39xivF3x9BLOrJXpuVwK7nRpctG7nRSV1Mc/4P3yY5lEWWRxn1N7PjiTjoe6sCoGHz0xx9QmFo80jX8yhDDrwzd5D12cHC4EdytYcIPba/VT2rxHNk1CCV+XNgUgZszpzUef9LN7r0ybe3SgjYVe/YqNDaJGx5ZFAT7n8Xq9rJZi7feqPDEU27uPeLCH6gfPBE3OfpehUcfd3PvEYV336kQn108R1sUbQP4mhHs9Qq43ZBJW0wuIkoTiQgcumfpqOL125vP5UsGr71S5sh9LtqvE9WxLPjwhMbTz9iCPnv2ybzz1uKhw+XOjYODg4ODgyfqYfsXdlBOlTj/7bMMvzZUi6TpBZ3RN0aW/K23yUu4N4I7rNp99pJF0lfTFOOFumict8lL495mEhdm0Ys64f4IalgFAcrpMvHzccqpxdPiF45RIn01tWCMjcDUTaZOTFJOlZHcMp2PdDF5fIKhl65iVmvz3CE3bQ90IMpzzuDpD6fIjmWW3B9BFPC1+Ql1hVD8LgRBQC9qlJJFsqNZSqnSgt8KooAa8xDqDqGGVURFxNBMKpkymZEM+Yncgu/72wMEu0O4/C5M3aQwnSc9mKKSmSeAIAp0PdqFZVpMHJtALyxcP4R6w0S3RUkNJEleqo+2eBu9hHrDqBHVbn+RLJEZTFGYXXg91IhK8+FWkhfj5KfyBLtCBNoDyKqMXtJJD6btyO11XD9GKVkivcQYCKBGPES2RFAjKqZhUZjMkRxIOTolDgsQVYXG5w7iqgr1WNXeqIUr0yv88uPHphiLb75e5tOf9bBjh8zf/NtevvHnRcZGDSQJevpkfvMrXqIxccMfXo9H4NBhhWhMZOCKztSkSS5vIUkQi4nc/6CLzi67z2I6XT94Im7ykx+X2LNX4amnVbI5i1d/VWZ83EDTQFUFGhpFursl0mmL996pUCza28hkTZJJi1BI4NAhhaPvVpiZMXG5oLtH5oVPq2zZuvSpjsVEnnzazeiwwciIUYvMqip0dEocuc+FyyUweHVh/vR771R4/x2NT31a5b/8+34CgQKXLurkshaiCP6AQHOLRH+/zKuvlOvamDg4ODg4OAB2XVd/mFB3iJE3Rxh/b2zVBljD7kb6X9hK84EWJLctkqEVNCaPT3D5xxdJXkrY2xIgsjXKkX98PwMvXgYEmg+14PIrKD4XWq7C8KtDnP7Tk1SylYVjfGorzQebkdxybYyp4xNcmj/GBpMeSjH65giNe5to2t/MxNFxSnE7e8gdctPzdC/uoBtfix9vg5d3/rc3yU/magblfARJoO3+dvqe6Se6PQaCgKSIWEApUeT8t84y9PIgpjb3W1ERadjVSN/zW2jc04jiVbBMC0EW0fIa5791lks/uDD3fVmk9Ugbfc9tIbbTbnAvVA3x0TdHGPjZFXLj2drnWz6zjVBXiLf/+ZtMHZ9csM/bP7+D7id7OP6vj9YZi7FdDfR/aisth1pq10MvXrvml0hcjNddj2BXiCP/6H7OffMM2bEsfc/242/1o/hcCAKc/865BcZibYyDLUjqvDFOTHD5RwvH8Lf62fGl3bTf347sUdAKGqVEkaGXB+/ENpcOm4ioKsSe3EP00Z21zyozGdJHr9SUjB3m2BRjceCKwV/8aYH/5r/38+uf99DXJzMxYSBJAp1dEppmcea0xv4DC6NtwaDAkftcdHZLqKpAKCSydZuMJNs9Bf/hP/ZTKlmUShajI3bU7ZpSqKrCE0+5eeY5leFhg5lpg0LBQhIFwlGBbdtkQiGB7367yLmz9R60SgXeeqPMf/6axFd/y8tXf8vLAw+6mJo00XULt1sgGhNpa5d47eUyH35QoVjNNi3kLX70/SK//3d8PPeCSmOTyOysiaIIdHVJtLRJfO87RX73b/pYjEhU4O/8XR/ZrK1omklb6IY9ZmubxK7dMrMzBl//84Vh8dlZkz/5Wh63KvCJT7ppbZMYGDDI50xEUcDnF2hsFOnskrh0UWd0xHA8bA4ODg4OdQiiQGxXI3rFIH01RTldXtXvQj0hdv+1PYT7Iwz8bIDMUBpJEWk60Ezno13IqsTJ//RRXfTL5XfR/WQP6aEMAy9epjBTwOV3seWFrWz59DZSV5IM/OxK7fvBnhC7vrqHyJYIV382QHo4jSSLNO5vpuPRLiRV4tR/+ojcxDr7gy6DZVhkhtPkJ3JE+iO4g+6asZifyvPBHx5H9spseWEb/Z/asuy2Au0BdnxhJ4GOIBd/cIHceBZBElEjKv62AJVcpV6pU4BQT5gDv38If0eAsbdGmDk9g17QkD0ygY4g2dH6hW3j/mb2/s5+XAEXl354gexIBtmr0HK4lf4XtiIqIue/dZZSsoRlWgy/MsQ9/+AIrfe2LTAWFb/9u2K8yOSxud6Uwe4Qu7+6h8jWKFd/cZXMYKqWttvxSBeyKnPyax+RG6tPWZZVmfYHOsiNZ5k9O2M7DAQBb4OX1EB91DLYHWLXV/YQ3RZl8JdXSV9NIcgiTfua6Hi4OsZ/mhtDUmW2fHobfc/0M/3RJCOvD6MXdQKdQXqf6cPldy1wQDjc3UheN67GAHp+Tv1Z8rlxt0UI7Osm+uhOpGr/U6NUIX1sgMxHQ3eXSvYGsSnGomnCiz8toWkWX/iSh917FO454iI+a/L+exW+/90iPT0yO3YsHD4aE/n1L3i4734XigKyItTEcPbuV9ixS0HTbBGd48cqvP9upSY2k89bvPt2hbZ2ia3bZHbvkfF4BAwDkgmTC+d1Xnu1wK9+uXgPw2TC4jt/WWBoUOfJp9wcPOxi23YZt9tWdh0bNXj7zTK/+HmZ/LzaQF2Hb/xFAcuCT3zSzZNPqYiSPebpUxp/8C+znDur8/kvehY9X1OTJj/9cYn7H3Rx4JBCMCgiSVAq2mmtP3+xzM9+WuSdtxaf6M6e1vlX/zLLqZMVnnpaZe8+mVBQxLQglTQZHNT5+p9VGBjQHUPRwcHBwWEBgiDga/bZojbTc3V5ka1RtrywFU+jLQBRjBc5940zdnRKhI5Humg62MLp/3ySyz+6iJbXQICZMzMofhedj3Qz+uYo+ck5Q05ySZiayZWfXGT4tWHMigGiQCVT5oH/8WE6Hu6cMxZF6Hyki+ZDLZz505Nc+mH9GK7qGGNvjZKbzG1KdLGcLlPOlPG3+ZHVuXIQo2yQumIbOS2HWlcc298awNvsJ34+zuUfX6KSsQ1yQRJw+V0YFaOu5YasyvR8opfw1ghXfnqZs39ximK8WBtH8Sl1UUjF76Lr8W5CvWE++MNjDLx4Bb2kgwCzZ2aQ3RK9z/QzfXKK8XftyPHUB5PoRZ3YjgY8DR6Ks3OaC037m1EjKoO/GrTTPsG+5g930nyolbN/cYqLP7iIlqvY1+P0NIpPoePhLsbeHrXvkXnnRFZlvI1eBn85wMCLV9Cqaa+iItZqxq6N0f5QBy2HF44xe3oaxbtwDDWssuVTW8lP5jj9p6eYPTsDlq3sK7klottiq77eDncHaleMjt953G57Vm39IboV5KAXV3PQbhdWbX1TuDTJ7C8+Qk9tgPruXcimGItgq4u++FclPvpQIxQWkSUoly3isyazsyZnTmucOqmRSNQbbZMTJn/wf+UIBlfOGcjlLPLz2kGUy/DmGxXOntUJBARUVUCS5tRLMxlbEKawTAuJZNLi5ZfKfHhCIxIV8Xjsbeg6FIsW6ZRJMmkuUBWdGDf54z/K85MflfD5bOO2UrFIpSymJu1o3t/4a0kKBQvjukzQdNrij/+owPe+U8TrFVAU+/eGAaWSRTJhn7PrfzefqwMGX//zIr/6ZRm/394G2PuQz1skEiaZtGMpOjg4ODgsggCyT8E0LPTi3AvO5XcR2RIl0BFAjXrIT+W58tNLMA6eqJfYjgb0gsbUiQnbiAOwIDeeJXkpQfeTPYS6Q0xUa9PAVkvPDGcYf2/MNhQBTIvpj6awTAtfi782vifqJbY9hl7QmTw+uWCMxKU43U/1EOwO2fVvm9CywqgYGBUD2S3Xeu+uh1KqhF7UiO1qoOlAM2NvjlR7+FqLRnJlVabjoU4KU3lGXh2qM+SAuXNRJdARINIfITuSYerDqdr5xoLsSIbJE5O03tdOdHuM6Y+m0QsapWSJyeMTxHY0ENvZUFeX2vlIFwgCI/NqVz0Rj309itXrkavUxshN5EhcTNDzdJ99PTwyemHuegiiQGYkw8TRiZqhCNQZvLUxdjSgl5YaI07PJ6+NoaAXNML9YdxhlfH3x4lfmEtP1Ys6o68Ps/3zO3H4eCF53fh2dth9QpfAMi1Kw7NMfPMtCledWsWl2DRjEUCrwNCgASy0cpIJi2RiYTF1qWRx8cL6J/ti0Y4A3gi6DtPTJtPTq1eDsSxb4CaTXnrfP/pw6b4VyYRJMrGm3VxAIW9xdcCpSXRwcHBwWDuWZtpiaPOkymfPzPDGP30VURZ59J8/gTuk1v7O0+BBjXrwNvp4/P94asGiX/G7wAIl4LIXbFXjxdRNivFCvdgKc8aPqMyN72nwoMY8eBu9PP5/PLnkGC5/dYxNMBZFWUSUBDvydwMN3VNXklz9+RV2fWUv9/+3D5D6wk4GfzHA2LujdlroddsWXRLBnhBTJyZJD6VW3L4n5kWNekhcjNt9IedhmRbF2QKVTJlAexDFZxtZelFj+NUhOh/pomlfM2NvjdYM9obdjRRnC0x9NDVvDA9qzIu3yctj/+JJTK1+zaH45q6HpEjo13VYLSVLFGaWj96oMQ+e6jVffAxl3hgiugCB9iBGxSA/mcO6rl40M5pZtIbU4S7HssA0sUwR5sefLOzPq4I2o3/yKqWhWTCce2QpNtVYdHBwcHBwcLgDqCpNioqEWu05CHZUrRgvgmD//3wkl4TkEqlky8TPzS6IdF0jeSFet+C3DGsu6jV/Fxapk5BcEpIiVcdYaARdI3ExvsCo2CjcQTeukJtSsoRxA426Td3kwnfPM/3RNNs+t522e9s59PfuZddX93Dx+xe4+ouBOiVYySUhyiKmbi56vq5HUkQkRcQoL27UGpqJoZnIqoxYjZBahkXqSpL0UJrItijBriDpwTRt97XhiXm58L1zmPP6Roru6jXPVIifn52L+l1H/EIcQ1u4+DYqBnpp+etk31fSimMkzsdrzgNZlbFMC2OR82SUjMXl5h3uasqTaWZ/eRJ3WwQ56EF0KViGiZ4uUByaIX1sgNzpEcyy04B8JRxj0cHBwcHB4WOOZVokLyfY5tlOoDOIIAkrRtGMsp2eWZgp8MH/c4LMUHr5QdahSFk/xvGVx9hgBEkg0BnE3xJg5I1hypkbE0mxDIvEhTjv/u9vE+gI0vt0H11PdLPv9w4guUTOf/scRtU4MysGZsVEVEQUj2IbPcugl3T0ko7ilRHkhemysltCdkto+QqmPretUqLI+Ltj9D3bT3R7A7nxHC2HW5HcEqOv17dLMcoGRtmgOFvgw39/gvTV1HrOwrJ/u+YxBNAKGoIoIHkWLmslVcaRQ/34UZ5IMvyHv7jVu3FXsP7kewcHBwcHB4e7Asu0mD03i14yiGyNEu4Nr/ib4myB4mwRf7VtxHqMwVWNES/YYzRuzhhLItgKpm33tSMqIjOnpimnF+8BuWaqdYSn/uQjPvh3x6lkyjTsbrSPsYpRMUgPpVAjHkI9oRU3WZguUIwXCXaFcAVc9Ycii3ibfLgCbrJj2boocCVXYfbUNJJLIrI1QmxnA4HOIIkLcXIT9YqmxdkixdkCvmafva/ixl+QYnyNY1TPpeSS8Lf669KYwa7lFBcxnh0cHFaH8/Q4ODg4ODg4kJ/MM/zaEKGeMFs/MxdhhGt1e/VLhlKyxMzpaUzTovfZPnzN9e2hZI+Mv9WP7F1/EpM9xow9xjP9+Jr9dX8/N8bCVlw3guSSiG2PseMLu2g53MrE+2NMfzS1oGZyLahRD74W3wLDxU7N1AGhLgKmF3VG3xzB1+Sl64kevE3XnV9VtpvVV8mNZ4mfm8Xb6KP9/g6U6jkRRIFwb5jWI20UE0USF+L1QkAWZMcyJC7MEumP0PVEN54GLyOvDS1Ify2nSsycmcE0THqf6cPfsvCa+1r9tbHXQzlVva9qYyy85tePkR5MUZgtENkSpXFPE0LVwJQ9Mt2PdyOrTiKdg8N6cZ4eBwcHBwcHB/SCxqUfXiDYGaTnE714m3wkLycwygauoAt/e6DOyLBMi5HXhwn3Reh8uBNRloifncGoGCh+V824ufyji7UWE2vl+jEkWWR2/hiNPhBubIxreJt89D7bj1bQ8DZ4iW6PEdkSIX5ulvPfOlfX01CQRcK9YVwBF5JbItQTRhAFItuitKVKaAWNSqZCaiBZa4fRtK+J9gc7KKVKFONF9KKOO+iiaX8z7rDK1V8M2PWhVfSyztCvrtKwq4GuJ3pwBdzEL8yiF3UUj4KvyUd6OM2lH1ywv1/SGXp50G538ultqBGVzHAG2SvTfKCFcF+EKz+5ROJCfMGx56fyTJ+cpv9TW/B3BDE1k+lT0wuMY8u0GH1jmEhfhI5HuxBlidkzM+hlHZfPhbfJiyAIXP7xRZKX13/NR98cIdwfpfPRLiRZYmaxMX5yieQlWxmwlCpx+YcX2fnlXez93f2MvzOGVtAIdASq6q1OXZqDw3pxjEUHBwcHBwcHLNMicTHOB//Pcfqe7aflcCsth1swdQujrJMZTDP+3hj5qTk1y/xEjrN/cYr8RI6ORzppPtgCAliGSSlZYvzdsSVFaVbL3BjZWl/HjR4DwN/mZ+eXd2PqJqZukhlMc+4vzzL65gjpq6m6Gk7Fq7Dnr+8j2BVEVCQ8URVBEuh5qpfWe9vsFNLBNO/8i7dqoivlbAVX0E3LPW3IbhmzqshYmClw4TvnGHzpKvq8lhJYkB5M8+EffUDvJ/toPthCy6EWu+LPtCjGiyQu1Rt+yUsJTv7HD+l7vp/2hzvpVmUsw6Iwnef8t88y9KvBRdt06EWdxMUEvc9YBLuCDL50lcJ0YfHrMZnn7NdPk5vM2ddjf3PtepRTZcbeHaOyhNjRark2Rn4yR8fDXTTub4JqT7xyqsz4u2NU5gnfGGWDK391CVEW6Xq8m11f2YNW0MiOZLj4/Qts/ez2uhRfBweH1SMspj5W+0tBcOSjHBwcHBwcPkYIkoAa8eBr9iJ77FQ/o2JQyVbs9gvZhYaZ4nfhb/XjDroRRAFDM9DyGsV4gXK6XDO03GGV6LYo+an8QrEawW5ub1QMZk4t7Hm22jHWiivgItgdwuW36/wsw8KoGJTTJQqzBbTcQsNHVERiOxuWTbfUChqzZ2Zq+yWrMt4mL+6wiuyWQbR7DJYzZQpT+UXPK9hppO6QG2+zD5fPhSAKmIZJJVshP5lb+DvBbnHha/GjeBTMqoGVn8otqVh7/XnIjefIjmcXtKGYj+JX8LX4UUO2oWxUDLSCRnG2SDld3wrEFXDRsLuR/FR+TaI418Zwh9Ra+5KlxkCwxwm0BVH8it1DL1EkO5Yl1B1C9ir2feWsbB0cFmBZ1pLFwY6x6ODg4ODg4ODg4ODg8DFlOWPREbhxcHBwcHBwcHBwcHBwWIBjLDo4ODg4ODg4ODg4ODgswDEWHRwcHBwcHBwcHBwcHBbgGIsODg4ODg4ODg4ODg4OC3BaZzg4bCDukBt/ixc16Gb2QoJytoKkSJi6Weu15eDg4ODg4ODg4HAn4BiLDg4bgCAJtOxvpP+ZHiLdIVx+hdf/+XtkRrP0PtlF8mqaqY9mbvVuOjg4ODg4ODg4OKwaJw3VwWEDiPaH2fHrW5FkkYs/HcDlV1A8MoIoEOz0035vy63eRQcHBwcHBwcHB4c14RiLDg4bQKQvhCAInP3ORS69OEA5YzdJ1ssGxUQZX6PnFu+hg4ODg4ODg4ODw9pw0lDvQtS2MG2fO0xgTwdGocz0z04x+8ZFzKJ2q3ftrkVySRhlnWKyhKlbXKtOFEQBSRExDade0cFhRQSByL29NH9qP2pbmMLgDKN/8S6FwdlbvWcODg4bTOtnDtL8/H4knxuAwuAMg//+VYojiVu8Zw4ODvNxjMW7DMnnpumTe2h54QCIAgDejhjF4QTZ8xO3dufuYnITedyPdNB+pJWx9yYQZRF3yEVsa4Sm3TEGXxvd0PEEWURUFSS3gqBICJIIAmBaWKaFpRuYFQOjVMGqGBs6toPDZuHtidH+xXsJ7usEATwdESSXwvl/9kMsw7zVu+fg4LCBSF437sYAckAFQM8UEGQn4c3B4Xbj7jYWRQH/thZE19xhmiWN0kQKPVu6hTu2eUiqgqcrZhsPVZSIF1dDAMRJcBQ5N4Xps3GiH0yx6/Nb2fJMD/4mL7t/YzuiJDJzNs7Q6xtjLEoeBVdjEF9fI4Gdbfi2NaO2hJD9KoIsYlUM9EKZykyW4miS7LlxcpemKE9n0FIF5/p/zJG8Ljxdsbo5cSEWmBambmKWNYyihp4rYRQqm37/uJuCKGEvQtXRJcgSrqYgckC1718HBwcHBweHm8pdbSyqLSG2/4+/hrs5iCDYi4/SZJrBP36N+GsXbvHebQ6WYWLk6g1ho6ShF8rg2AmbhpbXOPe9SySvpGg52ERmLIteMpg+PcvI2+NUcjeWAixIImp7mMiRPhoe2Y5vS9PiC35ZQvK6cDcECOxso/ETu6jMZkm+f5XZ186TOTnqRGg+xni7G9j2338KtS285Hcs08TSTNvpkMhTnkxTGJwlf3WG4nCC0ngSs6xvyv4ZhQpmZW7blmlhFMp1nzk4ODg4ODjcPO5qYzF8qBvZ564ZigCuBj++3kaS7w1glu6+Gj49XyZ5fJDArjbcLSHMokby6FWKowmwHGtxM9FLBqPvTTL63uSGbld0yQT3ddDyawcIH+xG8rhW/VtBEHA3Bml6ejeWZZE5MwZOVqrDMgiiiOAWcbllXBEf/v4mYg9uRc+VyF2cJHVikOT7VykMxTd8TimOJEh/NIIr5kcOqJQm08y+ct6Oajo4ODg4ODjcdO5aY1GQRUL7uxA9St3noizh62/C3RykOBS/RXu3eViaQerYIGZRs43FUoXM2XEqs7lbvWsO60CQRSJH+uj48n34tjbX0vOuYZZ1SuMptEwBy7SQVAUl4sMV8yEqc4+3liqQOTni1C86rA8B5IBK+HAPgV1thPZ3MflXJ0m8c3lDU1O1VIHJn3xI7vIUStBDeSpD6sPhDdu+g4ODg4ODw9q4a41FT0cUT2e0rnbvGr4tTXjawnelsQhg5Msk3x+41bvxscLX7CXcHSRxJUUxXkJWJXZ+biuhziATH0wx+OoIRmXt6Z+BHW10/faDeHsa6z7XsiVSR6+SPHaV8lTajrxYICgSss+NqzFAYEcr4Xt6cDcEKAwnSJ0Y2qjDdbhLMDWD/MA0uWviV4KA6JaRvW7kkAdPZxRX2GeLJ1WRPC7C9/biagqihD1M//w0lr5xqc2l8RSl8dSGbc/BwcHBwcFh/dy1xmJwTztKxIcgCFimhVnWaul7rogPb18T6Q9HMIpOepPDjRPbGqHzwTYK8RLFeIn+Z3rY+nwf8UtJtj7fRyWvMfLW+Jq2KQdUOn/rQbzdDXWf5wdnmPjecVInhijPZBeN7AiSSOroADMvnSF8bx+lsQR6unhDx+hw92HpBplTo4x96/3aZ4IkIsgSoltGCXnwdsaIPNBPaF9nbQ4VBAFvV4z2Lx5BACZfPOWIJzk4ODg4ONyF3JXGoqBIBHa1oYTsRuhGsULq2CDRB7cgVtsMBHe3MfvaeYxRx1h0uHHUiBtJkdByFVx+hW3P93Hll4MMvDTMzs9uofVg05qNxdZPHySwqw2qNbeWZVG4MsPwn71F6thVzGVSSi3DpBLPU4nnyV+dwXL6PDosgmVZGMUKWnJxpdEikD03QeK9KwT3dtL2hXvw9zeBKCCIAmprmJbPHKKSLJB4+/LN3XkHBwcHBweHTeeubGjj62/E0xkDUcCyLMySRuLdyxRH5tJOAzvbUFtCdelVDg7rxgKzqjLa+VA7skfmys+HKMaLFOJF1LB7TZvzbWmi8RO7EN22P8eyLMrTGca+d4zEewPLGorXY+Qrd6WYk8PNwdIMKrM5Zl8/z5V/+TOSR69i6SaWZSGIAt7uBlo+tR9vd+xW76qDg4ODg4PDBnNXRhYDO2wlUEGwjcVKIkf65AjBvZ34+poAkP0qwT0dZM+Ob5jSniAJSH4Vyeuym6XLIoIoYBkWRklDSxcw8ndpCwsBJJ8bOaAiqS772AUByzAxdQOzWEHPle203404flFA9ruRvG4ktf5cmxUdLV2we2nepHOdny7gDrrY8lwv7fc2M/LWOKVUCVEWcQfdaPk1SP9LAk1P78HVEKgp+VqaQfL9q3b05la0vhDsBsr29VUQFKma4m1i6SZGsYKeLW3c9b0eUUAJepD8biSXbPeUBDAsTE3HKNjjb2RLB0ES7Xva70a89jwLYOomlmbUjnmz2kjcdhgW+YEZBv7NS2z7H14gsLMNBBBEgeC+TqKPbKM0efTOOh+igBxQkb2uuWssioCFZVr2/FXWMcsaer6CWdY2/P4WPQqyT0XyKIguqVpnb7+7ME1Mzd4Ho1jBKFSw9BsTqRIUCSVgv6dEt1Kr6792rHq+hJ4rY2l3jxiWIIvIPjdS9VkWq43frz3LeqGMkb1JLVpEAbn6rhSvvbuovis1A7OkoefL1Tr09d9sgku2r7PPheiSEUQRy7KwdAOzomPk7flrI1spCbJoP08+FdEtI0jVMTUDo1BByxYxi/Mdl3fjYsjB4e7jrjMWJb8bb18jStBOQcW0yJweQ0sWyF2cxPzkbkRZAiB0oIupF0/euLEogNoaxr+1mcCeDny9DbirjdJFl4xRqFCeSpM8Nkj+8tSyk7NlmJTGUxRHEssOKQdUvL0NyH51xd0zihVy5ydvqD5TbQ3j6YggKBJmRacwFKcykwVAiXjx9TUR3N9JcHc7nvYIckAFUcAs2kZycTRB9vwkmVOj5C9NYhTXH+lyNwXxbWkitK8Tb18jamvYfvG6ZIxihUo8R+rEENkz41jGMqmapkV5Kk3h6uy69+Uas+cTTJ+apeuRdorxEpdeHEAvGagR+xGLX1z+es5HbQ4R2NWG5J57PEvjKRJvXrKdDTcZJeLFt6WZ4O52/Dta8bRHUEIeREXCKOno2SLF0QSZM+Nkz41TGJhBSxfWtA7w9jbWIv1GvkxhcBatWmPpagzg39ZM+HAv/u0tqE1BJJ8dqbVTKPMUhuJkTo2SOTlCYTRxQ6qvgiTibg7i21o95q3NqC1h5KB9TxvZMpVUnuJQnMzZcXLnJygMzX5s2juUpzKMfft9tvzDZ1BCXgAkVSF8sJvU+1fJXVy5dYy7NYS3M4YgL5/cYpkW5ZkMhSszG7Lv1xBkEbU1jLe7gdD+Tvv+aw4i+dVaNN9eUJepzGQpTabJD0xTGEpQnkpTns7c2PUWBVwxP97OKL6tzfi3teDpiuGKeJG8bjsrRrcNBy1VpDybpTg0S/7qLMXRBKWx5JKpw0sO6ZLx9jTg39ZCYHcb3p4G3I0BezwBzIJGaTpD7tIk2dOj5C5MUppIr9qAUlvDeLrmROWMYoXCYBwtmV/z6QFAAHdzCF9vQy0VHwvSp0YX9BJechOKhNoSwretheDuNvxbmnE3h5AD9vyhZ8toyTz5wRmyZ8fJnZ+kMDS7boeH2h7B0x6xnVm6SfbCRF2tuBL14d/STOhAF4FdbahtYWS/GwQRs1ihksxTGk+RvzJN5tQoqQ+G1lwLLHkU1I4o/u0thPbZDnJXzI+oyli6iZ4tUZnNkrs8TfbMGNnzE5TGkzdmt4kC7qYggZ1thA924dtmz9Oi1wW6SSWZpzA4S/rkiD1HD8cxixqmZthOEQcHh9uau85Y9HbF8HbHai0GLMMkfWIISzMojiYoT2fxVBtS+/qbcLeEKE9n1j9RSiKh/Z20fGo/4Xt6kb0Le+CJIQ9KyIN/W8uKm9MLZSa+d4Lh//zmst/zdMfo+f3HCWxvXXGbheE4F/6XH1EYXL9RFH2gn46vPoAS9KClCwz/6dtM/vhDPF1Rmp7eTcMTO3E3BBa0dhADEnJAxdMRJXr/Fgojcab+6iQzvzxrGxRrQRQI7Gyj+bm9RB/cihJYaCiLigcl6MHX2wifX35zRllj6sVTXP23v1rbfixCOVPh7HcucuWlIbS8jlawjWEtrzPw0hDFxOoWNwCBXe24or7aAsnUTfKDs2TOjt3wfq4JQcC3pYmmT+yi4bEduGL+BV+R/RKy343aGiZ8uJfydIb4mxeZffU8+SvTq1bJbHlhPy0vHEAQBYqjCQb/+HUS71zGv72F5mf2Ent0O7K/vmcqzF1vb3cDsQe3kjk7xtRfnSTx3hWM3NoNa9GtEDnSS8MTOwgf6LadHtd/J+K1DejeRmKPbCM/MMPs6xeYffU85an0x8JZnnx/gMzZcWIPbKl95utvwtffSH5g5esevb+frt9+GNm3fHq2qRlM/+I0V/7VLzZkv6HaAuRQD41P7SR0oMuO7ggL6xHEqrKwuylIYHc7DU/uxMiVyV2aYvqXZ0i8fWldBqPkdxPc3UHsoS22qmzUv2DetL8oIrkVlJAXb3eMyOEeLN0gPzjL6DfeJf76xVWPqUR8xB7eSuPTuwlsa1lUJVwMSviDKv4tTTQ+voPs2XFmXj5H8v0BtNTKc7W3v5Gt//WztWemPJtl+D+/xfTPTq16P+cjed00P7OHjq88UDs/WqrAqX/0TYqrMBYlv5vokT4anthJcG/HoveaKyrjivrw9TfR8NgOchenmH39PLMvn1+Xkdvw6Hbaf+NeZL+KXihz8V/8lOS7V6Cart30yT00PLYdV4N/4VwWUG0ncFeM6P39pE4MkjkztqYSAndzkOiDW2h8Yie+/iZE13VLPFlCUhXcjQH7XfrJPSTeu8L0S2dIfzCEWVqHkSwIBHe30/LCASJHehc6sCURtSWE2hIifLiH/MAM0z8/RfxN+/nZyMimg4PD5nB3GYuCgLenAU97tPaRli6QrXq6KzNZ8penasbiNW949tz4+iIRAkSO9NL1Ww/h62+aM1BN23unpQqYFQNRkXA1+FcVBbwTEFUFb3cMT1eUzt+8n+gDW5AWMZIXw9MRpfMr9yOqChPfPb76aKcA4YPddHzlfgK72mtpRJZpoufKaMkCZkVHVCSUiA85qC66ANxMDM2kMFOvOGpUDJID6dVvRBDwbWlEroozgR1py54bv7l1h6JA+HAPbZ87bC+oq9H45RBEAbUlROunD+LtbWT820dJnxxZczqbHPLibg4S3NVOx1fvJ7Svc+GiZ7HxZZHgng7cDbYXfeals2uKEIgumebn9tL6mYN4OqIr/wA7Cunf2oynI4K3M8roN99bMSvgbsDSTWZfPkf0vv7avCf73Pi2NiO/O7D+aNImIwc9NH5iF22fPVQrVVgtgmCnrIb2d5K7NGkbAWtEifpoeno3TU/vxtOxeGunZfdBlhBEET27ekeI2ham5dcO0PzMHiT/6uZFyeMifKgHT2cUT0eEiR9/WMskWYrMRyOUpzNIVaeOK+LDv72FxFuX7JKANeJuDBDc11lnSKdODFGJr9wzWPartHz2IM3P7LUzFlaBKEsEd9kRV7UpyNi3j95Qf2JBFHE1+O05vb+Jjt+8j8i9fUiqsvKPsYWlVm1ICeDpitH22UPEHt6GEvau6meiWyb28DZ8fY2Mf/cYM6+eX7OTLbC7ja6/8QihPR0rakCIikRgewuumA8l5EXPFje07Y6Dg8PmcFcZi0pQxdfXWBcNyJwZr72oKvEc+SvTtipqdfEbOdLH2HeOYqzDWPRtaab98/fg62u06+Usi/J0lvibF8ldmEBLF7E0A0GRcEV9hPZ3EX1wy1yKLGAUNcrTGSrxLJVEnvJ0ltSHK/fD05IFkkevUpnN2TWSHheS12XXZfjcq34hrQdRkQnsakNUJKIPbkHyuLAsi9JYitylScozWcyShuiWq6kprbibggiiXcco+VWan91LeSLNzK/OrmpMb3cDrZ89RGBnG6Js10FoyQLxNy6SOTuGni5gagaCJKKEvAR2t9P4xI5amhyAUdIoz2SpxHNoiRzlmSzpD0c2/gQJC9+ZVu1fyyMHVdTmUJ1xpOdK5M5NbOQerkhofxedX7kf/47W2rNiajrF0ST5y9NU4jnbOHfJuJuDBLa3oladMKJLJnygC9EtY/xRmez5yTXV3sheF5HDPYT2d9UMRcswyV+ZJj8wg5bKY1YMJI8LtTVEYHc7StiLINgKne6WMC2fOkBpIk16Db0lGz+xi/YvHcHdEKh9phcqFAZnKFydRUsVsAyzFin3bWnCFfEB9uK64YmdIIkM/JuX1hXVvKOwIHtunEo8i7sxWPvY19uIEvGuaCwWhuLE37yIErbTLiWPYs9f3mpd2SqcE2tFkEXCh7tp+8wh1JYwCNQE0LLnJiiOJdEzRSzdQJAlJJ8bV8yHpy2CpzNaeybL0xmy5ybQV5kKeQ05qNL6awdo/tT+2n1zDcu0BayKo0n0XMl+tmQJOajibgygtoYRFAnLMCkMzpK7tHKqL4CrwU/b5w7T9PRuu+2JIIBloefK5C5PUxyN22mSgl0D7u1txL+l2Xb+CXbKf/On9iPIEqPffBc9s/Qx69kSyWODeKtpo4Ik4u9vwtMdI3t6bVkRgiTg6Yzi62+qfWZqBol3Lq/sNJMEWn7tAG2/frjuXavnytVU4ln0dAnLslCCKp6uGL7+ptp3Za+L5uf2YQHDX3tjfdE2bOeZuyGA2hqi/Qv3Ej3Sj+i257LybI7iSBw9U8LUDCSvC3eD305LDXrsjKiPhlddn+puDtL+xXtpeGR7neO2Es9V00xTGCUNQRSqrcMa8fY02PXnooDaFqH9N45gWRbTvzizagefuylI528+QHB3e91Lr5IskLtgP1NGvozoUVCb7NR+tSWMuyFAywv7yV+dQdzEtYqDg8PGcFcZi+6WEL4tzfWeyKMDNe+cWdYpDM1SmcmitoYB2xvn6YjONaVeJYIs0fj4Dvxbqyk9FlSms4z82Vsk372ClinWGwcCpD8aoTiaoONL99UMWqOsMfado+TOT2AUKraIwSqibeWpDJM//hDJ47LbgcgSoktC8rqJPtBP66cPrul41oIg2j3W1NYwkseFliow88o5Em9fpjSZxsiXMXUDURKR/Cqe9oidpntvr/1yEuyXaOyRbaRODK24sBQkkeiDWwjuaUdUJLBAz5QY+bO3iL91GS2VX2CIpT8apjiaoOu3HqwZjGZFZ/LHH5D+aAQjX64KRmxMtE5SRFrvaabn0U68DeqCiMH40UlOfeP8ittxxfzIQU+d998oViiO3rxoldoeofn5ffi3tSDKkm2YpwpM/OgDUseH0OJZ9Gr6kCCJyH4VtTVM41M7aXxy11x7mp1ttH3+Hgb+8GW0xOojTYIkEtzbYTeId8mUZ7NM/vhDUscHqcRzGCUNDBOhupi+1u8vsKvN7hEoCnh7YkTu7SN/cWpVi3r/zlZaP3OolmprmRb5gWmmfnqS7PlxtGQeo6RjmSaSS0YOefH1NdL83F5C+7sQJBFRkYg9sIXC4Axj33x/hRHvfIxChcLAbJ2xqLZHFk0Pv57s2XFKY0lbeEOR7HtGkXDHArR94R4CO1ZOr18r7sYA0fu34J6ngl2eTDP85++QvziJ9v9n77/jJEvP+z70+55UuapzDpNznt3ZHLCLnAmAEDMpWqJNyQr33s/1RxYpy5Zky7bka8siJVOUSAKUSAIgQIDAYrGLXWyOM7M7OYfOOVRXrpPe+8epru6ame6u7umZ6Z49389nd2a6q85569QJ7/M+z/P7pfK4Rds7rxXv3FPDRilgixPb0UriUDf53kmyV0aXtW+hKdQ9vOXmQFFK0pdHGX/xLNlrYzePIaCjRQIYDVGiO1qJbGwk+WFPVYsRQldp+NhOGp7agRoq9SXaDpkLI4w8d5LslVGsmbwn2oO3yKPXRYhubabls/tKAkaesFTTp/aQ65tk/KWzi2aCJt+4SOuXD6IGvPtfqLue6OYm0ueHYBn2PWokSHxfZ0XpaO76RMkGaPFMVGJ/Fy1fOFAO/qTrkj43zOhPTpO5POJVoZSEipSAhl4TJrK1mZbP7ye2vdW7loM6jR/bSaF/ipEfnax63BWUSk8bn91F3cObEbpK5vIo46+cJ3t5FHMq633Xrouiq6hhA6PWK4kNttV6FQpVHDI1bNDw1E7qH99WDhSl4zL51mXGXjzjLUCk87iWixDewpZeFyGxt4O2rz3olcQqgkBzgpbP7q9+kU1A86f3Et/bPifE5rikLwwz8qOT5QVz1/IWPtRogFBbLfVPbqfhyW0Y9VFvYUhf/YWh+xlVhaeeMvjUZ4IIAW++YfKznxXJpD8C/Q8+94z7J1gUglB7LeGNjeUfWak86QvDFQ3i+f5pcn2T5WBRMVRqH9yw7GAx2JbwJtMhb1XMMW2m3r3KxKsXbl36Jr0y2IlXL3i9C5/YDeD1e7XVeO9bRpmhtB2sqSwWlZNwJaAR6qxd1mdZCYqhoRgaVjLH4HePMfbCaaxkviKD5OKt5hbHUhRGZ9gcDZDY1+lN6FWFcHc9sZ2tS/qzBZrjRLe3lkVNpOsyfew6Yy+dW/CYzWYdw1315cBZDXvHevxn51fdoL5+ex17f2EHQgimrkyz5dMb6Xmtn3h7DC2sMXq6un5RoyZcMUGSros1nV12FmOlKAGdhie2UfvAhnImxcmb9PzBq0y9e/WWAjtOpuiJfozM4BYsWr5wEKF4mYXahzZT8+5VJl65sKzelFnz9+J4mt4/ep2pd261bws7XaAwPENxPM2Of/rlcsmZomvEdrQS7Khd8trWokHav/IAoc66soJy9sooPf/pddJnB2+6nj3RpjyFoWkKIzN0/8bjJA51I4RACek0fXw30+9fJ3dtdUVZ1hqu5ZDrmaD2oU3ln+mJEFoiDIpYVJjDLVgUb3HtFhuiNJbujatNoDlBbEdrRbtA339+m4lXL9yyDcHJmV6v3hBkLo0yc6KP0Z+cxrUcikuUZN6079YaOn754YpA0bUdxl44zciPTpLvn1q8ZFoRzJzoQ40Eqi7pTOzrpPGZnV5Ju/AWQDIXR7j2ez8l1zd1U/Zo9vPm+6coDM/Q+csPU3NoAwB6PETHLz5E+uzgomXW+YFpMhdHSOzrBLzrOLq9lcA7Vz1tgCrREyFqH9xY8bPp49eXLEHV4iE6fuEhjHrvOEspmTnVT/833iJ9aeSm79nJlz7z4DTFkRk2/NbTRLe3IIRAT4RpfHaXt8i7gtJyoSrE93cS292G0BUm37zE0HePkb02vuBzKwukzgyihPTqevpLJa6tXzpQfm5IVzL6/CmGvnec/OD0Tdehk/NE4PL9UxQnMmz5/3wKLRzwFtk2NlL/+DZPYGyJBb7YjjavSiuoe4svUpK9OkbfN98idXqg4vxyS/fq4miKXP8UbsGi+TN7y/d5n+ppa1f5nX8ap6NDRQAHDhrk8pKXXrzPq1l87in3jc+inggR3dmGGporaUidHigrKs5SGE6Suz6OO6+8o+6RrbDM3pHwhgaMpjlrAydvMvnmpSV7pIpjaWZO9nnZEbw+icZndlbd87eWcC2HidcuMPb8KU+Zb6FSQ1dSGJhm9MenKiY6em2kIrhfiFB7LaG2uf4i1/b2u1RwbU1nSR7vKWdqFU2h/rGtN5WArQbxjijFtMn7//4Ex/7wNJmRLGe/fYk3/9VRRk6MUbMxvvRGwFNjnPcAlY5LcfQ2BJiWSWRzo9eDOjvxkJKRH55g4vWLiyuxSiiMJBl78SypMwPl8apBnZYvHCgvqiwHt2gz9L1jTL11ZfF9u5Ls1XFGf1yZAQh11FbVr1T78GYvK1kqbzbH0wx97xgzJ/sWvZ6l7ZK5NMLo86cpDCdBen1tgeYETR/ffd97uErbITdYOYkWioJRG74jZaS3ixoJoNfPXfvF0RTpc1X2q7sSO13wJtgjM8tTqBSC5k/uLi9QgnfsRp87Sf+fvUv26tjSvbWl/RdLlRtLoUaD1B7ZRGRjY/m+aaXyXP/3PyN7bXzRMkNpOaTODDD0veNeJq90Xw+21NDyuf2LD7NgMfHq+fJ7hBDE97QvawFTaArx3e0EW+euXXMqQ+rUwJKfvfHpHV7pamnRJ98/xfBffUBqie9ZWg6ps544ljXlVaoIRRDqbqD+8W0rvpa1aAA9HiJ5rIe+b7xJ+vzwks8tJ296Y6giE6sENVo+tx+jVDovpST5QY+3ADEwteSCzdQ7Vxj/6bny/VrRVWoe2EB0a/PiOxZQ9+gWrzy6bFGWZfT506ROLtKn7krMsRQjz50kdWZwVZVQ6+oE3/leHW+/31j+79/9QQ1btqy9e9HtsHOnRmenimEIdEOweYvK5s0q6v2T+vFZg9w3waLRECWxt2OuHMKVJI9dv0mtTloOmctjFaucgZb4ssue9JoIWnheBsi0q7NgkBJrOluxahdoinvql+uMXM84E29cuikgX4jksetYqXz5AaGGDa+XcYkyFC0eQo3O9Z7gyuqyNtJTz5ufBTAaYmXRgdVENVTMrEVuPI+dt8lPFzAiOtmxHOnBDE27qjMs18JGhWWGdL3s7N1AGCqxXW1EtjbPTTCnc4w+d6q6HhYJud4Jksd7KrKIse2tVS0K3MjMyT6SR69XJ4IkJZNvXanYr5YIYdRHFxURUSMGtUc2eq8TXjYsc3mUyTcuV1c250qSx6+T75ksn9dKQCO+t4NAU3XCGusV6cpblkNqsdCSlhj3AqEqiHlBrFBmPRXvLHpNmMZnds09m6Rk5vQAoy+cwRxL35GFoMjmRuL7OyvO/YmfnSdzebS6/bmSmZP9TL93be7aF1D/hKfkuRDScUl+0EdxbO6eG2hJEN3RWnUWSQnq1D+1o/zdSCmZOTngBT+LjF2LBal7fCtaScRHWg7ps0NMH71eXXDvSibfukxhZAZZ2pEWDRDb035LJeilmP2+84PTjPzoBPm+qdvyTbwVgaY4dY9tmVu0zplMvnnZUz6vYlfSchh70cuWzxJsSRDb2bboAnagKUF0+1xlFRJy/VNMvF5dBUm+b5Lk8R7s1OpV+GzbrnH4AZ3WVrX83+NPGGzYqCHW3u1oxbjuzf92nFU/tXx8KrgvLiGhKoQ66gh3z03IrWSWzJWxW05yc1fHKA7NIKX0BFcMnbp5pVTVoAa0igmRlBKnWF0ZqWu7FZlNIYTndbWOkK5LrneS7NWxqt9jZ4qeulzppiaEQAloKIHFs05eyeu8gFJSzsxWM87550D5WK9y1qc4U0RRBcEa73ucvp6i89E2ajcmiLVHce3q7uRzpuAlpFzyswpd9XwnD3Yv/t+BrrIIza0INMSI726v6CGZPnptWRYnbtEm3z+FOT2vXEwI4rvaqt4GeFm79IVhCqPVl65ZMznMed5zQgjUkLHoYkR0awvhrvoKb7jp968ty5zbzhTJ9ozjFMzyfrV4yBP6uJ+R3DKQVwzVK0NdYzh5s2JyajTGStYZd3ZJvuZwt+fRWcItWCQ/6L1jZcpCVYh0N1Q8D13bYfKNS8vKiHrCP0NeZQOzarAB6ubZpdwKeybP9LtzrQVCCGoOdi8aZM4n0BQnsbd9bhxFm9TZAcyJxUt/Y7vbCTYn5mw2ZvIkP+xdlhqzncp72dTSe4QQGHXRqtWRb6IkSDRz6g4IqeFZ0Mx/fuZ6JshdG1tWyX9xLE2+f7L8byEE4e76RRVVI5saPaus2WqfokXm/NCiAkg3krk4fFtqs/MRAj7+iZuVfmMxhYOHdWKxtXc/Winnz9lcuWxTLEoKBcmpkxYXztu4K7cW9vFZkvsica1GDBIHuipWjdPnhxcUTimMzpDrnyS+rwNREliI7+lAjRg42eqsHFzbQc7LPAhFQQsbmFUEMYqh3aRW6uTWV725k7fID0wvW/XRThdKS2DezVvRPWGexe5z0nYqRRWEJ9NfTd+hoqk3lUA6OXPVV/OTvSnCjaHy6l7Pq/089HcP0LSnARQ4/1eL92XOIhSlcglHSuQSgYueCLHhbz1FzeENi77OtWyG/vIYvX/0xoLbCXVVZkAz54dxl6kUbM3ksZK5OeETQYWqYVXbSHl9RMuyCymV6gXmTUqVGxZ1biTYXoteOzcpck2bzMXqlCbnUxxJeaqJpUUfLRIg1FHL9LK3tI6Q8tYTcUVBrMEaXHMiQ+76eLkMXSiCjl94CKQkebyHwnLLS6skur0Voc49mwpDSbKXR++Yv5wWDRBsr60oBS6OpsgPLr/vLtc7SWEsRajTC5aErhLd0Qo/PLHge+xckeTxXho/vrvcRxfd2kKwvfaWPXQ3UvfIlsoAqHeCXBWereENDaixuUVXO+upny6XwuC0t69SYk2vCXmiSCvAzptkLgyvWFF1KWI7KyuiCsPJiqxuNbi2Q35wuuIeHWyrWdTqK9Acr1Cdd4s26YvL033I9U95VUlz04EVEwoLHnv81pnQhx82+PZf5EnN3B/R1MiIw//yz9N87NkAroS33ihy7Ojy/V59fJbDfREsznpfzSJdl/T5oQXLI2d7jazHtpYsHQRGY4zo9taqpfbNqSxOtohe8sNTdJXwxgbMJZrChaqUFS9nsVL5Za3IrQWcbHFZggWzuDdIgc8KoSyGNZPHTuXnSnUVQWRTI4Wh5OI7UwR6XbSiR9HOFLBnFumvXCEz/WnSw9lyOc/Y2QlO/pdz1G6qIdmbYuhodQGIlPLmQPZulJcIr7Q60DTXWyldSX5oGuks7yHrFiycfGWQt9wyLms6V5UR+I3cKDUvVGVBXzlRMovWYiXVRClxTYf8UufVLbAzhYp9K4ZaYdtyX1KqDLgR6Tir2ou0WhRHZ0h+0Et0W0t5Imw0ROn+r54kcaCL5Ie9ZC4MLy02swxE6V41/x5XnEgvfe+6DbRYkGB7TcXPcr0TFaWG1WJOZrCTuXIVjlAVwp11KCEdN7/AQo4ryQ9Mkbk0Qs3BbsBrOag51E3q9OJ9h4qhUffw5vK/peOSuThCrm/xQFeoCqH2WrRSqauUEjdvlrOiy8GeySPn1fqpQb0iMFoObsEm1ze59AtXgNBVwt1z1QuzdlLWcks7XXnTwqsWD93y2vZ27KmZq/OE2FzLoTC4vKUxO13ATheQrrtsv9Eb2b1Lo73DWxyxTIllSUJhBSG8Hr/ubpX+PuemEs71iOPAm2+avPmmHyD63D3Wf7CoCMIbGivEA8zpHLnrE4tmJTIXhjGnsl72Q3g3x8T+rqqDxdz1CYqzFhzCexjWP76N1LmhhR+igNEUo+ZQd0VmMX1u6KbeyrWOW7RXpih60yRy6SXF/ICnzhfubgDhZQsbntpB8oPeRY+bXhum9simil6ZzMWR5T9Mq0A6Emd+UCWh780h+t4cWt52bLdiooIQCOPON+gLTUWvjdyU8W7+1F5qjyyvRFuvCd8kLLPcyZadLVYl5HEj8sbIepHTSwnq6IlQRdmtFgnQ9WuPLnu/wdaaismT0NT7XulPKMKzZLgBt2DfkQzd7eLkTKbevuIpPj62tWzjo0UC1D+xjcSBLrJXx8hcGiF9boj0uSGvBPs2PooSMtAT4Yp+RSuZx5xanfK7hfZ5o4hXcTS1okymW7C8PnPbQeiaV9odCWDURCjkkwu+z5zMMHOir6x+DVD74EaGv//Botd1ZFszoY45MRxzOkvm4siSvW1qxBOSmV9dZDTE6Pr1x6r8pHPM99QEEPrNlUDV4loO5hLWUCtFT4TL/ZmzxPe00/2bTyxrO0IrZYvnsVj5vmKoN1leSHv5CsG4niWTtG8/WPzYswEMwzsO09MufX0OO3dqRKIKobDCQ48YHH3fJL/6j34fn48E6z5YVDSV2gc3Vtxs1KBO21cP0/jsrgXfJzSFQHO84j3Rrc0lQ+mlMxqF4SSpMwNENjehRQMIXaXu4c0URmYYe/HMLbcRaI7T9uXD1BzqLv/MyZtMvHK+3O+0XnAdt+oezdulOJYidWaA2K42L5OrCBKHumn72oOMPnfylnLqek2Yti8dpu6RuVVqp2Ax+eblFWWsqiXcGKJmQ5xwXYjBYyMUpgqoAQ3HqixbXgi3aFVkALwey8WDDrdoM3Oq/yZ7DSWgkTjQXdVEx/NLrJz4C0Useg0th+VOtlzTWVEmZDmoQb3CENrryQrS/rUHb3vbQr111u2+omTkfiNWuoC7zGz03SI/OM3gX7yHPZOn4Zmd6AnP01SU/ARrDnYT29VG3aNbyfdNMHNygKm3L68oQwVei4RQxdyihStxcsVVy1zeCq/0vvKeYacLKw7gnZyJtFwoXSpCVSoWRhZ6T+bSCIXRGUJtXvAXbK0htr110XLf+ie2VVw3+b7Jqsob1ZCOmB/gCUGgMbYq17KiKSj6Cq9l111eKf0y0GLBit5gIQSxnW2eP+ZtohjaggHcrG3WLFJKpOOuaMHbKZiVi6MrIBIRHHnIQC+dnxMTLm+9aRKPK2zb7n2Gp58O8B//Q5Z8fu0tYvn4rAfW/WxGCWo39WppkUDZH6paPFPaOJEtzSSPXl/y9dJyGPvpGeK724nv7UCoCnpdlPavPUjiQBeZiyMUhpI4BRMloBPuqie+r4NwV325BEo6LuMvn2PmRN+S/RhrjhuEY+4k0naZeP0C8d3t1BzZiKKpaLEgrV86SHxPO5mLw+QHkzg5E8VQCbbVkNjb6QXypYyWdF0m37zE9LHrd2SipmgKXY+3sfPnthJvj6IGNF7+nTdAwo4vb2HiwhT9by+dZXTyVuX4FFE2l14IO1tk9MenbgpO9NoIkS3NVQeL6grsLapmmaqT0nHu+DVx46RndRFrUuRlNRGaQmBeRQd4pct2MucFF2sRV5LrmWDgL95l5lQ/zZ/eQ80Dm1Dm9bWqAZ1wZx2h9hriuztoeGo7E69eYPyV5fuzauFAxaRb2u4dDRTB+17UG0R73IK14tJ7t2hXZCWFqlRl9ZTvnyJzYaQcLApVoe7xrUy+dfmWAlJ6bYTEno5ydtApWGSujFVV3qgE9Dtn7i5YuRSgpKpFwpWgRYwFS+xvGyEWrMoQunpT1tE1nRVl4F3TQd5mFcK+/TqtbWrJwsMLFl97tciOnRrbtnvXwZatGps2aRyfujsL3D4+9xvrPliM7Wxbkaz1rQg0emqQyWPXq7rxFYaSXP8Pr7LlH3yS8OYmhCrQa8LUHOwmvrvdy4y40uvtMdRyFkNKiVuwGH/lAoN/eeyOlancUSR3tS+pOJqi9xtvogR1LzjXFPR4iMT+TmI7WiuPta6WjYKllLhFm8m3LjP4rfdX1GdZDY2769n+hc1MXprmg/94mid/92FUXcW1XVRdofVgU1XBopXKV6zQClWUPbQWpFTOcyPSdqueqAhBRQkXlFaMbXdV+juXvbAgueNa4EIVZeVEmOsXvbHvcSWUj919jKKrRDZXWqKY01mvzHsN9izOx5rOMf3uVdLnBontaKX5c/tJ7O3whFUUL9MoFAW9JoyWCBHuqqf+0S0M/uWxm6xhFkNoSoVNj5TytjMpS++Um6yBbtUKXT03v7OaIKU4niZ1bpDahzaVhW5qDnahN0Qp3qJns+ZQN0ZJYVNKSXE8xczJ6hZSPRXpG6/l1bkGpSvvmBjR7SB0tSKgk1KCszrnl3TcBbO/Xib+hh+ucJ/Svn3Ph8efNEgkvDHlci4XL9icO2tx6ZLNsx+XaJrAMARPfyzAB8et29qdEBAOC3bt1nj0MYPtO3SamhTCEUE2I7l+3eHHPyzw/vsmziLPXinBXCIRqyiUs6WLISXY9oq/gpv2Y5pzX4muQ0eHypNPGxw4aNDZqRKLKRRNl+S05PJlm6PvmRx932J62r2tMdTWKhw8pPPgEZ0tW3Xq6gSBoGB8zOXsGZsXni9w6ZKNu8jiguN4x8Jn9Vn3wWL9Y1vnVm6lxLWcZcneC031FBOFQAnqRDY3EmiOUxypIqiQkL0yyvn/6ft0/frjND27CzQvo6AE5pW4SS+z5RYsnKJNYWCKkedPM/XOFZz0+hK2uWdIyF0f5+K//BEdv/AQrZ8/gAhoJZEN3ZvkCeaOddHGLVoURmcYe+EME69dxE7n75hYTKIzRjFlceEHV0kNprGLXsDhWC7FlEntpurU9KypTGU5qRDotd6EdUU9olUi3ZstOuyZPFf+zxfI9y9fRfGm7a/BydatSl0zl0e4/L/9eFW2b6+g53I9oYaNm1RuCwPTq+qddieRjos1nWPqvWskT/QRaq+l4ckd1Dy4kWBz3MuelQJHNRogvr+TQGsNQ987xthPTt8k4nQrnLxVMXkXqnIHs9ke0r659FENes+4ldz+hK6BOi8Qc9zqvE9dSebiCNlr4yT2dHjJ9pBBw2NbGfzO0cp9aAq1RzbOWYy4kkL/FOkzg1WN0S3aleJprmdOf/3fv1LV+5fCSq+9c9rJmRULtm7BYvivP2TshTOrsv2FehBdy8G9oXJArPCc9uZuK8+O1tcLDh0yCIe9bSSnJUffNykW4eIFm+Ehh84ub2zPfiLA7/3fGYorvC0HAnDosMHf/4dR9u7T0HWBqpYWWoUXYB04qPP5LwSxl7DKOnfW5u/+9jSTEwu/7pFHDf7N79VgLJHE7+93+Nf/e4ZXXl7ZB/vEJwP87j+Nk0h4mdn/5reSvPeOSWurwi//apivfi1EokZBVb2gzlsoUJESHn7E4Bd/Mcz16zbf/JMcP3m+QColqw7IhYDaOsEnPhnk1349zMZNGprm7We2GGn7NnjkEYNf/40QS00jvvXnef7N/5khk1nbi5XrkXUdLKrRgKeCWrrXuI7L9NHrTL1zpeqgILyhnpYvHkQNeGIHoY46IluaqwsWoZwBsaYy3qTAKandDc8AoKgKTtHCTuXJ9U6SvjBM+vziIjg+CzB7rKezSMdFOi7mVJbC0DTSlSiailO0cbIFcn1TpM8PkT47eHfEg6RECOmZ/84791RdIZAIYGaq+76LExmsqaynEKd4Sp5aOEC4u4HUHfLqAm+CeaPwhBLQKY6nVyVYXIu4RQv3hr5bRdfu28+7qghIHOyuEFKRUpK5Mrr+KiVciZu3yF4ZI3tljMG/PErtAxtpeGo7kS1NGA1RL5OmeOq5bV95ACuZY/L1S0sugjjZYqXFkqagBr0g9E6JALmWg33DPU+NBG/KNlaLGtIrbDikc/O9YiFyPeNkL40Q29GKoqsIVaH+8a0M/+CDCkueyJZmwt0N5f3YmQLTx3qqvne7ebPS4kcIEMp9fS3f2IcqNNWztLrDn9m1bKQ1tyAvhEBoKsJQkcu0WVJDutfTu0IOP2DQ2qaUs9Hj4y4fHPfu6Rcv2PT0OHR0aggBnZ0q+/brHH1/+XOvQAC+8MUQ//3vxqir86IY15Vks5JsxlNfVVRBNCKIxQWh0MJ1y1JCKCRK9kIL3wM0DaJRQSCw+PGJRFy025jJa5ogGhXEYt6Yd+/WGB9z+Ef/fZxnP1HZm+w4XiDoBXOinJXctVvnd/6HGO0dKn/yxzmmJqtbHG5qVvjtvxPhF34pXP6cti1JpyW5rMRxJIYhiMYE4ZK67UJI6X1Pa9C16b5gXQeLif1daLFQuSTGnMww8fpFJn52vuptGHURGp7eidroZQEDTXEim5qYfu9aVaVzWiJExy89QvNn9iKEINc7weC33vf6Mu5wb8pHjVnxkdYvHUQJ6BSGphn89vtMvHqhqlX+O8lMX5quxzvY/MkNDB0bQQ9qJLpiRJrC1G+t4eIPr1a1HWk5nn9l1iz3W6rRALHtLXc0WHQdB2smj3TmlOmUoOat9C/+TFu3OHkLO1ssB+bgCZIsx2/1o4oaMm4SP3IyRbJXx7xJ7DrGTuUZ/9k5Jt++TO2RTbR8bh/xfZ3lQCbYkqDukS2kzw9THJlZfFvZIm7BmrOeEAItEUKvCWMtYbO0UtyChX1DWXqwJb6o3+hCCENFrwmXe9Rmy/qrVZR2Czap80PUPrKFUFuNJzzTWkN0WyupMwPl18X3tGOU/FGllJiTGZLHe6oep50zcfJFpCu9clTh+U2qYWPdKY1XizWT93r+Zs8tTUGLBVcUtC0H17S9jPn8Z4WqYNRFl7webkSNBFd0XgKoKhw8pNPQ4L3fsuDsGYvJUqDS12tz7arNQw8bGIZXivrMs8EVBYuPPh7g7/+/ItTWenPNbNYrjXz/PZPLl2xSKZdAQLB5s8ajjxvsP6ATjc59rqkpl4lxh0zGC4QunLcpFhd/qE5PS95/zyQSERgBQcAAwxAEg4Km5oUtoW6Xww8Y7Nuv8/QzBq4rSackfX0OExMu6bSLlJ6oUGurysZNWjmrG4sp/NKvhLh2zebHPyosWWarG/C1r4f4pV8Jo+veNiYnXU58aHHsfZOeHptCXlJbp7Bzl87Djxhs3aYRDM597qEhh+kpl2xWkslIzp61sa37cLKyBli/waLwpLiVeY38xeEZsleXZ8JrTmfJXBoh0Oj1hSmGRmRjI4GmeFWN9Q1P7aDx6R0omoqVzDH6E6/kcS2W3a136h7ZQuPHd6GGDOxskbGfnmXsp2fXRG/Y5OUkva8PsPlT3bQdbiZUF2Db5zdhZiwGj44wWKXPIuB5gCZz5WBRiwSI7WxDjQVw0neotNGRmJPpkp2Mdy0IIYhsaCR1euCOTj7uFa5pUxxN4eTMsgS9YmiENzSSPltd+dtHldqHNxPb1lLxs8zlUXLXxtekbcZKcAsWk69fJNc7wcb/5hlqH9hQ/l1sZyvBlsSSk2NpORQGpohsaiyXchp1EQLNiTsWLFqpPPmBaWqPzP0s1FnvVV4sc1tGXdSzpJidmLqSwsjMshYEMheGKQxMEWxJlOxWDGof3lwOFrVogMiW5jnhN9slfWFkWV6UbsGiODKDW7Q824eSinSovZbM5dGqt7OecLJFCsPJcpAtSv6HRm2U4ujygrbl7dgL5p28Wf7OhK4SbF36epiPYmjoteGbeuWrpblFYft2nXDYC8oKBcmbb8w9H00Tzp6xmZxwaW1T0TQ48pBOLCZIp6u/RzU0KPziL4VobfVEdAoFyeuvmvz+72U4f86m0umqyHM/KvDf/J0IP/eVEIFSYHP1ss03v5nj8iWb8TGXZHLp/r6LFyz+8T9KEY0KIhFR/rOhUeWf/NPYbWUTF+ORRw0iYa8k9fIlm+d+VODNN0yuXrHJZLzMYjgs2L1H4wtfDPHZzwWpLwXs9fUqX/lqiKPvmQwOLv4BN27U+NVfmwsUp6ZcvvudPN/8kxxDQ05FKeuPfljg4CGdv/v3ojzyqFF+z7tvF/nzP8szMeEyMeGSzVRfAuuzPG7P3OYeYtRHiWxtLt9oXMsmPzBFcTi5vA1JmL5B/TS8qaHC62khlJBB3cObUSNeUbk5nSV5/LofKN4BlIBOzeEN5bI3J1tk6p2rayJQBLALNtde7uX4H5zi8vPX+fCPz3LlJz2c/NNznPvuZaxs9VnmzJVRCiPJ8nkkVIXwxgYSezrv1PABb6U6f4OBdOJA1x3vsbqX5AemMedN2tWgTmLfnT3O653othbav/pAhe2InSkyc6KX/DKNudcD+f4phr9/vKIX3qiPVe0dmr40UtFPF2ytIbKxYcVloUvhZIrkB6YrxhtsSRBoii/yrlsT6qjDaJwT2HIth8yl6he+AIpjadIXh8t9joqheTZINWFvHxsaCLXXlrNUbtEL0pdL9vpERRCrxUNEV8FGYi2TPl8pmhbqrCPYVnPH91scS1UcayWgEdnSvKxtBJpilQsRy2T3bp2ubrXULyhJzUiOHq3MGp46ZTEy4l17iiJobVPZu295qt+HDuts26ahaV6p6/CQw3/6j1nOnrFvCvikhL4+h//8zRxnzsyNpb1DZXLC5fIlm6mp6oRgikUY6He4cN7m+DGL1141+fFzRb7/vfyKhWSqIZFQUFS4dtXh//hXGf7D/5PlxIcW6fRcIJbLSY6+b/Fv/02GH3w/j2nORWiHDs99L4vx7McD1Nd717yUkuPHTP7iz3MMDjo3BXyWBceOWnznW3kGB+fupd0bNK/c+LpDJu0HineSdRssxne3Y9RGyjcaayZP5uJIZd9ClaRO91c07Aca44Q3NCzpk6bHQ2iJULmETQhx2+ayPrdGiwW9cqjZ41squ1lLOKbL+PkpLv71VU79l/Oc/c4lho6NYueXV45sz+RJftBbUT4VaIpT9/jW8iryncCczJC+OFyx2BHf006os+6O7fNek706RmE4WZZvVwIaiUPd6HWRJd750SS2p53OX3mE8IaGsvqkdCWZC8NMvXvtjnnK3VNcSX5wukKwSNGUqu/1Myf6kPMCN70mRHxvZzmDv9pIxyXXN1HRu6YENGof2bysAFXoKtHtLQSbPXEurwTVWlZ5aOmNzHzQV/bDFYrngThrBB/Z1ESwZMEipaQwlCR1bvmZ/fT5YYoTmbLoi1bSNNASi1sPrWemj16vWDANttd4/aF30gYJyPVNVvQmq0Gd+O72ikqvpYhsbsJY4X1WK/XJtbXNZSXPnLGYGK+Monque32LVqk0MR4XPPb44h6hN7J7j17OnDmO1wt56uTC97nZgPGtN+ee361tKkce0itKKNcypgnf+JMcP/tZcdFy0okJl+d/XODK5bn7WySisGu3jrbEKfjIo0ZZxCaTkZz40KKvd+H5u+vCB8fNin1t3aax/+CdPdd9PNbWbLtaBMT3dVb4z1nTWVLnl7YmuBXmVLZitVTRVaLbWpa05HBNi/nyTEZTjLavPUh8X4fX63Wf+6zdTVzLRs4z+tbiQdr/xhESB7u8ycB9dqwnXr/kBTGliY9iaCXRjR13bCLgZIukzwxWZIe0aNDLIt2n2UVzMsPMiX5PKRcQikJkUyNNn9jtL/zMQw0bNDy9g+7feJyawxsqzofiyAxjPz1zU1b6fkI1NNTA3HXnFG1cq7pFoHzfJKlzc88moSjUHO72PGOXWJBcKbnrE6TODlYosTY+tYNAc/XZxcjGRmoOdlXcb9IXhsldH1/2eDKXR8n3TZZtafREiPjudrRYkMjGBrTY3AR+6r1rKxKAK47OMPNhb/m9iqYS29VGw+PbKmw17idy18Yrej/VgE7DU9uJbmm+o0IfhYFp8n1Tc2rSiiC8oYH43uqqMtSwQXxf54ptz1pbVbbv0AiGSgtWEt54/eYWjWIRLyuW8p6joZBg3z6N2rrqDo6iQEurUu7Lsy24eNHGWuL0zGQkfb1zQaoQXtA5O961zpUrNs//OI+7RO5FShgYcCqyqACbNmloiwgXqSp0dc1lH5PTLv39Ds4S+xsddRkbc8u2JIYu2L/fDxbvButyBhhsSRDurkcYpRJU2xMFqabH8Fa4ps30sR4S+7vKP4vtbCXQGFu0b8KayZO9Nk5kcxOKoaGGDBqe3E5ibwdO3vQyNDekxaUjcfIm5nSWfN8kMyf6yFwevWsG9+sVO10ge32C+J4O1JCBYmjUPbyF2PZWT0LcudkUWDoSp2BiJXPk+6aYOdVP5uLwHREeinfGqN9Wy/jZSTIjWfSwxuHf2kf91lp6Xx/gwg+uYBeq/47N8RQjz51i429/DLVU7qfXhmn9uUO4tsP4T8+uvnCD9PolZz7oJdRWW87c1j64iY5ffpiBP3t32cdOiwYRuoqVzK5NkRxXMvXmJeof2+qJZSkCLRqk+dN7MaeyTLxyfnmlzgL0mjDSdte90At4Gf34/k4aP7azXDo4XxnTmskz8vwpJt+5sqbL74WuoseC2JnisqyVZt9b+/DmiqCpOJbCTlX3/bqmw+hPTlP74KZy0KLXhGn/+QdxMkUm37686j3BdjpP8oMeEge7CHfWAxBoTdD1q49y7fdfXvLeYTREafrUHqI7Wiv6FUefP7Wi0n+3aDF9rIf4/k70WAglqBPe0EBsZxuh7oZydY60XCbfvLTs7c+Ob/yls9Q/sY1QZx1CCIy6CC1fPICZ9Hw1l3WOKgI9EfYEXdaoDY6TKzL641NeVq+0gBPe0EDHLz9Czx+8Qq5nYln3XSWgoYYDONnFrxPXtJk50UfN4Q0EGj1vzEBTnOZP7yXfO0Fx7Na2GwAIqDm8gZpDG8rCSctl82aNbdu0crBRLMI7b9/6nD76vkky6VJXr6AogrZ2lb17dV5/bennZzAoCIcESum6dVzJ1NTS55CUnudjoSDL/XUNDcod6zNcbV59pUhqproTJ5WSDA9XHpPaOqWcNbwV0aiCERDle0uhAJkq+kgdB7JpiW15AaeiQmOTv6h7N1gnp24lsV3tBFoS5RPNyRZJfti74v41aTrMnOzDyRZRS+bBRn2MyLYW0hdHFi6tciWDf/Eeoe564jvbEKqCGtRRSyU1N+8IJLLsBSgdl/avPUjmyih933yLzPnhqh5mngGxUjZfFkKU/64G9YoVcPBWstWwgRoNlO0nZg3IZ92aXcdlSRObe4krGfnBB4S76qk5vMGToA9oqC0L+BdWHGuJdBzavnKY7PVxBr/1HskTfas6QavfWkPXo20ke2ZAwJ5f3EHboWb63hmi6/F2immTyz++vvSG5o1//KWzJA500vDU9rKNRqApzobffJKaA12MPHeSzKVRL8PhSjwjM6/MS9G10iLG8h7G1kye0Z+cJthRS83Bbs8XLqTT+uVDhLvrGf7Bh2Quj3kZArd0HomSSbfiGZlr0QCRzU2lCUE3Q987vuJJ5t2gMDpD/395m83/4JMEmuMIRRBsq2XDf/UksW0tjP7kNIWRGaTtlK8bMXvtKQqoAqM2QnR7C3WPbCHYVsO133t5XYjkKKpKZFMTjR/fBcLLTKjRAHo8TGRTI6HuBtSQd08RqlLOVkgpsaZzDH7rPUZ+dLL6AKxUPu4pVoq5c6d0PLVoEOWG8nLFUNGiwbLR+uz+y/cyV5bMvRferR4P0fFLDxPd0sTUu1dJHu+hMJLyKhZsd+5cnh2m4rUUKAGdpk/upv3nj5SfN9J1SZ8borAMMY+ZD/sYee4kLZ/dh1C9aznYWsOmv/dxEge7Gf7+BxTHUhXn2OyxEYqC0BQCzQkSB7sJtiaYePU8qVMDC+9QwvTRHsIbGmn7ymFPJVNVqH9iG0JXGfz2UfIDU97+SiXYQhEIXSXUVkv71x+k/rGtnn8tXmnryHMnmfmwr+rPfCNTb1/2xlISkzIaY9Q9voVwd335NckPepatqDmf/OA0fd94iy3/8JPeZ1YUwhsa2PR3nmF8ZytjL57FnEh71kuzn3v2PFQUhCowGmLE97RT+8gW1JDO9X//Ctk1KpIjHUnyg16G/uoD2r5yuGxPUnOgi+2/+0WG/+o4E29e9iyCnLlzfO5+7Yl6hbrqSOzvoubBjeSuTzDwZ+9QHF3cPmzyrcvUHtlI/RPbvf1qCrVHNuGaDoN/+T6FgWmk7ZbVWlE90aHaBzfR8fMPEmxLeNedwrL6Fg0DduzU6O6ee7Z9cNxkfOzWz5dLF22uXbPp3qCiqoLmFoUjDxm88bq5ZI/b7H1eyjk/xWr1eFTV82GcxbLWR0+dlHD8favqvkizKMlmKl8cjYhFK95nA8nycZ3nq7gUqua9fvb9lrkODup9wLoLFoWuEtvZWi5fkFJipQq39RADsCazpM4NUvvgJm8/iqDmUDeTb1xa8OGlBDSklIz95DSRrnq0+BK9EQLPW0eAUFTvrhPQSRzoYuemRq78ny96HpGLqAmq0QB1j2whsqEBNWR4QWA4UPrTQIsGbhpHsDXBjn/6JexMESdbxMmb2DkTN2/i5CycnEnyRK+nerlGM5ye6a9g7KWzRDY1Vogu3PoN84+1AE2BgE58bwfR7S1c+72XGf/pmQoPtNvBiBq4tqQ4YxJpCrPxY12c/NOz9L81xK6vbaNxV/3ygkW81dueP3wNoz5KbGeb90AWAjWkU/fYVuoe3UphOEnu+jjWTL5kHh7EqI8Q6qj1BDhWIB6QvTrG0HePoUUCRLe1eIsgIYO6R7dS++Am8oPTZK+MUZxI4+YthK6ihQ0CjTGC7bUEWhKeoXmJ2e9uzSIheayHwW+/T+evPur1QisCvS5Cy5cO0vTJPWSvj5O7Po45nUNajmcrEg0SaIoTaq8l0BQvVzqYk5nb8g67mwhDpe7RLdQ9umXh18w/hyQ4BZP8UJL+b7zl3a+WQairntoHN2I0RNHCBmok4N2/QgZaWEeNBtHn9ZgJzQtw4ns6vHtV3rt/OTnT+zNrUpzIMPnmwvdpb0Ne6Vt0ZxvRnW10/frjFIaSZK+NkeudoDiaws6ZSNvxVBprwoS7G0gc6CLUXlsuc5euJNczycTrFzEXMC2/FU62yOC33yPYFCNxsBvF0DwbjViQ5s/spenju8hcGSV7dRw7lcc1bYShoce9cyzcXU+gMQ6KIN87yXQVx12aNiM/OkGwOU7D0ztQgjpKUKfh6R0kDnQx82Ef6QvDmJNpkKVeyj0d1BzeiBYPlq9Y13JIne5n8Nvv31Y1gzWdY/r96wTbahCaSrAlgZEIl4WCpOMy8eqF26v8kDD51iXC3fW0ffUBtEgAoSgYjTHav36Els8f8Pw0r3vHWToualBHi5Wu5Y5ajMY5m5Fc7+SaL0e3U3lGnztBoD5K3eNbUYPewk6os45Nf+8TdPzyI2TOD1MYSWJnTYQAJaijJ8IEWxOEOus9saHZLN1oqqrnhluwGPz2USKbmgh113tq0gGNxmd3Et/TzvTR62Qvj2Al8yhhg1B7DYmD3cS2tyI0xWt7uDBMdFtLRUvRUrR3qBw8qKNqcyWor7xcXNCKwnHg9deKPPyIQTQqSkqeOm3tCoMDi0dE+bwklfLKHjVNoKqC9o6lo0Vdh7p6hdC8stOxMXdd2Do4juTaNbvqwFZKbgosxRKHKJXylEtnV8WiUVHuC12McERQV6egl/IhrgsjI2tzEfp+Y90Fi6GOOkJd9XOlUK4kf338tlYjwSvbSZ0eoOaBjeXJUWxHK4GGmCdDfcOFY9RHqX14s1eqs7UZoSo4edPzPipYXq/I/PeUMxHeSp4aCXgPstIqsxYP0f2bT1AYnPZKRxZAj4Vo+vhuag51V/3ZRMkDyahbuD9AaAqZiyM4azBY1GvD1Dy4ieZP7ia2sw2hq57X10zOO9a3KPdFCIRaOtZhwzvWWinYCuh0/cZj5K6OrZqsumu5CAWMqE77Q61YOYuho6O4totTdNACKyu3MSfSXP/9l+n6m08Q39uBFgl4nw1AQKi91pvMrjLJYz0IVaHtqw8Q392OKAWqomQtE9nYuOr7vNeM/PgUSkCn9QsHCLTE57wXwwbx3e3Ed7dXv7G1PycAql/Rl46LnSlSHEsxc7KfkR+doDC0/LL/yKZGWr90kOBCFQG3GJ8aNFBbjQVfUxxPk+uZqOoZUP68qiDUWbcs8SbpuOQHphn+/gcr8jwtjqbo/eM36SjaJA52o0UD5fEIQyO+q534rmWcY1Vgz+Tp/8/vAIL6J7aiRrx9GrURGp/ZSeMzOxd9v5MzmTk9QN833ly8tLBKJt+8SPNn9qJoqncvi8z1KuYHpklfGLr9cmZHMvTdYwhVofHjuwg0xsvlv1rEE71J7F+G4vE6uJYLwzP0//m7uLZD3cObPeG9UsY00BAj8MSdEVPKXh1j4M/fpes3HifYWlM+n4MtCVq/cODWb5JgpfOMvXCGqXcus/nvfxJ9GQubnZ0qu/fq5ZdL6ZUjPvqYsWCAo6ii/DshBF3dKnv26gwOLF5e7Lpw5bLNzIykvl6g67Bvv059g2ByYuETo7FR4cBBvXw8XFdy5rRNYR10JmQzkuIdztY5Dpw6abFps9e3WFensHOnRjQmFi1H3b5dKymtese1WJScPHEfiqqtQdZdsBjZ1FAxOXYt5ybri5XgFCwyl8ewU4XyyrYWDRLf007m0khFmVWgOU7bzx2m8RO70eMhpOuSuTBM8kQfuWvjmNNZpHnzyoxQFa+kKhYk2FpDbGcb8X0d6LFQucSw6RO76fnD127789wvGPVRWr54gObP7PNsM6Qke22c5Ie9ZC6NYk5lkCVj4vnMBuVaLEigJU5sexuJfZ3otZ5cux4P0/y5/WT+zYurMhlID2XoeqyN3V/fTv22Wnpe6cfMWGhBlWBtkGJ6hSvyErLXx7n+B6/Q/Jl91B7ZSKittmrBGSkl0nYxJ9LkB6bIXqveh3T6vWuYExlavnCAxIEuzyetylV26UrsVJ78wBSFgSmkXAerf47L8A8+oDg6Q9Mndnsr3rXhctC4FNJxKU6kSZ8drFAKXE9IKcGRuLbjZe+yRcxkDnMsRebqGDMf9pLrmRMqWS+4pkNhYJriWAqjPrqsbJGUEnsmT/rCEOMvnWPq3asry35Jb3Ld+59ep/Hju6g9solwVz1KUK8qaJdSIi2H4kQaO1N9D11xLEXPH72OOZWh/rGthDrqllSSdi2H4sgM08euM/rjU+R6l9f7thDZK2PkeyeI3RgUS5h+/yr2TP72d4IX5A5++33yA1M0fmwnka3N6Ilw1UI3ru1QHEmRPjOANZNblTHdafJ9k/R98y3y/VPUPbKF8KaGsufkUkgpcfMW+eEk2cujFerwSzH+6gWEptLyhQNENjYuKtokbZfC6AwTr11g9MenMCczWMkcsqu+qlgxFBJs367T2jq3+Koo8I9/d3m2MK2tKrt26bzy8uJqnwDvvWvypS/b1NbqKIpg02aNn/96mD//LzlmbtHXFwrBk08HePyJuQWuoSGHD46bFAprf+UhX5Dcjcf1888X+MznAoRCAsMQPPKowdNPB3j5pSL5/M3HqalJ4bOfC7B129z5dfmSzdmzq69B4XMz6y5YLI6lGXvxzJy/ommT/KDn9jcsIdc7Qf9/eadCzrkwlKwIRGZVAWcDRYD0uSF6//gNUqcHlvVADbQk6P7NJ7zeEENDCWhEt7WgxYILimPYmQITr55fttfVUqRODyzad5S+OMLw946XvdXMyQzmRGbZ+5l69yrFsXT5oZ3rmViwtEkJ6tQ9umUuUAQyV8fo+8ZbTB+9BssoITUaY3T+yqM0PrMDNWggNIXYjla0eGhVJiiTV5L0vjFI2wPNDB8f5drLvTimgxbSKKaKpAZuY1VeeupzA3/2ricqcKCL8KZGgs0J9NqwN9lUFKTj4FoObt7CzhSwZvIUx9MUhpPkeyfJXhmjMJJc1q6zV8fo+cPXqDm8gfiedsJd9QSa4miJkDcR0RSk4+KaDk62iD2Tx5zKeOWxvZOeemLPxJLfVfJYjyciUZox5PomsVLL+15c02bshTPMHO8t/2yp8/pGpOUw+dZlspdHvZKpHa2EOuu8ssl4qDyxl7aDa9rYmSLWTA5zPE1heIbslTFSZwfvrCn2bWBOphn50YkFS+ZnFxdc08ZO5bGSOYpjKQrDM6si8pHrnWDkhyeq9iisBrtkTr7oazIFxl46S2E0RWRLE8HWBEZ9DD0e9HroDLVUeUDp8zvYmQLmVJbC4DTp80PMnOirsKNYKYWhJIPfPsrMh33E93US2dRIsK0Goy6KGjFQSqIf5e8hW8RO5imMzpDvnyJ1dpBc//KUZ+1kjv4/e4f0hWFqDnUT3thIsDmOngh7dgcSr1ojlS+Xts+c7Cd1ZqBqIZ9qcE2HgW+9T+xG/0MJE29cxF5F0S4nZzLxynkyF0dIHOgiur3F841siKLHQ96C2+z3XbS9e2YyR3E87ZXaXxolfWFoWc+51LlBxHeVcsBkzeTuqtCVOZ5m6K+OkzrVT+JAF5GtzYTaa9HrIqjhgHduSW8xyC1417h3v54hPzBF5tIo2SujyxuzKxn/2Tnyg9PUPbKZ6LYWgq016ImQ16rjSq8qYXSG3LVxksd6SH7YW97HyI9PecdNUTAn0ljJhe/79Q0KDxzRq+5vW4hQSLB9h0Zrq0rvInYN4PU8vvRSkY2bNOJxQW2t4Jd/NUw0Knj/PZOhIZd83kXTBM3NCg8+aPBzXw3R2Ohdx9msy/f/yrOXWA89i44t70oy/f13Td560+Tjn/CeBVu3afyt34rQ2qZw8oTN2JiDZUrCEYWuLoUnngzw6c8EicW8Lz+ZdPnGn+TI59bBQb0PEDdmZCp+KYT/LdxAdHsLG3/7mXJJmlO0uPwvn2NyiV7DhWh8dhfdf+tJAg1emUjm6hiX//cfk7u2fHny+41QVz2b/ttnqTnoldy6ps2133uJsZfOrai3sv7xrXT/7acItXmZ6cJwkgv/4q/JXlqdUlRFExgRA7tgYxdLRsCaQrgxhJkyMbOrUy6hhgwCLQnP1Lg02ROK8CY9totbsLAzRex03gvqp7IrOjdvtd9gawKjIYYWD6GGvN4Y6bi4lpeJslN5zOks5nh69dVa7zbCE0YJtCQw6qNosSBKQEco4Nou0nS8iXzKO87F8fSa7fn1mUMJ6hgNUYy6CFo06JWoGypCLQWLpcUPO1vESmYpDM9gTd2ZTLFQvX66YIu38KOG5gWLs4swuWJ54cecSN+2UJQaNrze4sbSdRzQPK2goo2VLlAcnVm1xYE1gxDoNWGvT7I+ghoLen2jeNfyrOKpncpTnMhgjqfXtLpvVSiCYHOcQEsCvSaCGjZQNMXTtLMdL0BOF7CSWYpjaS+DepuPCTWke+dWc6IUkKtesJgtYo6nyQ9MY91G1cXhB3T+3R/U0NS0sraO+Vy/ZvMv/lman7289Hne2qrwD/7fUX7uKyEMo7SgmXPp73MYGXHJ5yWa5pWfbtmqEYl4AU026/KTHxf5d7+f4fq1m83mV0I8Ljj6YVN5HL29Nv/zP0/z0xdWdr1+7vNB/sW/jFNT4415cMDm5740taBg0I2oKvzGb4b53f9hLrv75ptFfvtvJ8lkFv7AiuJ9n//978Q4eGguC5tMuvT2OExMOFgWhMOegm1np0og4H3m5LTLN7+R4w//ILvoPnyWh5Rywfz+usss3lMEBFtrKvq18v1TpC+NrHgyXhydqShpUkpiIj54xs3bWsr/zg9Nk74wsuIJeXE8jZOdC2CEqqCFl2fQuxiuLSnMFG/4mUtmeHUnmk7eJFcSXLmbOHmT7LVxsh+VhQzpqcNaq1Qa57M2cAsWhYFpCgMrs1paTaTjUhyZue2e++Xg5Eyyl0fXrMLnHUFKrOnsbQUq6w5XUhj2Av+7hZO3PAGhK9W3O1RLIOj1CzbME0I5f97i7bfMqmwXdB0+9ekgm7d40972dpVt2zXeerNIcYk4a3jY5d/9XpZk0uXrfyNMba1COKywfYfC9h03v951JYMDDt//qwJ/9d08vb2rEyjeT7iu54H5r/63DL/8qyGeejpANKpQU6NQc0ABbvZPtG3JhfM23/rzPM//OO8HincRP1hcBkJXMeoilX5bwzPL9u2q2KamVjR2S9e9re3dLwhNKZXOzAXO5mh6Wb0UN21TVSp6VqQr78qxDtYGiDSGmbx07yenPj4+Pj4+641IROHxJwJlz0PwVFD/9Ju5krLm4hiGZ+fw21s8oT8jINizV6e5RaVviVJUgL5eh5/8uMhTTweorfUytF5vnSRgCApFyfSUy6VLDsePmbzztsn1azbJpB/QLIRleQFjZ6fKgQMG0agnWJROuwSDAkVAJiMZG3e4eMHhvXdMPvjApOe6c8u+Rp87hx8sLgOhKGVVyFluqcS5DILttail4FNK6ZU/3Qdm3reNEGWriFk8hdmVH+xga43nNclsb5ZzV8QL6rfVsuHJDt76V8fu+L58fHx8fHzuNxoaFI48NLdQPzHucOqUxeiIW9W0QAjJq68U+Vu/FUHXvXnF/v06nZ3VBYvbtmv8j/88xsaNGtmsy4svFPnTb+SYGHcRwisucxxJsQj5nKRQWB++iveSQAA+9ZkAf+8fRmhqVpiadPnPf5rjuR8VyOclAnBciWNDoSjJ5+SSWWCfO4MfLC4DaXkiHtKV5QxVsK0GNaRjL1OMAzylz7qHNpWFcqQjKY7NUBxf3Az3o8CsVP/8Yx1oTqBFAqzkXqHXRqh5YEPZnxMpPeGO2yj/CsQNpCMxsxZqQMWI3Fw2IRRBrCWKfovf+fj4+Pj4+CyOqsKTTxpEInOLx2fP2vQsow9QShgY8ALMw4e9iqW2doVduzU++MAkv8i6cSIh+B//WZw9e3RcF1571eRf/LM001PVBao+NyME7Nyl8zv/JE59vSCfgz/6T1m+8cc5v7x0DeIHi8tAOi7FyQzWTK6szhnZ3ETNAxsYf+k8brE6AROhqQRa4rR+6SDxvR2eSIiU2JkCU+8uT+XzvsWVmFMZzKlMWfwn3F1PzYMbKYylcKqUjheqQqApTvNn91F7ZFPZn9Mt2ky+dXnFx1oocOi/2ktuIs/JPz1H+5EWdn9tO45ZuUIpBISbwkxfS65oPz4+Pj4+Ph9lDAOe+ficL6ltS86cthgYWJ5+QWpG8tYbJocOGQgBiiJ4+BGDF54v0te38LYee8Jg8xYVVRUkkw7vvlNkanKdCyDdY7we0kC5B7W31+LkCcsPFNcofrC4TAoD06TPDlL36FaEIhCqQuevPIpQFFKnBzAnM9i5YmUQIkAN6qjRIEZdhFBXPQ1Pbiexv6tcgoorSZ8bYvq9q/fmg61BzLE0Myf6aHxmp1cCrCq0//yDICF5vIfieAona96kWqcEdbRIAL0uQqizjvrHt1F7eENF/2PmyiiTr19a8dikhNRAuuyfGGkMY0R1hj+Ywp333QvhNbv7+Pj4+Pj4LJ/WNpXde+aqc8bHXS5dtMlml/dszeUkJz40yWZcoiULhv37dVrbFPr7F85S1tUp6FqpwingeS12dauMj7l+uekKEQIaGufEiuIJha3bNK5ctpmacpf0v/S5u/jB4jIpDCeZfOMSkU2eVxdCYNRH2fBbT5M6M0iuZxxzMotbML0SStXrc9TjIQKNMUJd9YQ669AilSqc6YvDDH77/VX1tFrvmJMZJl+/RHRbC+HOOk/+PBGm6zcep/bIRjJXxjAnM7j50rEu9ZRqsQCBBu9Yh7vqb/J0y/VMMPgX72Elb6NfUcLZ78wFm67l0vf2ICf+5CzyhoWCDU91suHpjpXvy8fHx8fH5yPKk08FCAbnSlCvXbW5fGn54nSuC4MDLhfO2zxwxFs8rm9Q2bdf5+RJi8IC3UT9fQ6Fovdcj0QUvvDFEA0NCleuOGRSLo5LhXaFK6FYlJ44y6jD9WsOU1Murp+MLOO6cP3aXDa3rU3l1349zI4dGn19DrmcRM47XhJwHSiakpmky8iIy+VLNjnfZ/Gu4AeLy0TaLtPHe9BrwrR8+RDB5gRCEahBndoHNlD7wAakK71slytB9bKP84Va5uPkLVKn+xn67jHS5wbv8qdZ20jH9Y7N947T9pXDhDrqEIonfJPY30Vif1fZRBzXBUVBaIsc64JF+twQIz/8kOQHvbd8zUoZOzuBdkWtDBQBJGRHs0xdSq7q/nx8fHx8fO53VBWeeiqAVpqtWpbkyhWb3ipEaW7F+LjDhx9a5WAR4IknA/zVdwsU8reO5k58aPHaq0W+8lXPZ7G+XuHzXwjd8rVSetVExaKn6jk87HL5osWbb5q8/NPiktlQRYGmJoVQSBAICoIB789AAIJBQW2tgjKXkCMSERw5YqAqXoBaKECh4AnsFIuSfF6SnHbJrzEHKNuGV18p8olPBth/wCsL3rBRY8PGW4clsiwgJJmelgwNOpw8YfHiCwU+OG75gfgdxg8WV4A9k2fsp2cpjKVoenYXiUPdqCGjHKQIRSCURUxjJdiZApnLo0y/d5XkB73k+iZv2xD3fsTOFJl49QLmZIbGZ3ZSc3gDWiw4d6yFQOgqsMDxlmDnimSvjDH9/jWSx3vI9U7ctrH1jUxfW1goZ7onRXZijd2pfXx8fHx81jgbN2ps2aaVHcYmJ13On115RmlmRnLurEVqxiWe8KKuAwd0mlsUJiZuPS+YmZH85bfybNumcejw4j7YQoCqCsJhCIdVmptV9u/XeegRgy1bNP7d72cpLGL7EIkI/vE/iVFTo2AYAl0HXRcYhvdnIChQ5013amoUvvyVIB//RADTklgmmKbEsrw/p6ddvv0Xed58Y23VdUrpZRa/8+08dfUKXV2LhyNCgKYJNE0QiUBHh8rBQzoHDur86TdzPPfDgh8w3kH8YHGF2OkC0+9cJXdtnFBnHfG9HV5paksCLRFCDeoIVcG1HdyijZMtUhxPUxyZIdc3Se7aOIXRFMWxFG6hOmGcjypOtsj00WvkesYZe+EMsT3tRLc0E2yrQU+EvWOtKbi2iyxaOHmL4kSawnCSfP8U2atjFEZmMMduz6dxpdh5Gzvve2f6+Pj4+Pgsh0cfN4jHRXmBeHDA4fTplc+ZXBd6ehyuXLHLgV8srnDkIYML522cGxKWiRrB5z4f5JOfCtLZtUgSYBGEgK4ujV/+1TDDQw5//mcLLx4bhuCJJwPU1CgLvmY+miZoaFBpaLj176em3DUXKAK0d6j82q+HeOTRALVVftYb0XXBocM6uhFmatLlrTfX3ue8X/CDxdtAOi6FoSSF4RlSZwdRQwaKoXmlkIrw7hBSIl0JjotrlQLHooVbsG/LM/AjhyMpjqQojqZIXxjyjnVAQ2jqzcfalbim7f1XsHEK1uofawGdj7Sh6NXd5LIjOSYuTq3uGHx8fHx8fO5TVBUefcwgFBKeYrwNvT0OV6/c3uJrf5/D2bM2Bw/NieY882yAP/vPuYpgsbNT5bf/2wif+GSA2loFKeHsGYuXflrk6hWbdNq9KbjUNUE4ImhuVti9R+eRxwyam732mNpawa/8WpgXXygwObnwnERKzwt6NZCSJavW5u9vpbutGO8S29i9W+Of/E9x9uzRCIcFuZzkjdeLvPm6SX+/TfaGfkUhvMAwFhO0tqkcOuQd13BYoKqCXbt0PveFIKdOWqTT/rz6TiAWOyGFEP5R9/G5BUIV/NyffBoj6q1MCgFa0Ft7sYtOSXAHVF3FdVzOffcyJ/7k7L0cso+Pj4+Pz7oiFhNoOgi8GMQssmwV1BsRAkIhQXCe9p1tQyo1t936BoV/8A8jfP1vhDEC3u+/8cc5fv/fZsjnvcBVypvjIlHavqJ4Ac7hB3T+u38UY/ceDRAkky7/w++k+NEPby1mKISXzVRuLb2wbFwX8vmFzewNA8KRuf05rmcxspygMRiEcHhuwJYFmcytt9G9QeV//9dxDj9goChepvj3fy/Lcz8qUCxIHOfm4zq7Za/E1zuun/5MkH/6z2JEowIQnDzheV8eP+ZX6q0UKeWCZ52fWfTxWQHSkfzgb72AEAIpIdYWZddXtpKfzHPt5T5yk3mMqEHb4WbaH2ph8OjIvR6yj4+Pj4/PuuJOZIqk9Gw0cgsIogsBDz9s8PFPBgmUVFg//MDk//43GdKpxccz+1vH8cR43njd5NlPmGzdphEIeNYb23do/OiHC48tOX338jRmqcfxdpgV1VkKIeDrfyPErt06qirIZV1+9MMC3/rz/KLB6fxfOY433u99N8/f/Fthdu3y+lkbGlTa21U/WLxDrKxQ2MfHB6foYhccnKJD/dYaFF3hyk97melPY+VssmM5el4fIHk9xaZnuu71cH18fHx8fHyWIBgUbN2m0dIy16P4k+cLiwrTLMboiEu+9F5F8URsPookEoJdu3UiES/0SKUkP3upuKLSVylhoH+uBlg3KAf2PquPn1n08VkFVEMlmDBQjcoGeEUTBGsCaMGVNcb7+Pj4+Pj43D2iMUFjk8J8F67eHuem/sRqMQzKdheuK8uB40eNpmaFWEyUj2vRlPQPrPCg4mVpZ7Gt28+Q+iyMHyz6+KwCqcEMWkhjz9e3M/zhGGa6iBpQqdtaS+Ouei7+6Nq9HqKPj4+Pj4/PEiiCCi9DgAXsm5ckHBZ0dmmEQt4GbNvLNH4UURRRcRwFc/2IyyWeEHR1zy3CZzIuyemP5nG9G/jBoo/PKjB5aZpLP7zGho91suNLm1E0Bem6WDmHqy/10vfm4L0eoo+Pj4+Pj88SFIqSzA29krt2abzxehFzGe4MQsBDjxjs26ej615YVCxITp36aFo8pFOSYnHuuAaDgm3bNYaHl3c8hIAvfzlES4tatlQZHXXp7V15ltJncfxg0cdnFbCyFr1vDDBxaZpIQwgtpOFaLvnpAqmBNHbBv4n5+Pj4+PisdTJpSV+fQy4nyyqfX/pKiJdfLnLubHW2HYbh2X787d8K073By4C5ruTiRZvz5z+avsvj4w5DQy6WJdF1QaJG4StfDXH+nM3YWHVZwUhE8IUvBvn1vxkuq9lmMi5nTlsM3kZJq8/i+MGij88q4Zguqf40qf70vR6Kj4+Pj4+PzwpwHM9P8fx5i8OHPXusjRtV/vn/EudPv5HjjddMJidvEdwIaGhQOHRY5+mPBXj0UYPWNhXD8ALObFbyH/6fLMVbu2bc95gmvPF6kcceM2hpVTEM+NizAVQN/vLbeY4dtchkbu471DRo71B58IjBM88EOPSATkODgqIIXFdy4bzN9/8qj+ULod4xfJ9FHx8fHx8fHx8fnxK6Dr/wSyH+zt+N0tziNTBK6Vl5pFIuY6Mu4+MuxaJE07zexOYWldpahWBQEA4LDMPr0XNdSTol+T/+VYZvfyu3oOfhR4FQCP7x78b5yteCFX2c6bRkJukyMuIwPSWxbEkgIIjHBU3NKrGYIBQUhMICTfOOq21LLl6w+Rf/LM3775m4fsvibbGYz6IfLPr4+Pj4+Pj4+PjMIxCAn/96iF/5tTDdGzyfRM9b2ZsaS+n9NyvaMven57/sOJJMRnLlss1//A9ZXn21+JHNKs4nHBb8f/9RlM99PkhtrYKmeQdOSlm20bjxuM72Jkrp+VemUy7vv2fxf/zrDNeu2iuy3/CpxA8WfXx8fHx8fHx8fJbJnr0aX/+FMAcO6NQ3KEQigmBQoKkgFEqBoZfpKuQhm3NJpyS9vQ5vvF7kpy8WmRj3017z0TT4+CcDfOWrIbq7VRIJhXBEEAgIVNVTo3Uc7z/L8uxGcllJckZy5bLFSy8Wefmlol96uor4waKPj4+Pj4+Pj4/PCtm0SWXffp2OTpWGBoVwWKDrAtvxVE6zOcnYiMPgoMO1aw49PTbmR7jktBqCQdi+Q2P7Dp2OjlIZbwg0VWBaknwe0mmX0RGXwQGHy5dthodW7nnpszB+sHifoNXHiO7tRg0ZmBNp8pcGsWdy93pYPj4+Pj4+Pj4+Pj7rlMWCRV8Ndb2gKjR+6Qi1z+xDDQcwx2YY//67TL9yGln8aMow+/j4rD9EMEBw5xaMjhak42D2DFC4eB1/qdjnjqBrBDZ0ENjcjTB07Mlpch+cReb95jEfHx+falhWsBhoq6Pm6T0YLTVLv9iVSMvBNS2cnIk9lcYcm6HQP4E1kQLXT1ouBzWoU/vUHvSaCADB9nqiezeQ+fAa5ujMPR6dj4+PT3WED+0h/qkn0JobQErMngHgZxTOXb7XQ/O5Dwl0t5P44scJbOpEaBpOOoMwdDKvvHuvh+bj4+OzLlhWsKjVhIk/sIXwtrYlXyul9AJGx0XaDm7Bws0XsVN5Cr1jJN84R/ZsP9L2V5OrQagKSsiY9wNQAhpC95PDPj4+6wRFIbh7K3pbM0L15OiNrjYC2zf6waLP6iMEemcrwW0by89Kra6G8KE9frDo4+PjUyV3LNIQQoAqvAmBoaGGA0AUo00S2txM7PAWZt69yMifvoKbM+/UMO4bnIKFOZokuKHJ+4ErMceS2DPZezswn1tzY+W3n0i/O2gq4UN7SHz+mSrfUFrUsm3cfBFnJoU9MY01NIbZO4A9kfTLI1cTAYqhgzLvAlEUFH/R644SefQQsWceQRhzC46Fc1dIvfA6zvT9XZkiNA00teJnSsBY4NU+Pj4+PjdyW09oKSVu3kSaC/TMCQGKFzAKXUVoKkIIhKFjNOrUf+ogWjTIwL//CW7Ol4xaDGnZDP7hizR//XH02iiZ071MPv8hTtrvu1gLCAUCiQC1GxPEWqOohlIRMCZ70wwfH713A/yoIARKJIzR0VLd66Wci+NnTbNciXRdpGVhDY6SffcE+dMXvUm1b+Z0ezguZt8Qga0bUKJhkOBMJile67/XI7t/URXCD+zF6O4oZ3MBUAT5s5fu72BRSuzxKeyxSbSGWhACadnkz1661yPz8fHxWTfcVrDoFizGvvMWM29duPmXAoSho8WCGC21hLa0EtnRjtFSixIyEEKgGBrxI9uovzbK+A/e8/sYF0NC9lQv10713uuR+NyCWHuMQ7+5h+b9jdj5mw1i+94Y8IPFtYgQczH9rAOwWorzAwbq9k0Et22kcOk6ye//lOLlHnB9v6zbIf2zd5C2TXDnZtyiRe69E+Q+OHuvh3XfYnS2orc0VgaKgN7cgNHZSuH8VbDvX5G0wvkrJL//IuEH9qIEAxQv95B68c17PSwfHx+fdcPt1f5IiZ3MUhyaWvx1p3rhpycItNfT8LkHqHlqN1o8DIASNkg8toPkG2exJtK3NRwfn3tF4446wo1h3v+3HzJ0fBTHqgwoXNsPMO4l9vQMsmjeXA4sKFVAeKWQIhjwStTEvLSwEAS3b6Lul7/E5B99pyTI4rNS3GyO1POvkXr+tXs9lI8EwR2bUaKRm34uVBVjQztaXQJ7bPIejOzuIIsmufdOknvv5L0eio+Pj8+65O41ikgoDkwy9pdvo8ZCJB7dgWJoCCHQa6OEtrZhTVy8a8Px8VlNtKBKZijD2NlJiim/B3etkX3ruFfqeKsyUlVBaCpKOIRam0BvbkBvb0Fvrvf6nUro7c3EP/0kk3/0HaRp3cXR+/isDBEMENjUhRIKAiXhOSkRSklcqLsDrbHuvg4WfXx8fHxuj7uuKmBNpkkdu0JkTxdGQxwAJRwg0F5/t4fi47NqZMfzCEUQa4uQm8gj/ZLqNUWxZ4D8qfNVlborsSiBLV1EHj5IaO92lGCg/Lvgri0YXW0Ur/jl4D5rH6OjBa2pvlyCKi0be3Iao9UTStPqatA7Wihe7vEXQHx8fHx8bsk9kaAr9I3jZAtQChaFrqLFQquyba02QmhzK8GOerSaKCKoge3iZAtYk2mKg1MU+sdxUvllbVcEdIKdDQRaa9Eb4qixEEpQB0CaNk6uiDWeojg8RaFvYt0L9ihBneCGJoIbmrzPG/YmzG7BxE7mKPRPUOgZxZ721VgBCtMFjJjBgd/Yw/jZCfLTRVxnrvR0ps8XuFkvuOkM+RPncSaTiIBBaO92T5hLCIRhENyzzQ8WfdYFxqYu1LoE4GUVnakk+Q/PloNFoSoEt2wgd/wMzsT0vRyqj4+Pj88a5Z4Ei046j7Tm5OiFoqAYSwxFQOzwZuo/fQjwxHVG/vOrmCNJwMtOxo9spebxnQTa69ESYU9IR1XBlbiWhZszsVM5Cr3jjH//XfJXRpYca6C9jviDWwnv6sRo9IJENRL0SmhLctzScZGWg5MtYKdzFAenSL17kdTxq7jZ5QWNgfY6Gr/6KFp86eA5+cY5km+cX5HgRmhTM/WfewAt4fWOTjx3nMypHpAQ3t5G3ScOENrcjF4bRQ0HPI8qAdJyvIBxxvucM29fIHX0Mk7mo63KGqwJEIjpBGsCBONt2AXbK/kqMfDuiB8sriekxBwYoXD6IoENHajxKFDq8+povceD8/FZGiUaxuhqRQmXniWuS/F6P8UrvUjLLvsOBrZ0o9XE/WDRx8fHx+eW3JNgUaiehcYs0nFxi0upsQmM5hoSD28vv2fyuWOYI0nUaJCmrz5C7TP70GoiN6m+oQhULYAaCqDXx3CLlhdELoIaC9Hw+QeIP7wNozGBGg2W+zxu/jwlL8lIAKMpQai7iciuTkKbWxn/wXvYU5klj0l5v9EgsUObyiW6i1HoGUMoArkC7RQtESF2cBNGk7fqXOibIHdpiOi+blp/9WMYLTW3DOBFQEEJ6GiJCIH2ekJbWwl01DPxo2PY09V/zvuNsXNTvPmvji74ezPtl3itO1wXa2QcJ5kqB4soAmX276uEEgkR2NJNYMsG9JZGlEgYoQrcXBE7mcIaGcO8PoDZN4QsrKBiQQjUhloC3e3o7c1ojfUo0QhK0ADXxS0UcTM5rPFJrIERipd7cDO5Vf2MawERNAhs7CSwbSN6SyNqLAq6ipsv4qazWIOjFK/0eMf5PijJ1Nua0Vubys8t6TgULl7DmZrBGh0vL3oo8SjGxk7M3iGktUqfW1HQmuoJbtuI0dmKWptACQeRrsRJpjCv95M/dQF7fAlxvPWMEBhdrQR3bEHvaEFNxBCGjrRs3HwBe3SC4pUeCpd6kPnVWWwVuobe3kJgSzdGZwtKPIYSDCBNC3sySfFKD/mzl3FnfDFBHx+f6rknwaLRGC+XcAK4eZPi8PIeGkJV0GqjqNEgzb/4JPWfPogwNC+LaFpIR86JWcx6PaoKCEGhZwxzLLno9p28id6UINjViKJrSFnyXrNdpOOC65bEAkDMbt/QEIonlmHUx2j4/ANI22H8r96tOvMmXYlbsHAKphdQl9QahRCeEIe40e19dQhtaiZ+eDOtf/NZ9IaY51Vu2kjb8frvpCyPQTG08vHU62M0fPEITt5k8sfH13357Uox0yZmegFhG+GdIz7rDzdXwDUrv1ehaZ5a6hKei3pbE4kvPEtg60YArMERJv/4OzhJb6KmREKEDu4m9vRDaM0NCF33FrFmzxUpvfuM7SBtG2t4nMk//kvskfElxy10DaUmTvjALkL7dqC3NXkqr6o6tw9xw34cb19uNkf+w7OkXnwTJ5lakbeksbGT+t/8+bKwymI4U9Mkf/AShbOXl72fWdS6BInPP0No304A7KkkU9/4LtbgKCIYILRnG7GPP4be1ozQS1Uhs4t/s96ato00Lcy+IdIvv03hwlVPQXc9IgRGdxt6S2P5R9K0KZ6/irQsilf7MNpbys+W0L4dZN87cfvBoqpidLYS/+TjBHZsRgkY3vWiKHPnteMSPrSbxOef8Z6liyBNk9SLb5B59b1FX6c1N1DzlU8R2Nxd1TBTP36F9M/eqeq1t0QI4p94nNgnnwA8hd+ZH7/iKa4qinftf/4Zgjs3e9e1ps1dcxKQ3vUWfeoh7IlpMm+8T+79U7jZlS3SiGCA4PZNxJ55GKO7HWEYc+f47L3KcYkc2Y80zSV76mW+wOQ3v+dZBfn4+HzkufvBoqoQ2dWBWrLOkFJiTabInV++KbPRnKDukwdo+NxhAKyJFIXro2RO91Lon8BO5RBCQauLEdrcTGRHB3pDnPyV4aV77WyHmbcvEN3bjRYPl8ouJ8mc6aNwdYTi8BR2Kod0JVo8TGRXJ3XP7iO8vd3r7xMCJaDT8LnDpD+4SvZc/82y/beg2D9J///11+VAWIuGUGMhtHiI+JGt6HWxZR+naghvbye0qQWtJoK0HAq946Tev0T6w+uYw1O4BQslZBDe3k7dx/cT3dvtZVuFQAnqNH75CNlz/d736Gu7VBBvj1K7KUHv64P3eig+y0QYOkKdd5uUEjebrS6AUlWUWASt1DOGIhC6DgK0hjrin3qC6OMPgq7dehGoZOnhKbIGMPP9yGr88BRB/NNPEXvmEc8yoTRJX3ChqbwfIABKOEjs448R3LGZqT//odefucxSd6GpqDUx1Eh4yddK2/aOy20gFAUlEi4fazURRU3EcJIpYp94nPinn/KCxAWPszdmGTAI7t6K0d1O6oXXybz2Hm52ef3tawG1Ju4FDfPEmcz+IezJpPf36/3Ixw6X1X6DWzeg1SUwU7dRHaKpRI7so+bnP+dlbYV3zslSoCJN79wVmuqJRs0b20K4RbNCYGpBFAU1Fp271pZ6eTXbXAwBSihQ3p+siaE3N3gLE3u3UfPVT6M11M0t9N7wXvAWbaSuYURC1LZ8lsCGDmaee2XZyrRqIkbs2UeJPvNIeXGmfNxtB+m63jhUFSUchPDSCzhuVq9Qgvbx8floc1fvBkJXCW9vJ/7QNrRoECklbt4k9f5lCn0Ty95edP9GwtvakK4kc6aXib9+n8zJnop+yFlS71xAGBpGcwI3X91qcfZkD6n3LuGk8yTfvkCxf+KWgZBVmCE5NkPmxHWavv4YdZ88gBo0AFCjIRIP7yB3ebj8sFwMt2CSu3BzUCE0FaO55o4Fi1os5GVPLYeZt84z+hdvUByszPa6RYvUe5fInumj4ctHaPzSQ14/oxDoNVHiD26hcG0Et7D+S7hWDQG1G2vY+EynHyyuQ7TaOGpsXsDjOJg9QyvalhqNIHQdNREn/tmniT3xoLfyLyXSsnALRaRle4qtqooSNBABA6EoSCkpXu2rujxUGJpXOntDub8sFnHzRS+7YDvehF7XUcIhlHBwrkVAVdE7W6n9+c8w+affx+pb3meWlo0zNYM0bYRWymZqc1nNO1UhMYtQVYyudozN3SQ++zRC86pDXNPCzeSQxaL3+RWBEgyixCIohl4elxqLkPj8M7jpLJm3PwDn5mfKWkZracDoaqs4zoXTF71FDimxRiewRiYwOloAb1EkuHs7Zv/Iyj5rKTtZ+/XPo8QiXrDiujjpLPb4FNbYJG4q7ZVE18TRmxvQGupQIpW9+dJ1kaaFLJq4pombyeFUE8A6Ds5MCnsq6WXUNM07l0vZtTt+vikKWlMDkUcOEf/EY+iN9d5UwXFxsjncfKG00CMQho4aDSNCwfK4RDBA5OEDuPkCM8+9ipuuLmgXAYPoxx4h/pmnyq010nGxkzPYE1NYoxPIbB4R0FFra9Ca6tEaalACc8HyXDBvelVZpokzk8FdScm7j4/PfcmdDRaFQOgqajiAVhsltLmFumf3Edrklb9IyyF19AqTz3+wos3HH9iCdFwyJ68z9B9foti3eHmWNG2K/dWv2rmmzfAfvbxkqcwsdjLL1AsfEuxsIHZwU/nn4R3t3qp1FcHivSZ3cZDhb76CNZ5a8DVOtsD0z04T2tBE4pEd5Z9H921g4gfvf2SCxfrttTgFh2RvilB9kETnzYG8UAT122vvweh8bhclGvbUJBNe/7CUEjdXIHfy3Iq2JzQVrS6BcXgP0ccfQCJwUxmswRHMoTHssUncbA5p2SjBAGpdDXpTPVpTHUok7PXSVVMW6Uqy758i+sSDKNGI1483PoU9Pok9MoE1PomTTJf7H9VYBL2t2eub3LYBJepN9oWioHe0En3sMMmR8WX18dnjkyS//6LXGxkKoISCKMEgIhTA6GrDaG8pC6zcKcIP7EVrbgBVRVoW5uAoxSu9mD2D2FPT3ufXNPSGOgJbuwnu2IzW0liewCvBAPFPP0Xh/FXsiXXUW6epGK1N6E0N5R9Jy6Jw4Vo5I25PTGP2D5WDRYDwvu2kX34LuYJgUWtuIPHZp8vnjnRd7NEJ0q8fJXfsNM5Uci4bLwR6axORRw8RefgAWl1NeTvOdIrseyewJ6dxZtI40yns8aWf2c5MmvQr75I/fRElFESEgt45FwqgNdUT2NhZVUn07RDY3EVg6wa0+hoQAntskuKlaxSvD2CPTuDmC16wHI95vYy7thLY3FUO8oSuE35wH8XLveQ+PFtVNj+wqYv4Jx+fFyg6FK/1k3n9ffInz1csLgldw+juIPrkg4QO7prL+rsuZu8g+VMXvGM+k8KeTmGPLn8B38fH5/7ktp7WQlOJHdqMupDthaKgBDRPDKWtjtDGZrR4GARY0xlSRy8z/t13sZMrt1+wUzlGv/P2koHiSqk2UJylODxN5nQv0b3dZbXUQFvdzaI7axBpOUz88OiigeIs1niK9MkeYg9sQSlN+oId9SiB2ysnWy8IBXZ8aQu58Twf/vEZWg80sfcXd2BmrcrssxCEG4JMXvaVBtcTSiRM+Mh+zzZjXlCT++AM5rXll8zPEj6yn9C+7SDB7B8k+86HFM5cxBqdvOXkUAQM9LYmtPpazP6hqvsH7fEpMq+9j1pXQ/FqH2bPANbw2ILBZv70RdRjNUSfOELsYw+hRiOlUnpPFEZvbcLsrT4z7mbz5D+8dVAd//STaJ+tRb3DwWJgU6c3FtMif/I86Z+9TfFqH9iVwZB5xZuchw7sIv7pJwl0t5d/p7c2Ety1hczr79/Rsa4majyKsbEDYczdi62hMex5aqdOMo3VP4J72EQxvCoYveTJuNwsMkDkwb3ozY3l3mwnlSH9s3fIvH705j5IKbGGRkm98Dq4LrFnHy0HctK2yb51HGt4bFn7l0WT4qXrFC9dv+l3wb3bqPuFL9zxYFFvngvOzb4hUi+8Tu74mVsusuRPnCN/6iKJL32c8P6d5Z9rtQmCOzdTuNzjZWKXIPr0Q4iAUf63NTRG6vnXyJ++eFOGWFo2xSs9ODMphKETPrjLK/+WYE/PkH7lnftS2MrHx+f2ua2ntWJo1Dyxi5ondlX1ejtTIHtxgELPGNkLA6Q/uLYspdBbkTnZ4/UDrhGkaWOOJrEzBfSaCABqJLAugsXi0BSZ09X5x0nbwRqbwZ7JlZVb1UgQJXybvSDrBCmh740BrLz3QA4kAhRmilx7uQ/Xnpv0C0XQtLsBI/bRCKLXLaWyT7Um7mXZtm0ktHcbemM94JXH5U9eIPXimyuyqpkl/OA+hKZh9g2R/KsXKFy4elPwMh9ZND0l1OsDy9qPLJplAQ+nSuVDZzJJ+mdvo7c2Ej64u7zYpdYm0NublxUsLj64u9fULF2X4uUeZn7wU6yhhQMQWTTJf3gONRJGq6tBjUXKvwvt207mjaN3ddy3g1qbILCpq+Jn+bOXK4M2x8EaGsWZTKLMei7qOqG925cdLCrRMMbmbkSpF066LtbACNmjpxYVzHHTWXInzhPYvong1g0AaE31hA/tZua55QWLi3KXvzZrbJKZH/3Myw4usths9g6Sev41jI4WtPq56pPAlm7URHTJYFGtiRPYMifoIy2b/LkrFC5eW7SU2B6fInfsNMbGTvTGOoSmEtjUSXDHZnLHTi/jk/r4+HxUuLsdzFLi5IoU+sbJnOpdFUP3mXcv3dbk7U7g5oq42QKUgkVUpTzxWstkz/TiFqpX/3MKpqfyOs/mQ/2IBItI6H9nuPxPp2gzcnKcyz+5DvNPRwFWzmbjM513f4w+ZeKfeJzIA/u49cxRlMRnNJRwCLU2gVYbL4uuODNpssdOkXn96LLFJ25EMXScTI7Uj1/x1D/vVAAiZdVB4nzcVIbcB2cI7tqCqnllako0XFEquJ6QRZPUC68vGiiWX2uaFC5dJ9Q3SGj3tvLP9c420FSw1n4bAZqG0d6M1lhX/pG0bIoXr92U4bKGx7FGxtFLwSKqQmjPdlLPv7asZ6rW3ODZQpTKd6VpYfYM4FbRa2iPjmMNjZaDRYDg3u3MPPdK1ftfS0jHJfvWcfJnLy0aKHovllgDI+RPXSD2sUfKP9aa6lFjEZYq+ja62z212dJxd9JZrP7hqmw4ild6cWbS6KXzRImGCWzb6AeLPj4+t+SuBotqJEBkRwfB9npqntxN+vhVJp//YMVlqK7lkL82subUN6Xj3ly+eocb7FeDfM/YkpLaFdie1P58hKF6am9r7Du50/S/M4yiKZWBIoCE1ECaoaOj92RcPh7B7ZuWflEJrzcxj3Wtn+LVXgoXrmH2DeGmq1RBXWLbxYvXyJ+6uGYzVcUrfV5gUVrrErqGuMMlfHeK4jXPhL5a7MkprOHximBRCQdRYxGcqZk7McRVRYmECGzbWKFkaQ2PYY1P3XS+2VNJrKFR3N3bUEolq1pTPXpnK9YysshqPOZ5dpaQlo1VZb+bmyvgzKSRjlPuu9Ma6xABY13allgj4xTOX0HmqxOHcYtFipd7KoJFJWB44lSqsmjAqTXUwjy/aDeTxZ6u7hx1ZtKe0JPrenZfuu71Wura+lgU8fHxuavcVrDoFi0mXzxB5uTNfQJQkjMPB9BrowQ3NnnWFfUxlJBR9jCM7O1m+I9eJn9l+JbbWAwnncOt8qa8apR8D72/i/l/lH6Jd5Nfh5ijM54S43K44eV3WnVurZKfWng1d6Y3RXro9rPoPncJKZG5gmfSXur3c7P51QnuXEnmnQ9Xz/z8DuDMpLxJqpRl6X+ha0tOXtciuQ/PIc3qgw6ZL+KmMxXBixACJRxeF8GiGosQ3LG5/G8pJcVL12/di+Y4mH3DOMkUSlO99zlDnvXDcoJFJRRAaPPK7F23ersRKZFFT5l3VolXaCoiFFyXwWLxSk9Fb+iSOC72dApp2XO90UKghEKeCvIi15sSDVeqHVtW9cdMSmShUL6nCSEQhoESMHD9YNHHx+cGbitYlI5L4fooqfcXM1MWCAVQFLREmJond1P/6UMYzQmUkEF0Txftv/1pBv/d8+Svjixr/06muPzgZgUIVUEJGajREIGOeoJdDRgtNWjxCGo0iBoJeEb1hoZi6ChBHSVkLL3hNYaTKazZbMd6xnUkruM/gO8lbtFc3BJAeIbZQlNBVVHra4g+8SCRxw5jj0+RffdDckdPeRPB27hGXNOkeKVnxe+/K9hOZRmiEJ5wiVC4OXW+dpGui3mtb9nPCFm0ysEL4H3+4Dq4n6uq1+9WO+c1KG2bwpUe3NythUvM6/3YY5NeNq8UMIR2biX90ttltdwVsZy2i5KdytygWbSPd60ipcQaGsPJLHNh0LaRplkhpCWCRhXVSDf6NyqeFU+1aFrlNtxbVET5+Pj4sBplqFIu8TCWSBfAxRpPMf69d7An07T86tPoTQmEohDa3ELDl44w+P+8gJur/gElbefOxjaKQK+LEtnZSc0Tu4js6fLUXO9TZHHtZjvWPAJCtUHCDSG0oHpThjU/XWCmb/k9ZD6rQ/atY5h9w7cO9EoWPyIYRG+qR29pRK2rQY1HUQIGRkcLxtc+Q+TBfUx/6zlPQGKFNx57dHJZFhSrivA83kTA8P5U53wPy150wuvf5Cal0vVXMVC1R98NyJIX4XzEcibh9wgR0Akf2FVx77EGR70+2wWe0fbENObQKIFtGxCGgVAEan0Ngc3dFM5eqmq/bjZfmb3VVNRElX7AmoYaCaGUymallEjTWjC4XcvIvFdSu9xAV0pvYaOC2WtxEZyZdMWijggGUKMLKNPfgAgYqJFQWb1Wui5usXh7CwQ+Pj73LXdX4AZAQvLN80QPbKTmqd2eqISmEtrYQnhbG5kTty5pvdsITSW8rY36zx4m8ch2hKHNPYSlxLUd3LyJW7SQpuMFrqVeRTVsoDfGy30g6wc/q7hSIo1hdv/8NtofakVRBInuOOnhDEZER1EVTv3ZeU5+c2X+fD63T/7cFfInzlWVZVLCIQI7NxM5sp/gzs2ejQSgd7VR9ytfYuI/fQfz+soUmN3M7fc9LgtFoEQjaHU1aPUlU+6metTaBEo45HnRBXTPxFzTvBJArVRyus5Lyp10Zs2Jn91J1Hi0Qh0TwOwZwJle3ArJvNqHe3gPSr2XPVVjEYLbNlA4V50AkzU2iZPJoZfKlhXDINDdTkbTwF68omL2nJx/rpkDI3elYmi1cQvFu1o6a/YPeZoBpeOuJmJozY2gXlyyXFzvaEWJRcvHXRZNrOEJv7LIx8fnltz9YBEvI5g5cZ34ka1ljz69LkKws2FtBItCENndRcsvP0F4W3tZydQ1bYrDUxQHJrHGZjAn0zipHE7OxC2aXtBo2YS3t9P4cw9hNNXc28/hc9do2FFH4856rr3Uy9iZCR7/7x7k2B+eJlQboGlPAyMnVlEK3ueO4uby5I+fwewZJP6pJ4g8chA1EkYIUTYfn/yTv6y+L2v+tovmXZuQKbEIwW0bCezYTGBzF3prE0pgHZRTrhKyaH2kJr/B7ZtQwpWZJTURI/zgPuQiJdhaXQ0oc2WjIhjwlDbjUdwqFHWd8SmsoVECG9oRul6yYugisLWb4vmrC75P6DrBbRsxNnTM/VBC/uT6XFSTlr3ocV5trP5h7PFJlEgHAlDDQUI7N1M4ewlrYOGWHhEKEj64C62uVK4sJU46S/Hiwt+Vj4/PR5t7EiyCZ14vrbkbqxIKoNVEFnnH3cNoraX+s4fKgaKUEiedJ/naWVLHr5C/NuopuC6w+qkmwrjW+uu58Fk5wYRBeiTL1Rd7yIzkyE8VmL6aZHAijx7S6DjSyuip6hQCfdYGzuQ0mVffRW9pILhrq6caqKoYmzoJ7txM7tiZ5W/0LgUvWnMD8Y8/RnDvdk8e/8YsoZReyV/RRBZNT9TCspG2N+E1OloreqjWI16bwkckWBSiwtx9lvDB3YQP7l7mpgRaQy2B7nbypy4s+Xpp2+SOnyG4YzNaSShHa6wl8aknSQlB8WrfTRk3EQoS2reD6JNH0GrmrJeswRHPUmY94rh3NSMqTYvsW8cxutvLZauBrRuIf/wx0q++i9k/clOftloTJ/zgPsIP7EUpKRxLx6F4uYfitbXjV+3j47O2uGezgRsbqYUi1oxxfXRPJ5FdneWMorQdpl48wfj336vK5kMoyrrocfFZPVxHerYjpUl5brJAojNOZiSLlbeJd1bZw+OzprBGxile7iWwqQtRytookTDBHVtWFizeBdT6Gmq+8inCB3dVWChI18WenMbsHcQaHseZmvH6lEzbE9mwHS8zIgSN//UvVt93tmb5iASKgFqXQO9uX8Xt1WBs7CB/5mJVAVDx0nWy758k/sknvJ5YXSe4czNKIoZ5tQ9rZBw3k0UiUOMRjI5WApu7vLLJ0j3TTqZI/eS1qu0f1hpy3v/vFrkPzhLct4Pwvh0AKKEg4SP70ZobKF4fwB6dwC0UEJqGWhPH6GydE0ESAikl5sAI6Zfe8vsVfXx8FuSeBYtqLFShgCZtB3cNCKyo0SDBDc1oiTkhG3sqw8SPjlbtBykMFSWwvlflfZZHdjyHULzexcxwltGT4+z+2lZqNsZpPdjExIWpez1En5XgSqzhMZxsrlziJ3QNraEWYej3TqxmIRRB/BOPE96/syJQtCemyb77IYVzV7Anp3EyuZJ0/i22oWtIXz5/XRHateWmEtTbQZSEndTaBM5kcsnXS9Mi87N3UGMRok8eKXv3BbrbMdqacfMF71oReBYN4eCc2ixgj0+RevF1cifOrTt7lnuJM5Nm5q9fRqgqoV1bvJ7RYIDg9k0YGztxc3mvb1RRUIIBRDBQsZBtDYyQ/N4LmH3VW6X4+Ph89LhnEU1oQxOKMbd7t2h51g33GDUSRK+JVNxQc1dHsKarlMMWwrPUiK3eg9tn7TN5aZrCdJHsmKfid/WnPTTsqGXLpzYweWmaqz+t3hjcZ23hZHJe9q2EmFUVDQbWXLAY2NxN6MCuCjVTa3SC1I9fIXf8LG4+v2Tyw1NFvcMD9VlVQvsqFwecbA5reKxqc3jwSpe1hjqvykcItNYmjPYW8lUEizAXuNjjU8SefdTrhcRbXFH16C3f4xZNCheuknnlXQqXrvvZreUiJWbPANPfeg7ryQeJPHQANea18yiGvqDInpPNkz9xjvTP3sbsG/ooJeF9fHxWwD0JFrW6qCduEwp4P5ASazJDoXf8XgynAqFriEDlDdaerl7BUK+LEtrcUi5h9floUJwxKabM8kO3MGPy9v/vOGpAxTFdrNzaCip8qkfM2kqsA0L7d6ImYuXxuvkCufdPkX33RNXZQiUYWPdKqB8l9PZm9I6WcqWOlJLChaskv/38sjz/wgd2UvfrX0WUAgy9qR6jq438uctV20G42TxOMu0ZyksJjuPZl9gOImAgHQc3m8OeSFK83k/x4jXMwVEvSPwIKdeuKq6Lm0rjZnLl0lJp2TjJGc8eR9OQpoWTyWKPTVK81k/hwlXs8SlksegHij4+Pktyd4NFRaDVRmj6+ccIbW4pr15Lx6U4MEH+2sIKXncLadk3+Q1q8VBp8rT4XVVoCuFdHcQf2LxuJpc+q4TwMjLzBTWsnI2V88v51jtqLFKeQAPlyZjM3/tKiAoUgdHdVjFWe3KawoUryyorVRKx5Zl7+9xTQru3oUTDcwsEuTzmtX7s8cllbSd/+iJuJotSygiiqhgbO9Ea6rBHqljIVRUijx6i9he/gNA1ZKFI9ugpUs+/5nk93shHRXzoDqMmYsQ/+zSxZx4BRcHNZEm//A7pV97xAsgKpB8c+vj4LJvbDhaFoaGEFpZjF6rilaFEgwRaa6l5ag/xB7eghr2sopQSc2yG6TfOrYkyVCdTwE5mka4sG9aGtrSg10Wxxhf2qxKaQmRPN41fOIJet96FIXyWS6wtSrghxNSVJFbWzyLeN6gKenszSnSuhxnHxUll1lxfnxIMeNYF8xaq3FwBu8oywlmM7jYUfb15xH40EYZOYNsGlGCw/DNnaobi1b5lb8vNFymcv0L0sQe8bQuB0dWK3txQVbAY2NBB4ovPeiq6rkvh7GVmfvhyVT2PPitEVQkf2k3sY48gVBXXtMi8fpT0y2/jZm8MFH18fHxWxm0Fi0JTiR3YiLZQf54QCENDi4Yw2uoIbWhES8zZY0gpcbIFpl89Q+aDa7czlFXDyRYo9E3gpPNlkRu9IU7jzz3M5HPHKY5Ogz1XLiN0Fb0hTmRnB/Wfe4DI9nZc0wYpPbPrZaDGwyiBkjm2rqBoKkJXEZqKEtC9DOc8jJZaovu6cQuWJxBkO0jL8VQNbQc3b+LkiuvS4Hi90bK/kc6H2/jgP50m6QeL9w16axOBzV0V/oRuoYDZuwYFIdRblMu67rK834SuE9yx+aZSfJ+1id7ZitZYX1YSl46LPT6J2T+0/I25LvmTF4g8cri8UKrWJtA7WihcuLqk4Xz44YOo0QhCCJxsnsLFa36geIcRhk7kscPlthdnYprCxet+oOjj47Oq3FawqBgaiUd2kHhkx4re78zkmHzpJBM/OromlFBnyZzrJ3d5iNjBTV5mVFOp+8QBjKYEuYtD2DNZpOMiDA29JkKwu4no3m60RBg7kyfz4XW0RITovu6q9yl0jYbPPUCgrdbL1hoaiqEjAqW/B3T0hnjFe2KHNxPa0opbtJCmjVu0cM3S302b3IVBZt46jz3jPzjuNEIRWDnL7028j1Draog+/iB6V3u5h09KiTOTpnBxbSxuzUcWTG/BSMpy0Ch0HSUcqnrSHtixicCWDRVKlT5rl+CWbtR5PoVuoUDxWv+yhG3KSInZO4gzPYNWXwN4/bqBzV3kjp3GHl3cJ1Zva4LZXn3XRVbZ5+izckSp8mEW6bp+76ePj8+qc08EbtyCSe7KMMnXzpJ86wJOKn8vhrEgxcFJpn56EqMpQaCzASEEasgg8fB24g9swckVka5E0VWUkFFWTnWyBZKvnmHiuePUPL6T8Pa2qrOLQlNIPLad0IbmpV9cQouFFs7qAkrQIP3hNfCDxTtOajBDw/ZaIi0RsuNr63z2WR4iYBDY3O2ZVx/YiRqZd43ZNvlTF7GGRu/dABdAWjbO9IxnxF1SxlRrYhidrVj9w0u+X+9uJ/bMI2glDzaftY0SCWF0t1dYZriZHIXzV1a8TTebp3DxKtFHD5d/FtjYiVZXs2SwiON6fYhCoERChA/uwplKYvYN4WRyNxnE+6wS86xGtPoawg/uQ1oW1vAYbjbv94b6+PjcNnc2WJQSKSVu3sLJFjDHUxT7xsldGiR/bZRC3zjSWoMPEMclffwK0nVp/LmHiWxvL5f5CE1Fi4crXj7bdzn53DGSb57HGpuh0D+BNZUh0Fp7Lz6Bz10mM5KlmLHY9ZWtNO2uJzeeR84r/02PZJk473st3iuCm7u9bNkCEyehqoiAjlpbg97aiN7ahNZUX1F+KqWk2DtI5tV316wXnHmtj9D+HaizwWIiRvjwHszeIazBWwuICV0jsH0TsWcfIbh9k9dzdie5MRAVwg9OV4De1ozW3DBXguq6WKMTWAMrF4pzi0UKZy8TefhgeRFUiUcxNrRTvNa3aClq8Wovga0bEAHD81jcsRm1vhZnOolbMG/OeEmQjoMsmjipDPbYBIUrvTgT06sb4AjBTV4w94mAk7QdCld6Ce/zqruUUJDIkX0YG9pxkinP2ufGYyml16pSNLGnZ7AGRyle7vFLV318fBZkWbOCfM84A7/33JzlRVVIpOOVpLgFL2h00oXll6hIycw7Fyn0zDXauwUTJ3tnRHHcgkX66BWK/RPEDmwkemgToe4m1EQYRddwLRtnJk9xeJLsuX7SH1yj0DeBm/PKfzInrtM78r1yZtFOZhbfX9Gi///6YcXk9HaxUzmsyfQtf5e7PETv//rdiolhcXRmWdvP94x550NwbsyF3rGPpNpaw/Y6Nj3TRTARoPVQM3bRqXhI97w24AeL95DIY4cJH9m38LkphFdybhiIoFHhszqLPTFF8i9/gj2+dr/H3InzRD/2MEo45PlBahrBnVuo/QWD3NGTFC/3YM+kEULxgoDOVkK7thDYthGtvhaha9iT0zipDEZ3+y2Pw2IoiSjBrRtRaxNlE3DvTwMl4P2pNdShhOYEWbSaGDVf+SSxjz2MLJq4xaL3Z8FEFoq4hSLO9AzFyz04M7e+n30UMbra0Brry/+Wlk3h/PKUb2/CcTEHR7HHp9CbGwBP6Ca4awvZd0/gLBIsZt48RnD3VgKbuxFCoBg6RnsztC9QLVNaTMZ1vdaJQgEnnSV/+iLpF9+4hZLnzYhggMCmLvS2RkQggBIwvHMuFPD+HQyg1sRQ6xMV74s++SDBHZtxiyZuwTvfZLE49+9cgcKFa9hjS2RT7zHSNEm/9BZGR0vZ11IJBQl0t0N3+wJvKh13x8U1TU8Ea3yK3NFTZN874Xtd+vj43MSygkU3VyR/7d6VX9lTGeypxYOu1UTaDsWBScyxGZJvnEMYmreKK4R3w3VcpOXgFkzcQmWvmpMpkL+ydOlXGVeSv3L3rEOcTIHcpRWIIMzDzRXJX733didrgcGjI0xenl7w934v471Fjd/aFHxRpPTifcehcP4Kyb9+GbNnYNXHtpo400nSL75B7S98ERE0vJLAYIDgjk0YG9q9SbHjenkWVfF6GoOG58UG2JNJpr/1HEo4RN2vfBmWmYDRmxqIffJxjLZmL3sjhCeWIkr3TUV4+56XSRS6jtHWjGxr9sS4pFfOKF3pLbi4LtbgKNOpjB8sllDiUU+1tlQiLaVEFk3yJ8/f9rbdmTSFi9fRm+rL31Ng8wbU2oRX5rwATjLN9Lefo/7Xv4rR7zqqBgABAABJREFU3rL0joTwemsVBaFpKOGgJ6jT3EBgQztTf/Ej7KGxRTehxqNEHjtEeP/O0vk1/5wrbbu0r/lo9bWo9bWl88s758rnW+lYTn/7x2s+WERC8Vofye+/SM2XP1kOGBdl3nFXdQ01Ekarr8HobMXoamPmuVdwppJ3euQ+Pj7riHvSs7jekKaNba4tmXyftYWVtXzLjHXObJYD1/V8FE0Lc2iM7Lsfkj91ATedWftZcwmZdz5EiceIf/IJlEgIoSgIVUWNhCESvvktUuJaFtbACMm/fpnCuctoiRjStMoqi1WjqijBYEUfXVWIUhCpCmYj1PnTexEKLjvLeT9jtDVhdLZVqN+afUPYI7cf3DiZLMVL14g+crBceSICOuF927H6h27OXOoaeksjkUcOEXloP2oi5l1LtoO07VIAdosdCbwgTvUUv8VsEBMwvGz4z3+WqT/9/uKBixAogcDKzzchSqebWnG+uap658uxbxMRMDA2dRJ/9lGCO7YgggHkrLCQ4yysgi7wgmhVAU3zvgZFQYmGiTx2CLdoknruFb8s1cfHp8zavhv6+KwzVENBj+iouorruFhZG7vgLzTcNWbVSi/3LP+9loWTK+CmMpiDo5g9/ViDo17fz0qGUjSxBkcR8zwLreExbyJ9J7EdUi+8jjU6TuzJh9CaG1DDQYRhwGxlhOMiLcsr8UxlKFy4Sua198t+ek4qQ+7YabTWRm/cY5NV9ZHJfAGzbwg3v7rtAfbY5KLblJaNPTxe8b2bAyMrElVxkimKV3u944X3Pa7257ldRMDASWfnPq+UZN/5YHU27riY/cPkjp/2sm8llEjYyxDPH0cwQPjwHhKf+xhaqWzVzRWwh8cwB4bnvrcbe3yFAE31ykQTcfTWBvTWJtTahNdbrKoENnUReXAfqRffWPDcmxVyKVyO3PL3K0Xa9uJZbAn2VLLifLMnpnFzyz9PZKFI8Vp/RcDrTM8sqmqqRMNEn3qIxGefQgSDICVuKo01e9wnk1456Y0Bo+Kpu4tQEK02gd7e7B33eNQL1g2DyOHdFC9eW5UstY+Pz/2BWGziIoRY6+voaxpVgw2bNVrbNWxbcvWixfjo2hTG8Lk9hCKIt0dpPdxM3ZYagokAVs4m2TPD0AejTF9N4toLiKsIqG9U2LRNJxAQjA479F61KPqtIz63iRIJE9jchdHZhlqX8PrNhYI0TZxkCmt0guL1fuzRyWVL7hsBOPJokEDQy8lkM5KL50ymJ1d2j1NUaOvQ6NqgoajQ32PTd932xRwXobZeYftunUhk8axrLic59k4Ba3GrxOWhqoQP76Hmy59Ab/EWFZx0hvTP3iHz+tFFS1ZvROgawb3bqfnqp9FbGr0Mo5Rkj55i6k+/72e55iF0ndgnHiP+6adQo2FP2Gh4jPRLb5M7frqqXs/ytkIBok89RM0XP44SLGlRSEnyey+Q+umbK14o8/HxWX9IKRdUmvMzi3eQrTt0/vbfj/PAo0EKBckPv5PlP/7fKQp5f/ZzvxFvj7L3V3ZS0xUnPZwhP11ANVQ6Hm6l9XAzJ79xltHTty4RS9Qo/NwvRvnKL0aIxBTOnzb5t//rDOdOmb5lls9t4WZz5E9dIH/qwqpvOxZX+J1/WUtTq/cYuXrJ4l//j9O8/9bKVjnaOzR+9b+O8cxnQmi64OhbBf7l70wzNeFfBP9/9v47TI70vM+F77di5zA5J+QMLLA5kbsMu0zLIAZRlKxgy7Zk+cif7XN07OPjY/tYn4NsSbYkK5iiKFoSRVHMYbnk5rwLYJHjDAaTc+rcXen8UY0GGpN6BjPAYFH3deHaRaO7uqq66q33eZ/n+f0WY8t2lX/2f8fp3LK0RVN/r8kvfWqM6VUG8guh1MQJ3r23JIQDkHn7JHM/eAFWKLLjGCbZo6fxbelErakCVQEhkCMh5KqoFyxeg9beRPCevSVLHzudJfncG6RefnvFCz5ONk/6lcME9m7Ht32T+6IQrhJ0wI/lBYseHh6sWL7AYyXc86CPA/fohMIS1TUy7/2gn6ZWLz5/N1K9vYpwQ5BTf32e137rMK//1yO89luHOfLHJ7AKFu2PtCz62dp6mfd/OEBdo0IwJHHwPh97D+poumcn4HHnsHWnygPv8RGvkgmHJR5+3M/m7ZX51HrcfNTGOrTOlpJ4jGOYpF49vOJA8VoK/cM415QOC1VdU4XwdwP61k7k6ioQAsdxsKZnyRw5ueJA8QqOYVK4zodV+PQN37Pp4eFx81jX0eAXfiVMQ5P7FamUzcvPZjn29srqYJpbZX7pH0dKf+/rMXnmexlGBjegP+N1hKNSacIvBCiqIBLxAoB3I4pPJj2eZeLsFEbGnSzZps1M7xyT52cINyzeU6Nqgkjs6rqNEBCJCuQVaot4rB26T/DQe308+Jiv7PVMyuG//8dZ8hW0JjW1yjzxVICW9qvDrONAz3mDv/zizVN1vl3wByUC15RTSgJiMW89cyku95h8+Q+TNDTLhMISwZAgGJZoblHYtF3F51un540QyNEwcjRceslKpjCnV2a/tByOY+NsUE/TW4IkFa1nrpaMmjNz2Ik1Hk8su8wn2MPD485mXYPFx54MsG2nCgKmJmwGL5srDhZj1TJPfeaq7P2RN/K89Wr+tggWJ8YsMmkHf8BVHEwnbUaHN/5+e6yc1HAaZ5dNqD5AeuxqyZQe0Yk0BZlYwmMxl7UZH7WorXejQ9NwGB6wKBTW/mFdVSPR2KyQSdsMD5oVBT13IqoKO/dqZWMPwNysxbf+Ok33ueXLs1raFT726SCtHVezY7bt8PqLOS9YXIDEjMXcjEW0GCAWCg4DfZ441FKMj1o8/e00qibQNIGqCVQN7nvYx9/736L4GtZpxUkSCE11xWiKLGgAv0LUhlpXpfPKNvOG5/t3DUKW3fN+RRnYcW64r1AoclkpMYCdyeIYXgmqh4eHy7oGi5LkihYI4WZJxB22SPzSj7Ns2a7y2BN+ZqZtvvQHScbHvGDxXYGAg7+0B8Xn+tPJmkSsK8qD//xupntmyc3kUfwK1VvjOJbDpWf7F93UyJDF3/5FilAoTDgm8ewPsmsvRgEEgoKPfDLIp74Q4tzpAn/wn+fou+RNxleCogi27lSXDRaFgOoamfpGr5SrUk4eK/DDb2X4+GeDSLLg619JcbnHuz6XwzDAMBwy6auB2sSYhWmsY2bIsq8Gh8UyVDkaRmirLxuWYxF8uzaD4t4zjuNgzSUwVyCU827HMU24YkdyxSsxFnFVjleZgVUbatG3dFz9DtvGGJ9albKrh4fHuxNvJrOOjI5Y/Nd/N8vv/ac5bNshm3awvVjxXYEQgmh7BMV/9RYy0gZm1kSP6Ohh1xC9kCzg2A6x9ghDb40uuK1sxuEH30jz/NMZhBDk8w753NpP9GrrZfbdrdHSrjA9aaGqXkl0pdi2gxBuyfDOvRo/+MbSghvBkKCtS0HVRNFX3rneF9zjOmambL78h0m++mcpBJDN2hS8pNKGxUqmMGeTKHG3TUT4dEIPHCTx9Isry3YpMkpVjOjH34/a0ojgSqCYJN/d52UWr8VxMCZnsLO5ktWGUltN4OAeMkdOrcgqRqgKSkMt8S88VVJCdRwHY2QcY2DEDUo9PDw88ILF9cVxA4Fsxqv9f7fh2A7P/atX12x7hgHGnMN6ur7XN8ps2e6JRayGsWGLqhoZVYOtOzRkeel5WTgq0blZRQg36zPYZ1JbJxMIeRHjUuRz67NQ4rH2GMPjFC71Ix/YiZAkhBBEnnwUx3HIvH0CO53ByRdcwRrboej+jpAlhKIgdBUpGETf0k740XtRWxrcbJkQYJrku/vIvHPmVh/mhiN//hLmwd2obU1u1VYsTOwTH0Dy6+TOdGNncjgFwz3vpQykcEtYFQWha8iREP7dWwm/936kWPiqSFG+QOadM+T7Bm/xUXp4eGwkvGDRw+MOQFGhqVWhoclTzVkN/ZdNAiEJ3SdRVSPR0KQwNLD4ynsoLNHe6Q6v46MWM1MW1bXeufd492COT5F55zRaWxNyTRwhBJKuEfvY44Tu2UfuYi/G6CR2MoVjmCAEQlWQgn7keBS1vsb9bDxa3oNnWeR7+kn+5FXsueStPcgNSP7SANnjZ1Fq4hDwI4RAra8h/rmPYgyOkr/UjzE+hZPO4JiWG5xrGlLIjxyPoTbWorU2IYWDrp8lgONg5wtkjp0h8+YxHK8E1cPD4xq8YNHD4w4gEpHYtlNFVrzM1moYHTLp3KziOOAPCDq3LBEsCojFJZrb3OF1qM8kn3M8dVuPdxe2Tfb4OeRImPB770OujrkZRllGba5Hba5f+SbzBXLnL5H44YvkL/Suw06/C7Aski+8ifD7CT1wFwR8pUBd39SGvqltRZtzbLc3NHv8LMnnXscYGlunHffw8LhduWOCRUWBphaFzi0qNXUywZBACMjnHRKzNgN9Jn2XTBKznkz3UigKtHQotHcqVNXIBIICSRLkcu557O81uNxjrlvprSRBe5dC1xaV6loZf8ANfnI5h7lZm/ERi75LBtOT9oqF+XSfoKVdoalFpqZOJhCUUFRwbCjkHVIpm9lp9zuGBkzSqdunXK6qVmb7Hq8EdbUkkw5TExY1dRKBgETXFpVXnlt49V1VobnN9cwEGOw38QcE0iqDRSEgGpdo71JoalEIRyV8foFRcEgl3evxco/J5Li1kpalhb9LgoZGmS3bVWobZPxBCcdySCUdRodNui8YzEzaJUu3VVq73XJ0n6ChSaalXaGmzh1HdF3g4N7rmZTtjiejFkMD1qqeC+GIoKlVob5RprrWHSsVVWBb7nMnOWczOW7Rd8lkYsy6USHRW4KdzpB66S2suQSBu/eib+1E8vuuZqwqwHEc7GQaY3iM3Nke0kdOYQ57ActSWLMJ5r7/nHveD+5GbWlAUlcmLuTYNtZsgkLvIJnj58idvoDliQl5eHgswLsqWNx9QONDHw8AMDlh892/STMx5k7wPvSJIHfdq9PaUQxyAm6wWCg4JBM2I4MWF88ZvPjjLEfeyK+ob6axWeZzvxBaVjBkdNjiz/9o5WU1jz/pZ+8hHVVx+6ROHSvwo+8sLbCxEJIEhx7Qec/7/aXXTh4r8MqzWZKJ5Y+3Y5PCEx8LsHO/RkurQqxKwheQkCS31yiVtBnqNzl/2uD5H2U5cTSPuUL17e27VD74VABdF4yNWDz97QxjI+4MuLFF5vEnA9zzoE57l0q8WkL3FYP+nPs7To7bDFw2+ePfqVzpU/cJdu/XeOgxH1t3atQ3ylRVuxNIWSkGiwVXbTBRnOCNDpmcPWlw5M0cPRfMiloNQ2HBY0/42b57+aDtr7+cWrVSqe6DmjqFxiaZhhaZ5laFrq0qm7ZenUw0tSr8wq+GmZtZehJ85kSBH38vSz4//wAfeI+Pu+/X0X0C24aeCwbf+mp6VZPe3fs1nngqwJVqtAtnDV54Jsvs9MaIRjTN9UfctFXFFxB0bFbcHqwFjtXnE2za5p5r03QYGjBpblWQpZVndaNxifsf8XHvQz46N7uBRzDsXvem4ZBOO0yNW/T1mhx5I8+Lz2RXHXhU1Ug8+gE/9z3kY9M2lepaCb9fwrYhnbKZGLPo7TZ4+dkcL/4ki+O4izQrJV4l8dRng9QtY+tgWfD7/2luVd+xGIGgYPcBjfsf8dG1RaWxRaGq2g2+Nc0NFo2CQybjBnNTExYjQxan3inw4+9nlr0eVRU6NqkcuFdn206V5jY3GK2qlvAFBIriBouFYqA/M2Uz2Gdy7HCep7+dYWZqY1zvK8HOZEm/cYxC3xBaVxt6RwtqQy1yPIoUCrhWD6rilpgaFo5hYGdzWHNJrNkE5tikK6oyPE5heAwMT1ilEuxEisQzr5Dv7kNrb0ZrbUSpq0aORZCCfjd4VGSwbRzDxDFM7HQGay6JOZPAHJ3AGBmnMDCCOTZ5qw/Hw8NjA/PuCRYFdG5W+OzPuybBs9M2b7+aQ5bh134jyn0P+4hVzZ+c+BWBPyBR16CwY6/G3rs0vv6VFE9/J1Nx5qi6VuJTPxPCH1jaG+TsycKqgsVASPCRTwWIxeWST9s7b+UZH11ZGkHVBJ/6fIj3fdgNqAsFh+nJBMvZKckyPP4hPx/7dJC9B3UCQTFv5VhVBaGwRH2jzO4DOnsPavzwmxm++/X0ijJwrZ0Kn/qZEMGQRM8Fg1PHCoyNWGzfrfL5Xwzz4Ht9ROPSvO8PBAWBoER9o3sd/I/fqmyFNBKVePLjAT722SAdXQo+/wK/oQyKKggEoaZOpmuLiuM43P+oTWOLzO/+ZmXf5Q8IHniPn/d/JLDse1/8cXZVwWLHZoWPfzbIjj0akahEJCYRjUn4/FKZGmdNncwTTwWX3d4Pv5XmhWey5BcQJNR1wfs+HKCpVcFxHE4fL3D49TwDl1e+309+IsBnfi6EJAkMw+Frf57ime+ufEFkvfD5JM6fKfDYk378AUFDk0I0Ji0YbPv8EpuLweLstM3YsEVzq7KizKIQ0Nap8PlfCnP/Iz7qm2SU60qIFUXg87sWHZu3q+w/pHPofp0/+d05es6bKwoY27sUPvN3Qjz2hJ+aWhlJLv8u3SdTVSOzZYfK7gM623ap/M1XUiQTq8m4SXzwYwG27lx60cQwHP7kdxNrFiy2tMt88vMhHniPj9b2Re513PPqD7jntWOTim07tHUo/GiZ6zESk/jIJwO878MBWjoUYnEJWZ6/QCDL7lgcDLnj1fbdGnfdq7Ntl8af/l6C/t7bMFhyHIzhcYyRCbInziFHQkgBP0JXEbKCkCQcHNdyw7JxDAMnm8PO5rFSaVfx9HZMrd5qTJP8hV7yPf3IkRByOIjw+9wAXZHd8247YFs4po1TKGDn8tiZnNtLeoMejR4eHncG755g8ToiMUHHJpXP/UKY937Qj+5zH9pGwS1XTKds/H6JqlqpNAnTNMHm7So/8/fCzEzbvPjj7A2Xda0Frz6f4+f+vk00JiFJgtZOhd37NZ57Orui7dTUyhx6QC/9fbDP5OypArns4g9pRYEnPxHkZ385TMcmpTT5cRw30zYzZeM4DrG4TDDslqTqumtoXlsvo/sEf/sXKVLJlU8EfD5BvEpi0zaVn/+HER5+3Fc2wbNtB9tm3iT6whmD6anlfzifT/D4h/z84q9FqK4pD0DTKZupSRvLdPAHBNGYVLYYIIQgEBQMD26AC+Qaqqol7rpXZ9c+ffk33yBXAsOGJje4aGxWuOdBfcXBYigsuPchXymYHRu2OHk0X+Ybd6vRdPe6Mo2ibUpMorlNXjBY1H2ilMUdH7UYG7FQNUpZ00poaVf4x/9nlHsf8pVdd5blMD1pk07aBMOCWJWMqrr3XW29zKPv91NdI/Pv/vdp+ioMOhqaZT73C2E+/MlAqXQW3PtrbtYmmXDw+wTRuISmC1raFD7x0yE0TZCc2/iZMCGgc4vKP/ynEe550EcoPP+HcBx3THMc5gV4lgnnTxeWDYxtyyEck9h7UC9bmHEcsEyHqSmLXMZBVQXx6vLxJF4t8f4P+7Fth9/997PMzW6ca39FOA52IoWdSN3qPbmzsCysmTmvjNTDw2NdeNcGi5Ik+Af/NFKcTMFQv8n3v5Hm1edzTIxZ2LY7eaupk/jop0N87NNBdJ876WrtUHjyEwG6zxsVrfJePG/wD356gliVVMrmRGISO4orxgtNTlbC9KTN6y/maOsIoajQ2KRw4B6dV57PUVigPHAxHnn/1YmS4zicPVng3KnFnd+FgEfe5+cLfy9M5yYFSXY9AE8cyfONv0xx7pRBLuvgAJoq2LJD5bN/J8SBe3VUVVDXIPOZnwsxOWHxo29nVmzb5PMLtu3SOHifj0fe50eS4MKZAs/9MMuRN3NMTrjBXCjs9nPtP6Rz38M+Xnk+i1FY/rw0tcr8/D+MUFNUqSzkbV57Mcf3/zbDhTMF8gXAcfu4fD5BY4vC7v0qh+73sW2Xxty0xbM/qDz7NT1l83v/aZa//YsUkahENO7+aWxWuO9hX0kQ5UaYGLN57uksZ0+W/65V1TIPPuZH191Z7NSExdE3c8wt04t1+piBscglkkzYvPiTLDv3aYTCgliVxD0P+njmu5mKypqvcN8jvuJvIHAch0sXDY4dXvy6vBWommCw32Rm2ipla9s7Vc4cL1+ZFwKaWmTi1RKOA6PDJmMjJorilktXkjyJRCV+7TeiPPgeP6omsG2HiVGLH303w3NPZ5kYdXsTZdn1znz8Q34+8JEAtQ1u4LjnLo1/9BtR/tWvTy+5EARutvuxJ/xlgaJpOhw/nOd//c8UF04XsGyQhFtB8dBjfj7yU0Eam2We+lyQ1cgljQyZ/Ktfn6KmTiYal4nG3XGzc7PC3Q/41lw1tqZO5tf+jyj3P+JD1dw9tkyH2RmbV57P8ubLeXq7DdIpGyHc67i9uCB38H6dSFTmh9/K4CwTF6dTDsfeytN3yaCxWWFk0C0NPvxGjovnDDIpd3FLCNda5d6HdD71+RBtXYq7yOaDex/y8ej7A3znb9Jreg7uNIQkE92yj/oHnlzw3wuJKXr/9g9v8l6tPXp1A+0f+yUEkLx8jtHXfoCdX9ki8vII/LXN1D/0YSRFYer4q8xdPO5lgm8Bsh6g8dGn0KsbSFw8zsTRF27fxvHbGEnVqTnwKOHNu8lPDDP8wjewF5sovUt41waL4PrKOQ6cPm7w//7GNL0XjXmZwrERi0sXZxnsM/iVfxYrBYz3PuTjB1szDPaZy96L+azbR3jFIgrhtjM9/iE/m7aqNxwsAvzwWxk+9pkgYVWgqLB9j8qW7Qqnj1dWRqKq8P6PBEqKjNOTNscP55maWPzgNm9T+cRPh9i0RUFIrqDGN/8qxe//R7eP6PrzMjxocuSNHL/+L+N85KcCKIqgvskt/errMTl1bGU3Uygi8eFPBQkEBamkzV9/OcW3vppidtoV2Lj6rLK4eNbguR9m8fkFtsOypbWKCnfd66O5zT0htu3w3a9n+OJ/TzA+unDP18Blk8Ov5fjzP0rS1KLQ0CwzPVn5QG2ZMNhnMdRvla4RIdz+wdp6aU2CxcE+k6/8UXKeAfyu/RoH7/eVgsXhAZMv/UGSnvNLn6hiBdOi/OT7GT79syFCxazypm0qB+7ReeknlUmvyzI89kQAf7GHeHbG5p238kyssMR6vZFl9zycPVmgvUslEpdo3zRfUEJWYMceDUkSWJbDyJDFxJhVHBvcYHg5PvJTQd7zAT+y7G7jzIkCf/RfExx+PTfvuh4dtjh7qsCJowX+wT+J0rlFQZbhngd9fPrnQvyvP04uOqcTArbuUPnkT4cIBN3rwjQcfvS9DP/tN2eZmigXiRobsTh/2uC1F3L8i9+Ms2WHirSKPkzDgO7zJj0XzLLxcv/dOi3typoGi6oGn/+lEA+911cqrc1kbF58JsuX/zDJ5R4Dyyyfbw32wZnjbl+4okLXFpVzp5YfZx0Hzp82+KPfnsMoOLzzVoFU0saymRdojo+6/Z8njxb4P38zzpbt7rmsa5C55yGdZ76XWTbQ35BIMrKqIVQNIcmlag3HcXBsC8c0sI286wG43giBkBX3v5KEkBUkRSuWZm6s8WW1CFlBi1QhhEAJhFYkLFT5d8hENu8h1LYVgEJilvRwL2bq9s1iCkVF8YcQkoRtGpjZ9NIPOtwAQQmEQAjsQh4zc/NtXYKtmwl37kT2BQCHxKXT5Kc9Maibja+2mcimXfhqm9FjtcyceYv00KXVbaw4Tjm2vew1eCt5VweLQgimJy1++9/N0H1u8Yd9NuPwk+9nufsBHw895oq/BENu+eNbr+Yq7rlzS5mu/t2y1s5ivftcgXMnC9z9oKs0t2mLys69GmdPGRVdX3sP6rR1KKUJ6+WepbM3uk9w3yM+Dt6vI4oTwiNv5vjj306QWUTp1HEgmXD44n+fY+tOhZ17dYQQ7Nqnse+QTvd5Y0UTIF0X1DfKzM5YfPkPE3zzr9KLlibatvun0nJXWRa0dymlh2s66WZMr4jpLHZ8luX+6btkrlqAxnEA5+q1YVnzA+/VcmUfr+f6rK5bGjf/9ZUyNWHz6nNZWtvDJS/Hg/f5ePOVHPkK4sXOLSpbd6ooqntdjgxavPHyxvP4uhIUnTlR4ImnggQCEk0trgjStcq/iizYUVSdTc65gk/LLVxcS1WNxOd+PlQqWR0dsvjqn6Z44+XcokGfacALP8rS3qnws78cJhqXCYbg8ScD/OjbmUV7m/0BwaH7dTq3XA16z58x+PIfJJkcX/iCvCKw9Sf/LcG//s9VhCOrn5zOHy+dNU9WtLQpPPXZYClQzOUcnv5Whi/+XoLRocXv9SvjiWnCmROV/4CzMzbPfLeyzI5twcl3Cnz7r9P86j+PEgxdLSduapW5dOH26V0UkowSihFoaCPUuhl/fStKMIKs+wAJ28hhJOfITY6QHuwmM3KZ/Ozk/Ch6jXBsi2TvWfKzE8i6H1kP4K9rJrb9IGooui7f+a7FcbDyGZyiWp2VT+NYt8+1uRCBxg6a3vMJtGg16aFLDD//txRmlxb5CXftovnxTyMpKonuk/T/4Ms3aW+vYhVy2EYBSdOxshls892dzdqo2GYBq5AH28bKZdz/XyVatIZw+1ayE8NkhjeuXdCNp7w2OC/+OMuZk8vfULMzNm+9Wj5JbWlTStYMtxrLgme+d7UUKhqX2blPo7pm+Z9QCHjPB/wEgu578zmH82cM+noWnwQ1tcrc/YBeykRlMzZf+3KaZHL5h/v0lM3T386WJn6qKrj7AZ3aupVnDCzL4Y2X8jz/dHZNe9iEcLMOV18AWREr6ivzcHnmexnSafe60HXB9t0qnZsrk3G//xEf8Wr3pBsFuHC2QM+FjSu6cPakgeO41091rUx9Y/k1raiwZYd77NNTbrC4Eh57IkBVsX/WNByOHc7zxiuLB4pXsG13rBsetIr751pD3PPg4r2r0bjEfY/4Sn+3TIeffD/D8ODy+/zaCzl6uzfu73SFJz8RLJXXupm/At/9enrJQPFm88qzWbKZq4FyIOiWOd8uSLqfcNcumh59ipYPfo6qPffhr2tBDUYQsoqQZRR/CH9dM/Gdh2h6/Keou/f9SMrKrB5WipXPkB3tJ9V3nrkL75C8dAYrt3FEs24XHNsi0XOKqROvMnXiNebOvYOVvb3LpEUxmyMp7vU5rxRng5Id7mX6xKvMnH6L6ROvYiRmbvUu3ZHkp0aZOf0mM2feYvLIc+SmRla9rcjmPdTd/yTh9u1ruIdrz7s6s2hZDs89na3IviGfcxgesLAspyRwEIlK88RTbhW2DUfeyDM+ZlLf6P5su/bpdG5WmRhbelWjrkFm70ENrThvnBh3lWIXzSoJaG5VykRSus8bdJ8vVJTFzGUdzp8ukE7ZpRLcLTtUolUSA33Lf/5arpQljqzx5M6yHEaHr24zGBIcvE/n6Jt5BvtWpiR5p3PxvMGZ4wb3P+oGTpu2qezap3Px7Pyy72uJRCX2HtQIF6+RxJzNSz/JspEXrQcuGyTnbCIxieoaiYZmhcs9V3c4Xi3T0OSeh+lJa0XBoizDQ4/50IoLNIk5m9PHChXbh/RdMhkdMtm6U0WWBeGI2/P7vb9deIIcq5LYdo2Ny8S4xbnThYo8Uo2Cw5sv59h71/oLKa0WVYP7H9FLpffZrM3h1/IVlZTeTEaGrOI5dwCBqrk90rcDsj9EbNsBqvc/jBatBsDMpMhOjmAkZ7ENV+VU1nwooSh6vA7Z5yc3Ner+m8dtQWFuitGXv3urd+OOxzYNJg4/d6t3447HsUxmzx1h9tyRG9uQkAg0diDJa9unvx68q4PF6UmbvktGRRP/K55hhYKD3+8+qHX/6o2014OpSYvXXsjxiZ8OAdDarrB1p8aJo0srmh66X6e+0S25tCyHgV6D40eWKEHVBc1tCtH41dXtc6cKK7LASCZcX7YrwWJtnUx1jYwkrawfe3TIpOd8Yc2DN9N0y+mSCZtwxFWZffhxP0K4fXhvv7ax1Dg3MmYBnv52mvse9iEkiMVl9hzQePlZeUl7l+17VNo7VWTFFXEZ6jc5+ubGLqvJZR16LhgcuEenqvZqYHiFLdtV10vPdpiasMoWJJajpk6mqVUplbzOTNv0XKw8sLEsGB6yMAoOsl+g6a4pvM8v5o0PsuwuCAWDV+/x/ktmxT24jsM8EaWNRnOrQk3t1b65iVGLMycKKxIFuxlc8bEE91qSJYG8QRYpl0IoGtFNe6g58ChaJA5CkBq4yOy5o2TH+ikkZoqiD26wqIai6NUN6FX1zJ4/eqt338PDw+OWooZj6NFqV0Vxg7Px9/AGGBowVzQxcGwH+5pEwEarTsimHV5+Nksu607oNF1w1z06tfWLR7S6T3Dofl8p8MukHQ6/nl/SjD0QFHRsUsqOfXjAIr8CvzOj4JRJzcuKqzIor3B5Ym7GDTrXGsd2TdafezpTCkQjUYkPfCTAr/1GjP/j38Z5/0f8VFW/q2+RNcG24djhPP29bmAjBOw9qNG5efEfW5Jg30G9FGyZBrz2Yo7EMuqstxrDoKQgHI1KNDTLKNcc5rbdKkJy+6CH+s2KsnRX6NysFD1M3b9nUjbjwytLsyZm7FLFgCQJAgGxoMCWLEN7V3kZ4PiYRapC30THgcH+hYWgNgqbt6mlLC24i4dXrtGNhmVt4BO5CIGGVqr23I9aDBQTl84w9toPmDnzFrnJEexCzh1oHQcrnyU3NcrchWNMHn3BK59bLzbyDenh4VFGoL6tKFa08XlXZxZnZ+wN4ZO4VlgW9HabnD3pZjYA9h3SaG6VFy2d3LxNYdM2BVUVOA4kZl3/yKXQdDFPkfCpzwS5/1FfxWJN/oDrc3ktobCELAmMFcj+5LLOijKaK2FuxuZrX04Rjck89JgPRREoqqBzs0prh8Jd97qegUffzvPiM1kuXVi6rPJOZnrS5oUfZ/k7xd+8qVjGfPKdwoIZ2vommW271JIKZyZj85Pvb/x+ItNwSsGiogoaGl3rhyuqwtt3aQgBqaRdVp5aCTV1csnaAaBjk8q/+k9VrKR3vqlVxue/ug1VE/iD81e8JMn1ML2WuVl7RQJUqYRNoeCU+po3GtV1clmGLpmwFxXuWS9CYdcXt6NLpb5JJhyRCIYkfH7X11fVBJomaO9c3/69tUb2BQl37MBX04gQgtzEMJNHniMz2r9swGIvc0ELWSHYuoVgYwdatBpJ1bAtEyMxTWbkMsm+Czg3S9hDkgh37KR634MAzJx6k8SlU0sKvNTd9wECjR3YhsH4Gz8iNzkMgBqOU7X3fvx1LYy+/D3y02NEtx4g3OH2KqWHepjrOYmVSSEkicimPYS7diEpGtmJQeYuHqcwM7Ho97o+oTayP0iwZTPB5i5XzMcBIzlLeqib9GAP1jLWGkJWqN7/cEn99HoS3SeYPv3mikqEhKISbOzA19CGHq1G9gddVVrTxEglyE0Mkew7i5m++Qqja4Gk+Wh46MOo4TiJ7hPMnH4Loaj4a5sJtW1Fi9Ui6z5sy6AwM0l6sJv00KWlhYKERGTTLqr2PLDgP+cmhxl77YdLbkP2BYnvPESofTs4DhNv/4T0cO+y96ik6jQ//mlkf5DC3BTTp94gNz64yHs1/HUtBFs2o8VqkHU/jmVSSEyTHrpEeqB72ZJzSfMR33GQcNduMsO9TJ98HTOTdMeCls2EWjejhuMIRcUu5NyxYLSfVP9FHGvxBUChqIRatxBobEcNV7mCWwJso4CZTpKfHiczcpnc5AhLyVH6ahppePhjC/6bYxoMPvNXy95XSBJ6tBpfbQt6vBYtXou/thnFHwRJIrb9LvwNbQt+NNFzkumTb5QEwZRghKrd9xFo6gTHZuSV75KfHF36+3HHoMZHnkLSdHJTI0yffIPCzPiyn4N3ebCYy9jvOguayXGLV5/Psf9uzTUHj7sm7KeOF0gt4G23/x6d5jY3S2iZDiffydO/jGm6olBmzg3QsVmlo0LRksXQdLHibLtpgWGsT7Bo23DxrMHv/PtZLpwJ8LHPBKlrkBHCVUttanXtMXbt1/jQxwOcOFrg23+d4vTxwoom8HcC2YzDay/keOqzQWJx1+/vnod0nn8mQ+/F+dfb9l0am7aqJaXdY2/nGVyhGMytwDThUrdJNmvj90vUNynU1slMTdj4fO4CiRCuEupKBWCCYQnlmjWacFTirnt9i3+gAiTZFZi6HiHNv8fzOQfDrPxes22HfNZG1zdQrf41hEJSSbDKcaCQd8ik1/+BoGqwc6/G+z4UYP/dOrG4hO53g0JZdscWSXJ/AyEo7eN62B6sF1qsmnDnToQs41gW06feIDM2cMOZLb2qjvr7n3T7eDQdSVaL5T0OtmkS236I7NgAY2/8kNzE8NoczBIIIaGFY4TbtwGQHriIENKSy51ugLANu5Bj6tjLpdevTKrD7duYPXuEYHMXtXc/juJ320pCbVtRQzEmj71MbPtd1Ox/GCUURQiJUNsWfNUNjL/xDPnFJne2jb+mmar9DxFs7kTW/K54CwLHMolu3Ud6sIeJI8+Tmxha4pgFvuoGQq1buGqkKkrXZ35q1FVVr+gESsR33k18591okSokTUfICkKS3W07Do5lYRsFqvbcx8SRF0h0n6hkyxsKIckEGjrw1TRg5TIke89Svf8holsPuBYdioKQJHCuXMd3kew9y8Th5zCSC2fZhRBo4fi83+HKv1UizGMXcjiOQ7C5CyEr5KZGyE2OLBvY+BtaiWzeg5AVkpfPYqYTC+0helUttXe/j2DLJvd6UxSEkAAHxzKJbTtAZmyAySMvLKn0KWQZPV5PuH0bApg9/w6y49D4yMcItW5G0vxIRRscHBvbMokk57j0N7+HtUiw6KtuoO6BJwnUtyJpPve6E1L5dWcaWPksqf4LjLz47UUDT1kPuL+De9hc+ztYhZx7PS+D4gtStfdBolv3u8JKilr2OTVShRqpWvCz+emx4rG7f7dyGYQkE2zqRCgq0dF+JmYml158kCSCLZuJbNoNQmAkZ7BylQtVbfhg8UYen5bJ2nlXbBAyaYcT7+QZ6LNKVhiPvN/P97+RIZUov1DqGmT2HtBLynr5vMMPv5VZNjsoy6IsOwGuUfeNqpw79ip+jHX+/SzL9U/80u8n+MkPsjz58QCPPeGntt7N0EiSIBQWBEOC5laFR9/v47UXcnzlj5N0nzcqEk+6E3Ac6O81ee2FHE9+PIAQgr0HdTZvV+nvNctEa/wBwa79Gs2t7vBjWQ4/+EZmQwvbXEti1uZyt8mOPRqNLQq1DTLnThts2nY1Uzo7s/LMot8vShYP4AZjN3pOlvq8dp2Iimk4K7J5cmx3TNmo+IPl6sbmGljFLIUku56Mn/+FEA+/z084InFF8NMuLnpZlnvOHNspWYc4DkRjEpLs3B4BoyShx2rRq+oAyIwNkB65XLJWWBVCEGzuovGRj+OrbsBxHKxcmnxqHCuXQdZ01HAc2R8k3LkdLVbNyIvfJjVw4TYsvRSE2rYSaOrEzKYozE3iq25E9geJ7TiEUBRCrVtxHIfM0CW0eC1qKEa4cyfZ0QHysxMLHrNeXU/tve8j0NiBVciRnRjCyudQg2G0SBVKIEx06z5kX4Cx135AdpFMkW2ZbtB26TSyz4/iDxFoaHcnmSvFsQk0deKvb8WxbRzTwEwnMVJz2JaBEgihhmIo/iB+fzv19z/h2p5cOr3y79oICIlAQxs1dz1K9b6HcGwLIz2HkZwFQItWowTDqOE48Z13AzD2xtMLqss6tsVc90kKiWlkPYDs86PFaonvOIQok3JfHMe2yI4PkpscIdDQRrhzJzOn3lw2WIxu2Y+QZKx8hszwpQWDRV9dCy3v/wy+qgYcx7WQMGbGMLNpZE13s4y+IJHOnWjhOONvPkPi0pll7XJkfxAtEqd6/8cItmzGsUysfAbDKCBkxfVxVVTy02OLBkd6dQNNj3+aQEMbjm1jZtMYqRmsbBYhSaihCLI/hKSoKIEQjmkumaHMTQ7T990/RfYVf4dwFZHNe9AWCe4WwjYNsqP9rp9ikUBDG/76VoQkkx0bcLO+C5AZ6ik7b45lkhq4SLhzB77aZmI7DjJ1/FWsbGrR75cUlejW/QhJwkjNkRm5vCJV43UNFq8t2RMSq7IlUK5bFbdtpyJj63cz/ZcMDr+eo7U9iBCCzds0du7VGOwzy875zn0aW3aopQnIUL/J4deWT4nZtoNRKD/HR97MMzp4Yyqh3ecMzBVkLm4mhYLbw/h7/3GOv/xiksef9PO+DwdoaVeIVcn4fAJFhUhU5omnghy6z8d/+tczvPjj7LpOQG8npibcrPej7/cTDAl0XfDYBwMcfSNfKtME6OhS2LNfK5UI9vWavPN2/raZ82XSNhfOGOzYo1HXIJey0dt3uz1yhTz09ZgrFkgqFBzsaxZUJsddz8kb8ekd7DNJzi38cC5c14O8YusYsbGzYYXcVTsKIUBW3F7N9SgllyTYsVvjn/xfsVKLALjlyJPjFpd7DC6cMRgetJiZcntDMxmHXM4hl3X4o6/W0tq+4dduAZBVH77a5mIGAbLjA6XJ8GrR47XU3/cEvtpGbKPA7LmjTL7zYlnZpRqOUbX3Aap234deVU/Dgx9m8Nn0ouVxG5n4zruZOvEqIy99GxBU7bqX+oc+7E6S9z1EZugS/d//MoXEFMGmTlo/9LOowSi+mkaUQHjBybu/thkzk2L6xKtMHX+tlLESkkyofRt1974ff10r4fZt5KfHKCRnF55cOg75qRHyV+wAhERs24HVBYvA7Om3UAIhUn3nSQ1cID89UTbxvVLiF2rbih6vI7plP+nB7mXLlTciQgj0WC01Bx4hOzbI5NEXSF4+V/JDlFSd6v0PUXvoMWTdT6hjO6nBbhIXjy+4PSM5U5Z51KsbiG7eg1RhsAiQnxwhO9aPv64FX1U9/oY28nOTi5YRy/6Qm0kXAiMxS7Lv/ALvCdL0yMfw1TRh5dLMnjvK1PFXyrwq1XCc2rsfJ7b9IP66Fqr3P0whMUtuYun7VQlEqLv/SbRInOSl00wdf5Xs+IAbGAoJNRwj1LIJI+kuOCxEbPtBfDVN4MDMmbcYf+MZzEx5ibMSjBJs6iTY3MXshaUFt6x8lmTvmavHFonjq21aWbBYyLnCXteIe9Xe/Th6dQOSAqn+C4y9/sOKt5cZ7SM7Pohe3YAWrnIrFpZQZ1XDcUKtm3Ech9zUKOnhyxV/F6xzsHhtyY+qinkr2ZVwvelzIe9gbGwRvnVnasLm5NEC73syQCTmCmK878MBXvzxVS9Cn0+wY7dGU8vVn/jZH2QoFJafwJqGO8m5lu/+TZpnvnv7ZH9uhOlJm7/5SprvfyPD3Q/4eOgxH3sOaDS3KSWvyuo6if/fv4oxPeVae3i4k/Ce8wanjxe450G3fPLuB3QamxWmJ11FW0mCrq0qm7e7KRfHgWe/n7mtlGczaYeeCwUcJ4iuCxpbFIIhwebtKpomyGZtLpxdeZYllbDL7q/LPSa/9W9mSSfX/tw4NiVvzCv4fKJoFVTZ9wkhNowP7UKkkuVtCJrm7m9qHc5nJCrx+V8MlQWKI0MmP/5elh98I033BWPJBfUbWRC42QhFQQ3HALdPzkjMYC/Xr7PU9iSZ2La78NU2AYLk5XOMvvydopLqVYzkLOOvP40kK1TvfwS9uo6qXfcwMjOOc5tNCmzTZPrkGzjFlcbMWD/5qVECDe0IITF95i0KyWlwHAqJGbKjA6iboiiBELLuXzBYtC2TuYvHmTz6ImbmahDo2BbJy+dACJoe/ThatJrIpj3M9ZwkM7R4JmKtSA/3kvneny2aBcpNjjD66g/oamx3VXPDMbRIVbGP7PbDAfKzk4y9+QypvnNl/2YbeaZPvIYer3NLc8NxfFX1JCUZZ50GASufJTPWT7hrN1o4RmTzXhLdJ7HthectkY7tyL4Ajm2VylavJ7p1P/6GNhzTYO7iCcbf+NG8bKWRnGH8zWeQfX5iWw8QaGgn1LKJ/PTokuWSaiiC4g8ydfJ1xl79fnm/o2NjJKaZOTO95DGXep2NQqn/8XrM9BxzF48xd/HYktvaqDimQar/glu+Ho4T3XqA2QvHFn2YRLp2I2QFxyyQmxgqC+wrYV2lHq8VJtF1QTgsrUhdVAjmKX3mcs6Gkz6/2bi9dgUunL36gLzr3nJV1KZWhe271ZJgRjJh88pzuYp6OAsFh5mp8jdWVUsL9j69m8mkHV78cZbf+jez/Mf/e4bvfC3N6JCJbbvlYjX1Mp/7+dCGnjDfbIYGTI68kS+VJ8arZe57xIdaLMeLxiV27tWIVbnX6sy0xZuv5FaktHuryeccBi6b5HLuPdLSplDXINO5SUVRXVGmi+dWPnmdnrLL+nN9PkFsnczZbceZ598YiUrzys+XQvfNL1ffSMxM2VjXVDIEQ/OFu9YCIaBzs8p7n7iqajczbfHXf5bii/99jovnlg4UgTJF3Y2OkCTkK6a9jo1VyN3QRFeNVOFvaEPWfTiWydSxl+cFildwbJup469hZlNIioa/vg1/TeOqv/tWYaRnyyawVi6LkZpz/y2TpDA3Xcr8OJZRCg4lTV80q2Sm5kgPXSoLFEs4NtmxAVIDFwHQInFXnGil8uSrwlm6lwoozE6UJq+ypiP7gjdhv9YHxzJJD10qnevrsYw8yctnAfdeUgJhJP3GetOXIzva75ZtFvsXlVB0wfcJSSbUuQNJ0bDzOZK9Z+dlIIWsEN2yDyHLGOkEcxeOLVrWamZTJHpcQShJ1fA3tKEEI8vub256rDgOrG4h3rFMcGyEJOGvb2VDeeCtIenBHreH2XHw17fiq2lY8H1CUYl07QTASM2RGuhethz4etY1WJwYuyqtrmqCmjqZUHhlk4tN28pFVZJzdtGT6s6m75LJmeNXPcMiUYl7H7w64LR1KmzZcfXcHX0rz9BgZQ/0TNqhr6e85LS9Sy35T95p5HMO77xV4I9/N8HX/jxV8qJTFDeb1N51G8301plM2uH0sQKDfVcnB4894cdfzMg2NMnsu/tq9uXom3mGBza2BcP1OI6bfR4p3k/NbQrbdmnEq93FsHTKWbG4DUBvt0EmfbV0MhSRaG5bn2vLMplnI1HbIBOKVP5IaGiSkeWNOyZc6jYoXBNzVNXI61LqKcmuKrV+TeXMqXcKvPJ8tqIsZiAo0HSJG+vQv4kICSEXKwMs64bTonpVHWo4DggKc9Pkp8aWfL+RniM7NgAUfcqqb79g0Uwny3qXHMssBchWJlmm9upaehVtiSR5UU82I52gMLd4tsDMpMhNjWFbJgiBv7ppReWM64rjYBbFNoQkF4V5bk/sQt4Vc1nsvrBtjHSi1E4lqdq6B+2F2SlyE0M4ZgFZ9xNu27bg+/SqenzVTSBJGKlZ0oPd896jRWvQItWAwMymFu19BcC2MVMJrFy2+NkqlAqsIlJ95xbMBlZKZqTPFYGRFWr2P0L1vgfx1bUglNtLdXo5zEySVP9FbCOPrOtEt+xf8H3+uha0eK1bYj4zQXasf8Xfta5XaM/5q5MRIVwT+eZWhXOnK5tIabpg38GrE0vDcBgfsUgs0oNzJ5FJO5w6VmB0xKStw70BHv2Aj699JUUwJNiyQ6Wmzh1wLcvhhaezZCtUAsznHPp7DRJzFtGYu419BzUiMYmZ6Tv33M/N2Hz362keeI+P6hoJIbmZleZWhXOnNr7STVlAJli3uemFswVOHyvQudk1mO/corJlu8qxt/N0bFLpLNprFPIOb7yYY2b6NqrBKzI3a9Pfa9K1RaW5TWb/3TrBkIRtu32CidmVR79jwxYjQybtXQqyLKiuldixR+Ot1/JrLvRkWa5PYiZtl0qr2zsVqqoleir4vCTBtl0bZKK5CH2XTGZnLGrqJIQQ1DXIbN+j8cbLuTXtM5YE84L6/l6TidHKruvOLSqqtrE8fZfEsa9miqRVihFcgxqMlCaQ+emx5bOUjkN+ahS6diH7Aq49xG2GXciXD8hXlI5wM09OWTbn6r8hxKJ9wnY+h7mEwAWOjZVNYuezSIEwajh2kzKLLpLux1fdgBqJo/hCbpZUURGyjKRq6PG6a959u9wM87FNg/xyJX627f6R3eB/vXu/HdsiPXSJyKbdaLFaIpt3M3XilXlCSaH2ba7gi22RGuxeMGDT4zVIxVIILRyj4cEPL/ndSjCMKJYWybofoSz/3MhPj9+QYFai5xS+mkbiOw+hVzdQd+8HyE0OkxsfJDPSR3q4t2jTchutUi9CoucU8V33oMdrCbVsZjoUw0jNlr0nsmk3kqJhFXKkB7uxciu3KVvXkeLsyQK2ffVZsnmHyo69mqsiWcHD+tD9Oi3XrARPT1oM9pueoEiRU8cK9F40aW135fo3bddoaXdX+3cf0Eqr/pe7Tc6eLGBUeO+5htsmp48VeOA9fsDNLB56QGdowLyjFUCnJ22Scza2AzJF6fvbYBHUtsrLt30+V8Z/PZiesjlxNM/9j/qorZdRFXjoMT/d5w323qWXShd7LhhcOGvcljYkidkrBu+u6uX9j/qIVUlYFiUfxpVimvDyT7LcdY+OP+CW7e+/W+e5pzMMXF77gHp2yuL8GYMDxUxvbYPrfXnqWIFsZhkfLgnue1hf8j23mlzW4e3X8nRuVot2QIJD9+u88py65os715fo53NOxePto+/z31ZVG47tlMrDhCQjKcVId5XlAZKql1b8zWwaZ7nyKMcpBUVCkpE0n5ttu1G57puIs4RUu2Pby5+DBbAts5SBXPQ9hoFdvDAl3VcSKVpPJM1HbPtdhDt3ogajyD5/KZvmZkqFaytxGweIZRSVQVfG+h97ZuQyhdlJtGgNenUDvpqmMgsV2Rcg0NiBrPuxzQJzFxYW3ZH9IZBkhBCooVjJg7QS3N98+WvOymdWdQ9cwUzPMXH4OQqzE8R33etawbRsItDQTrhrN4VZ1+ty9sIxjMTS/Y8bncLcJOnBHvRoDWokTqhtKzNn3ir9uxKMEGxyrVOs5EyZUM9KWNeRYuCyycVrhB6iMYkPfiwwr7R0IapqJH76F8MlKXqA3osmZ07cXo3s68nEmMXpYwWSCfemCgYFdz/go65BZtfeq6s3b7ycY2JsZZPNwX6L11/Kkc2421Y1wc/+cuS2M49ea6JxiUjsqn+bYbgZx42OYVCmitnQJBOJrs/t79iub+LlK6WYAu55yPWb23vo6nV55I3bw1txIZJJm4HLJobhIEmCxmbXasUyHc6eXH0g8pPvZxkftXAcB0kW7L9b5wMfDZaNg2vF3KzNGy/lSn9XFMEHPhqgsWX5VYS9B3V27t3YmUWA7309XeqHFUKwe7/Ghz8RpLp27a59h/mCYJGoRKCCXuade1UeftyHpt8+E2XHMjGKPXRXJoyydgM9V9dmyyqYIDpQyryJK5/dSGnZG92XVdfkOxV81uFKkFrynFtH5ECYxkc/Tt29HyDcsQNfTSMgyI72M3f+HSaPvczEWz9h/PUfUZibWt+dmcfV8yAqOBHutVb+2QW36jjrJlZzI1i5DOmhHuxCDlnT56nb+uta0GO1CEkiN7mwsA1Q8gZ0HAczmyYzNlDxn9zkCHYht+B2r2UtHA+MxDTTJ19n4Om/YOSlb5MZ7gMEeqyGUPs2ag69l7YP/RzRrftv+LtuKY7D7PmjrhWNL0iofVuZtUqwZZMrSObYZEb7yc+u7j5b18xiOm3zva+n2bJDRVFcz7r9d+v849+I8se/k+DCGaMoF+++X5JcefOWNoVf/vUoB+7RcH1MHRKzNm+/nqPv0gabXBafU6U/XP1/RS1/bggBml4cz6/x2Lr2z0qwbTcQfOxDfsIRV7b/0ff7eeetPLG4OxmambZ4+7Ucc7MrC2gKeddk/a57dB55vx9ZFrS0yvzb367it/6fWTdTabq+bNfut5BAltzqCk0XtG9S2XdQ461X82ULB7caf0DwS/8owqsv5Lh4tkCh4HraLSarL8kQCAg++fkgXVtcOxLHcZietDh3urIFDHHdtXLl2nHNussfVqoq0LRrrg3mXzcrIZW06e0xSgs14YjE4x8K0NttMDVhL7i90vxtFeN2X6/J8aMFdu7TCAQF9Y0y9z7sY9NW9/vHRkxOHMmTWOF1uVGwLRgftZgYtWhqdcttwS2VP3ty9anSmWmbr/xRkv/938XRNFcN+qd/IYSuC775VykmJywss1xz4Iqxuzt+up6g9z3sQ9cF3/irxX2U0mmHt17N8cRTATo2udUJ23Zp/N1fi/C7//85JsaseW03igptHQq/+s+jRKISjrNyb8Dr74Mrf1R1vnWHprsm9/PGS67eD0txudvkB99M88nPh4r+sRIf/+kg/qDgL7+YYmjADfivPU4hrhnHFEEkJujoUnnr1YV/V9uCc6cLZedi70HXtujw6/kFRcVU1T3Xv/LPosXxhNWdS6n8mXPtuZz/7BGLn8sV3Ia2kS+JZQgh0KsbUIKRZb3bFsMxDWzTQlJdAZflDN8FbrYKwHFsbNPcOHKyklSRQfd64Pb6LT2lE7JSeo9t5FfnfVzp/giJurvfR3TLPiRVJTc1wsRbz5IevoRjGm7A79juwpiqE+rYjh6rWbf9uRbX89GdSwpFXbQP9Fpk3Q8UTeGXK6/aoNWNiUtniO+8Fy1eS7h9O1PvvOTet0IQbN6EFo3jOA5zF44t6jtoG/nS4JEZ7WPwma9WvgOOjXUTS4lsw1X+zE+PMXvuCHpVPdEt+wh37EQNRfHXt9L48MeQVJ2Z02/etP1aa7Kj/WTHBgm2bMJX00CwsYNU/wWEJBNu347sD2KbBnMXjq26AmNdg0XTgOeeznLPQ679gCwLVFVwz0M+du7Vefm5LG+9mmNi1MKyXeXTPQc0HnrMT2OzXHzYCYyCw+sv5fnO19IVqXneLK7YANTUSYTCEsGQRCgkCITc/9+8TS0FbQD1jTK//i9jpFMOmZRNOu2QSdtkUg6ppM3osEV/78qC4XOnClw4bdC1RUVV3RX/YMjtp3MceOfNPJd7VuePeLnH5Kt/liJW7f4uiiLYtkvlt79Yw5uv5njthRy9Fw2SCTfY0HRBVY1EW6fKlh0qew9otLQrzEzZ9F40N1SwqOmCT30hyOd+McRgn8XRN3KcOlbgco9BMuFgWa7QiCTAF5Do2qzwgY8GuOchH8GQGyimEg4/+k5m2f40IaC6VqJjk0qweH2EQhLBkCAUlqitl9l8Xbb9U18IcehBH5mkTSrlXiOZtE065TA7Y5fEUCplZsrm6Jt5Hnncj6YLhCT4xOeC6D7B3/5FiulJC8e+UlYrUFWIxmRmZ91rcqVzMduCV5/P8sjjPrbsUAkGJT76U0EUxT13J98pcP5M4bYStrmeiTG3LL6p9eowOnDZvOG+3h99N8Pm7SpPfTaIPyARq5L4+V8J8+gHfLz8bI6jb+YZH7UwCg6K4grhNDQptHcp7NyrsXu/hs8veOa7mSWDRRy4eNbgm3+V4u//kyjBkISiCN7/kQANzQp/+cUk508bWKaDkNzr4e77dZ76XJCWdoV02vVjraqpbHIshLsQ2NgiEwwXr/+QRCjs3hOt7QqNzVfPpSzDP/xnUWan7WvGy+LYmXKYnrLoPmcs6ZuYzzv82R8k6dikcuBuHUUV+AMST30myIPvdc/nm6/kGOozyWYdJAlCYYmGJpnOLSo79mjsvUujr9fkrVfHF/wO24bjhwuMDFklq6It21X+3v8WwedPcvGcUSoBVxRBvFrigUd9fPTT7nnMpN3xv76x8iBD1aC5VaGhybVtCYYEwbD7HAoEBV1bVCLXKOnGqyR++dcjzEy5AnHptOM+h4rPn9Fhk4E+syJrJMcyyU+PY2VTKIEwwaYO9OoG8jMTq5qImJkkdj4D/oAbLCw3cZekUlBh5/NY2dULYSyLc72vs1gyG6cGwm6J5S3IdEqaD9kXwCyqqi6E7AsUgx5XdXU9M2B6bSPB5i4kVcPKpRl5/hukh3pZKJJyJPmmiu3YZqFUSq2Gokja8t+txWtBknDs1ZSZbgzy02NkRi+jRatRwzGCrVtJdB9Hi1bjq2tGKBpWNu2WKi7ycDaSM0XPQ+GWrBqFMkGmjYhjmZiZFGYmRXqoFy3yIjV3PUps+yGUUJTqfQ+SHrhI4TYtSXUsk5kzbxFs7kKLVBNq20pqsAdfbRO+6kaEJFOYGSfVf2HV37Hu3c0T4xZf+oMEsSqJHbs1NN3NMEZigg9/MsiHP7m4RLLjuJORN1/J8ed/mCipUG4UAkHBv/j3cfYdqqx3J14t89m/E17w30zT4dkfZPgXv7ayi9Wy4OXnstz3iE5dg0IkKkpeX/m86wE4Orz6bOyRN/L82R8k+NlfDrP3Lh1VE4Sjgvd9KMD7PuSKElimU1yNL1/NvoIk2xuyHUGSBH6/xJbtElu2q3wWVwwoMWeTTjoYhoPPL4jF5Xn2GLmsw8vPZvnWV5eYjBdRFHjfhwL8838Tr3jfHnmff9F/G7hs8P/802mOHa58gM7nHI68keft13Lc+7APRREoquCjPxXkyacCjI1aFPIOqiYIBgWhiGuV8uU/TPA/fzdBNrvyqO7MiQIXzhh0bHb9B3fscR/IqaTDqXcKDFeozrtRmRy3GB4sv7fOnMjfcOtUJu3wpT9IIsnudROvlpFl2LxNY/M2jV/4FXdstEw387XQPWcUnIqq4bIZh+efztLWqfLkxwMEQxKS5AqL7TmgkZi1SSYcNA2iVRI+nzuRn522+JuvpInGBJ9ZZEy7Hp9f8PO/EubjnwtV9H5JEnz8s4u/98KZAv/gpyeWrZoYH7X4b/9hjl/5Z1H2HdQIBCWELKhrUPjUz4T41M+EcByKljiUssRXcBwHuX/pkzk5ZvE3f57iF/9RhHDEXay7614fu/drXO4xGRuxEJLbXtHWrpZUZ2emLL7+v1yF5X/2/8Qq7iOua5D5lX8e5fEnl1cWBHdB4aklzuXzP8rw//7GzDw7lcUoJKZI9V8kuu0Asu4nvuMQ+ckRV8Z9heRnJiikZlGj1ejVDajBMPklStVkVcff0Aa4yqir+c5KcRzbzYIVs6iS7kNICrDw2KvH626Z7YMaCKFFqsgvUj4o6360aA2SquEURYLWc5KvhatKlhBWNrNooOjumw8tFFu3fbkeK5cpWZUogTC+6gZXLXSRlSdJ9+Gvb0VIMlY+u67X3Hozd+EYkU17kX0BQu1bSVw6ia+mCT1ehxCCZO8ZzOzi85rcxDBWLo0SjKAEwgQa2hZUTd2wODaFuSlGX/k+enUDweYuZF8AX03TTQ8Wr/ZlihsWCkv1u8GuHqvBV9uMHq8l0NTpClkJwdzF48ta2CzFunc3OzacOV7gd39zlheeyRZLm5afeDoOjI9Y/Pj7GX7n389y/szGyUptNI6+kWd40CpNdq5MEnsvmpw/Y3AjfsWOA688l+O//4c5fvitDCOD5rx6clkRSPL8Sattu+XDPeeNDdfXZ1mu4mv+Os9OWRbEq2Ra2hU6N6s0NitlgaJlOgz0GXz/G2n+23+YI7eKIOpW0XvR4C//NMU7b+VLvahCuP2oLW0KXVtUWtsVqmpkNG3hIGQlmAa89JPsvFLTyz0GJ98pbJjKsdUyN+PaZ1zrjXj2pMFaVHZNjlv88e8k+PM/SnLqWJ50qrxUWAg32F/oNzJNh8F+k97uyh4Mw4MWf/WlJN/7eprxUddHFNygKVYl09qhUN+k4PNJ2LbDYJ/J1/48xV9+McmFDVQtsBi2DWdPFPjt/3eG7349TW+3Mc+rVwj33r8+UARXeGh6YumLNZt1+OG30nzna2nGR66OkZousXWnxsOP+3novX527tEJRSRMw+Fyj3s//tWfpnjj5Ry5ZUSFNhJGKkGy72zJ/y/cvp2qvQ+gRatXvK387AS58SEc00BSdWLbDy5eyikE4c6d6LEaHNsiPz1Odnz4Rg5laRwHq5AtZaH8tU3I/oUDdEnVCLZuuWXqrGo4RqChvVSiW44oTow7AVdAJDcxtHw55RqyqLCJEEQ37UXyLb5AutaY6ST56XFsy0QIQWz7wUWvXSHLRDfvRS/+u5lNkxldufXARiE9dIlCcgZJUfFVN6LH6/DVNKKGY9imQaL3zKI+pwBWPkuy7zzYNmowQmzbAZRABQuGQro5vcUV9jDbRt5VRC0pDa/zfi20D4UC2DZCEqiR+A2dHyufZe7CO+A46PFagk2d+Gubkf0BrEJu1cI2V7gpusmWBSeOFJgYneX+R33sO6TT1qlQ3ygTDEnoulsymcu55TjjIxYDl02OvJnn5Wez8wziF8RxrTq+8seJ0ktnT84PBpZieNDiq3+WLIkNDFw2SSUW/3yhAE9/J8OJozdeg23brLpMc3bG5mtfTnH8sFq2ONF93qDnwto8DE4dK9DXO8ND7/Vzz4N6aQIZCkv4/QJJdoODbNZmdtp2sy4DFj0XDI4fzle8H309Jl/9Uoorns9X+lrXmlzG4Q//S4ID9+q0dynUNyrE4hLhiITuKwbAAgzTIZeFuRmLsRGLy90GR97M8/qLuYo81AAs2y0XvvbavBFmZ2zGK5TlL9sPC95+LUcqafPeD/rZtU+juVUhVnX1HsznHXJZh7lZm6kJi57zBmYFizuLcfj1HAOXTapq3IyVUXC4cMagexWm9TeTQsHh6Ft5ZMX9zS5dNMlcZz1jmvD2qzlUDfTimPHOW/Mzi1cWXK74zvb1VBbEzUzZ/PWXk7zzdp4HHvWxdadKS5tCda2MPyjQNIFtub9ZKuned2MjFgO9JieO5jn2duXj0uVuky/+XoILZw3uedBXtN6R8AckBJBOudvuPmfwynM5Xno2Sy7r8M5b+dJ1PTVhMzK0+HVpGA6vv5QrCXLdKBNjVsXju+NAz3mTP/wvc7zxUo5D9/vo3KzQ1Ore9/6AQL3mfKZTDnMzFuOjFr3dJm+9urwow8SYzZf/R4LeboP7HvHRtVmluk4mGHR7MQsFh8Scw/iIycVzBq88n+PtV3OkUw7ZrM2f/Y8EkZjE1ITN0DLCT6mEw4s/zjI8sDY9/N3njZIQUEXYFqn+bhL1J4jtvAdZ06na+wCyL0Ci+yS5qVHM9FxRedNBUjVkfxA1GEUJRsiMXC4Fmo5pMNd9gkBTJ/76FuI776EwN0Xy8tkyg3lJ9xFs3kTNXY+CkDCSsyR6TmKmFy+7XAuMVIL89DiBhjYCDe1ENu9h5vRbWNdkX5RAmHDXLiKbdiPrPm5F05qkuqIlhcQ0iZ6TV/dPCHzVDcR33o2vphkch3T/RXLT4zcgprM8RmoGu5BHCIEcCBFs3eKWwV0zQMp6gFDbFqr2PcjNnK3bRp70yGUis5P4qhuK19V7mTnzFrmpEdfaREiowQjBlk1U738Y2Rd0LSgGe8hNjd60fV1rbKNAsvc0/ppG1GCYyKY9+KobkWSFzGi/K2yzTHnMzJm3CbVtw1/bRLhrlxuoXDzuBuDG1eeOpGgowTBatBolECYz1k9hZmJdj08JhAk2d2EX8uRmxjGSs/N6miVVJ9DYjq+2CYSEXcgvb3eyDhTmprDNArII4q9tJtDUSWbkMqvpt3NMg+Tlc8R33YsSjBDu3IkSCCGERGb4Mvm5G8ua3jSTHcdxg7Fv/lWal36SpbnVDTaCIYF2ZaKac0gl3InwYJ/JzIy9opKuMycMzpxY/YOjv9fkD36r8gl9Ie/wtS8v4Wt0E/nRdzL86Dvr+x3JOYcffjvDay/maGlXaGh0Tbx9fteGwTQgm7GZmbGZGrcYGbKYm1lYPGUxLpw1uHB2fR/+4E70X30hx9uv5ahtkKlrUIhXSYQiErpPoChuv6JhuCWns8WJ42CfWXGQeAXbgmOHCysqG10vLNM1DL90waCt0/U9jcbdY3Yc95rOZR3mZmymJt2Av1ILgIWYm3Unx7btilVNTVgcO5xf8Tm82RTy8OrzOV59fukg4fiRAsePLPO7OvDDb2X44bdWtx+n3ilw4XSBugY3411VIxeN3MuDxZlpm/Fhi5Fhc1XVBFMTNt/5Wpo3Xs7RtUWl9kqwKCCVchfxei6YTE9apWfZ5R6T3/n3ld2vpuGqvf7k+6sTQlkLEnMOL/0kx+HX8zQ2yzQVr39/wO2nt233HnB7g917fnjAqjiQmpp0z+Gbr+To2OR63QaKwaJRDBbHRkz6L7m9rVfGxkIe/vT3K++9m5u1+f7f3tq+KTM9x/TJN5B0vxskFS0SAo0d5KdGMdKJUoZCUjUUf9DtD1N1hp77eilYBFegYerEa9Tf9wHUUIz6+58g2LKJ/MyEG3AoKlq0mmDLJvRYLXYhx8zZwyQWWS2X/UEUfxAhq66Xn6Lir2tBKq5CSqpOuGMHtmlgW4ZbamqamJkkVj7HtcFeYXaS9MBFfNUNyL4A1fseRo/Xk58axTYNZN3vlnw1d+FYJrnJUbRY7fqd+AWwLRNjbhohy9QefC+Bxnb33Bl5FH+QQEM7gaYuJEUhPz3O7PmjC/c2SjKKP1j0w3PPnazq+OqaS2/RolWE2rZhF/LYloljFrCNgms0f02mMj89QW5iED1ei6zp1N//Qfz1LRiJGRzbQvaHXEuDtq0IWSY91EOoZfPNOF0AZEf7SHSfdMspfQHiOw6hV7u/q1XIIYRUEkFRQzEQgtz4EFMnXl1/QSUhkH0BFF+w9DtIiooWry0JFCm+IOH27Vj5LI5luNeyaRR7gJd+biV6TlFz4FFkf4hI5063XNhxSF4+t6C34vXkp8eYPPI89Q88iRapomrP/fgb28lPjWFl0zi2hZAVZJ8fNRBBi1bj4DD22g9vSrBYvfdBZH+I/MwYRmIaI5MqCvO4IlpaOEagsQM9WlMKsgqLBIuS5kMJhkvjiCSraJE4st8tNxeSTKh9K0Y6WRTrcscTM5fByqWXXJDJjg+Qn5lADcXQItU0PPhh0oPd7iKZ4yAUFVnzkR7sJjXYvczijkNhborUwEXi2w8SaOxASBKOY5PoPoFzIyWG3MRg8Qq27a7ATowVWKzu32MD47jld3MzBU4fu9U7c+MUCjDUbzHUf5vXRK6QTNrh3Cljzf3mrqeuUaalQympGg8OmBx98zY0VrzFFAqunc3gOl+ntg2jQxajS2QI3w1k0g49F0x6Lqy9urZlwfCAG2S+23EVLn9CYW6K2I6DaJEq9FhNSYDmSjnutYIvC01GHdsicfE42Ba1dz+Or7qB2I5D2IaBYxkISXGFYyQJM51g8vgrzJx+C3shBVYhiO+8m3DHToQsl1RCZc2HEogAoPiDNDz8URzLwrHN4n8tZs8eZu7i8bIyPCuXZvb8UdRoNZHOnWjhGPGdd2Pnszi27U4gVY3C3CRT77yEGopSte+hmypyY+ezzJ4/ipXLUH3gEXf/CgUcy0RStat9itNjTB59kdRgz4LiNmooStWe+wk0tiMkBSHLSLJc1ocZaO5Ci9XiWFfPm5lJMXn0BTcrcmWfjDxTx15FjVQRbOrCX9+GXlWPlcu4fcCqjuzzU0jOMv76j0CImxosWrkM06ffBEmiauc9bvazsYNgY8c1pYnub+jYNumhHibe/An5m5BVdL0pDxLp2n3NNSwjqXpJCEiLVlP/wIdwLFdZ1rFMHNti+tSby6peFmYmyY72E2juwlfr2pkY6QTZ0b6yzOCiOA5z3SdwHJvqvQ8SaGgn1LyJYFOXe105jlt2LCT3PnAcspPDS5a3rhVXxHf0qjp81XU4jlMU4XG9Td3g2x1LbKPAzJm3mDr+yqL9fKHWLVTvf6g0jghJRlJVdwEBt0y57t4PuEFi8X5wLIvk5bPMnCmvQLgeK5tm8ugLqOG4u+DU2IG/rqV4npySj61tFEgN9rBcxYKZTZO6fI5o126UYrl8fmaCzGj/DYtZ3fRg0cPD487h4cd9NBetJdIpmxOHC4wNv/sn0R4edwr5mXGmjr1Mqu88wdbNBJu7ikIvASRFxbFtzHwWIzVHfnqM9MDFBT3cbCPvlrLNThDZtIdQyya0WC2SqmObBrnJETKjfSS6T5AdG1jcqqNYdhlqXTzwELKCr7ph3uuZkcuuT9J15KbGGHvtB2SGLxPu2I6vtgnZFwDTxEjOkB7qIdFzisxIH6G2rTimUeZ1tt6Y2TTp4V43U1E8f8GWTWhh1wohNzVKeuAicz2nyI4NLOp1J2s6/trmJYM2xRdEuU7Ex8ykmD13ZN57sxODjDz/TaLb7yLcsQMtWoUSjOAU8hQS08yeP+qet9E+9KqGm9pDCa4X3+TRF0kPXiKyaRfBxg7USNydoFtupjk/NUqy7zzpoR7y0zdH2EaSZHxV9Utew5Kq4auun/d6eqC7aO21+PZtM89c9wmCLZsQinudJkf7yc9OVFya7JgGie6T5KfGCDR1Emrbgq+6ESUYQVIUN8uZThSDlT4yQ71kJ4Yq2vaNUEhMM/b604TatxFoaHNLYH1BpKIKsFXIk5sbJTc+SPLyWdLDvWVVDtejReIEWzYvuvgjhIQer5v3upGcQZIVlpvtpAe6GXr2a8S2HyTY3IUaiiFpPhzLwMymMeYGyE2NUFFpu22RmxwmMzZQunaSfecx1qBUXyxlfimE2Ni1Yh4eHhuWqhqJf/Nfqrn3YR1Jcsu8/+U/nroh03oPD4+Ni6RqSJoPqehd53omOmA7OLbplsoV8suq8kmaD1nzIRTFFcZwbBzLwjbybpC4zIRWCUZKFhErwcymXFuERbYvFBVZ95cyE64Bu4ldyLvlq47tltwGIyAERnK2VJopZBklEHaD30IOI524+j2ShOIPFa0IXOGNUiZACLc01BcslRle3aaCFq3CLpbQOqYBQkLWfUiaD1GU13UsEzufcz3ulsg4CVlBCYSQ1MoU3q/g2DZmOrFoVkrSfG5pq6wUAxk3E2YX8liFXDETJaNGq8C23VLKm5CFKlG0gZBU/eo+4riZItPAyucW9R288nk1HHcXRyyTQnJmyb4zoahoYVfQxMpnMbOp68xzpeJvXpna8bWYmZRb/rgMkuYrE2NacD8q5Eq5pFBUNwNX9KF2bPf82UYB2ywsft8K4V7/xeM1krOVZTgX3SFRysJKiur6nxZ7Yp3SWFLAKmSXPV7ZF0AJhFhpT+2KzueV608rXn9cc/4s0y01rnAhRYvV0PDQR4lu3oOVzzH4zF+SuHS6okUAx3EWPUgvWPTw8FhzVA0+/0thfvbvhYlVyRiGw7e+muY//+uZDeWV6uHh4eHh4eHxbiDUtpWW938ONRwj0XuWkZe+TaFCq5elgkWvDNXDw2PNkCSIRCUeetzHxz4dJF4t4ziu6fdXv5T0AkUPDw8PDw8PjzVG0nwEmztLNijpgYsYyZk12bYXLHp4eKyK2nqZtk4FIVxxOEmGSExi/yGNx54I0NjiDi+FPHzrr9L0XVp7MREPDw8PDw8PjzsdPVZDuGs3ALmpUTKjfRWXry6HFyx6eHisiv2HNP7+P4kSikgUCg6q6mYVff6rZp+m4fDCj7N8+2vL91B4eHh4eHh4eHisDC1aQ3zXvfhqmrALeVJ959fUD9QLFj08PFaHAF9AUFs/Xz0QIJmweeknWf7sDxLMzXj1px4eHh4eHh4eN4JQVILNXa5/pW0hqT4CDW1EOneC45AZ6yfRc3Jha6FV4gWLHh4eq2J22qa/10T3CYIhgSILcjmHyXGL7nMGh1/P8+rzWUaGrErVuD08PDw8PDw8PBZBUjQim/YQ3boPSl6vOjgOuclhpo69THZieE2/01ND9fDwWBWhiKC5RSEck9A0gSS5ZaeZtMP0pMXEmE0+7w0hHh4eHh4eHh5rgaT7qT30GFW77nX9Ix0HIzVLeuAis+ffWXWvomed4eHh4eHh4eHh4eHhcTsjBEogjOIPuX6v4PqB5tKY2XRFnooL4QWLHh4eHh4eHh4eHh4eHvNYKliUFvsHDw8PDw8PDw8PDw8PjzsXL1j08PDw8PDw8PDw8PDwmIcXLHp4eHh4eHh4eHh4eHjMwwsWPTw8PDw8PDw8PDw8PObhBYseHh4eHh4eHh4eHh4e8/CCRQ8PDw8PDw8PDw8PD495eMGih4eHh4eHh4eHh4eHxzyUW70DHmuLkAWSLACBYzvYlg2eW6bHTURSBEJy16Fsy8axvAvQw+NahCyQlPK1Wtuwcey1uVeuvQcdy8b27sG1RYCsyRW/3bEcbNNexx3y8PDwWD+8YPFdhBpQ2PWZbWz9UCeKT2Hk6Dgnv3qOyfPTXsDocVOItobZ9dlttD3UDLbD5RcGOfGXZ8lMZm/1rnl4bBj2fG47B35xdylgNLMmL/3mm/S9NHjD2w43hdj92W20P9IMDvS9PMSJvzxLeixzw9v2cKnfU8sH/tMjKP7lp1COZXP+e5d4/b8euQl75uHh4bH2eMHiu4iGfbXc8yv7EZIA3EmDkTU48icZstO5W7x3Hu921KDKpg+0s/uz2xDCvQb3/dxOEkMpzn2721tZ9/AoImsSWlAtBYtCmp9pXA2KX6HrfW3s+fz20j2492cipEbTnPnbC1gF7x5cC4QsUIMKql9d9r22ZaOsIAv5bkHWZbSQihZUUXwKsipBcW7iWA6O5WAWLMyciZExKCSNNcuse3h4rC0bPlgM1geo2VZV9tpM7xzJoSTOKp57QhZUbYoRaQmVXrNNh/FTk7d9QFW3p7YUKF4h1hHFX+W77Y/NY+Ojh1WqtsRLk9Qr1O+p4cL3L3nB4m2KHtWp2RZHC5VPjB3LYa4/yUzv3Iq2F98UJdISLpbLX8XMWkx1z5CZ8LLQq0ULqlRvnX8P1u2q4fx3e7xgcY2wChbpsQx6REfWJCRVRlalec/fOw0hCwLVPqJtEeJdMaq3xom1RwjVB/BFdSRNAgRW3sTImmSnc6RG08z1JZk4O0VyOEViOEVuNu9VQ3l4bCA2fLDYdKiBR/7FvWWvvf0/jnH6a+dX9eCTNZntT21m92e3lV7LJwv85DdeZvDNkRve31vJQivTQgi4s59fHjcLIeYFAOBmTbxr8PYl3hnhgX96kKpN8bLXzbzFuW928+pvvV35xgTs+qltbPvYJhS9PNuSGErxxu8eofe5gbXY7TsSIUCSF3gO3OFBzFqTHE5x5Isn0cMaakAt/lFQfAqR5hB1u2tQKyhRfTfhr/LRdKielnsbaTpYT6ghuGi2XFY1tJBGsNZNBjiOg1Wwmbk0y+g74/S/NszYyQmMtHmTj8LDw2MhNvxoJkli3qTCfRh6D7/rmb44g+M4pVVlx3aY7U+4q3QeHuuMkTaY60+WXYO2ZTNxduqmZBWbDtWj+hXyiQKT56cxc9a6f+edjKxKxDojSIpU8e+rhzVCDQFkzRPiXg+MrMlsX2L+PXhuCsvwsoprRW4mT/cPL5e/WBS9aX+4hVh75M4JFgXUbKti+8c30/ZgE6GG4LzM9rKbEO48r3ZHNdVb4si6zOT5aS9YXAUN+2vRwxqFtMHE2WnMrHcOPW6cO2Q0uzMYOTZO99OXabmvEUmRGDs5Qc+PL5Ob8UpQPdafQsqg7+VBqrbEqd9Tg23aDLw+TP8rQ9jrPFHVIxqH/v5efFGdyfMzvPX7x0iNptf1O+90hBD4q3wE6gKkhlMVfSbUGMQX8614MulRGUbGpP+VQWq2V9Gwtwbbchh8c4S+lwexCt7iybrigJW3MDJ3Vu9d08F6DvzibhoP1CGrC/dmOo6DmXVLT4UAxedmYRfKeOdm80xdnKGQKKz3rr/r0EIqB35hN+HGIHP9SV77r0dIZisbmz08lsILFt9FZCazvPX7xzj7rW6EBJmJLMnhNLZ55zy4PG4dju0wcWaK1//LYQJ1fhzbITmUJj2+/iqMtdurqN4SRwtp5JMGkuplrtYdAWpAJd4eqThYjDSH8cX0dd6xOxfHdpg8P8Prv32EYK0fx4HUcIrUeMbrAfNYcxrvquOeX9lP3e6aeYGfYzvM9M4xfHiU8dNTZCazpQoESZXwRXQiLWFqd1TRcKCuNC5Mnp9m4PURz+5lFVRviVO9NU6wNoBtO14Fh8ea4QWL7yYcSI2mvYyKxy3DKtjM9iWY7Uvc1O9tuKsOaZFVbY+1JT2ewRfXkVUZNaAQ64gw8PpwRZ8NNwfxRTXAzTbk5/L4Yr713N07DtuwmetLMHeT70GPO4uqLTEO/vJeandVzwsU5waSnP3GRQZeGyYzmaWQLsxbtBayW3qqBVX81X7aH26m+e5GBl4dJjXizWFWQ93eO69X1uPm4F1VHh4etzVCFjQeqHel2T3WnYlz0zTur0VW3YlevCta0edkVSLSFEYLucGibdqMHJug8z2t67m7Hh4ea0yg1s9dv7iHhn21JUElx3GwDZuBN4Y59qXTTJ6fXlKE0LEcjIyJkTFJT2SZuTTHya+exypYd1QZ71ohZEHD3tqKvD89PFaKd1V5eHjc1lRtihKqD3iaVzeJ1HAKY2scLawhqRKhxhC+mL6skFawPkDwmt8pN5snPeZlEDw8bidkTWLbRzfRcm9DmdqpVbDofX6At//gOMkKy9KvxSpYXl/tDRBrjxBqDHrKxx7rgrcU7+HhcVtTt6sGNah6oik3CdtxSA6ncGxXcdMX1Qg3h5b9XLAuSLDGX/qdps7PeKXDHh63GTU7qml/qBk9opcr7p6Z4tifnV5VoOhx49Rsr8IX1b3noMe64GUW1whJlQg3BQnWBtAjGoqugHBLrcy8RXY6R3osQ2Yy65VYrDGyLhOs9bvnPqqh+BQkWcK2bIysSX42T2rcPffrrcp5LYFaP5EmN+ui+BWELHBsBytnUUgZZKaypMczFFLGDX2P4lcINwTxxXW0sIaiy6UVX9u0sQo2hbRBIZEnO5MnO5O7qedhPZFUibrdNWgBdfk3e6wJql9h8sIMdbtrQAY9ohNpDjFxemrJzwXrAvhr/KW/T5yfdjPCa4CkSARq/ATrAvhiOqpfQVIkHNvByJnk5wqkJzKkxzNY+bXNXghJEGoMEm4Iokd1FJ8bAFsFm0LK/d7EQLKsJM9x3D/vOgTu71DrR4/qaAEVWZMRkjv22aY7JhfSBvm5PNmpHPlk4YaeiZIq4a/y4Y/73N8+oCBrsvsMMG0sw8bIGuTnCmSmsu4z2BNPWRWKT6bpYD1Vm2Ol19ze4wLnvtXDdPfsLds3BASq/YTqA/jiPvc6UCUcx81a5pMFMuNZkqPpdbWTkDWJcFOIQI0fPaK71m9X5oI5i+x0ltRYhuxUbs3mgpIqUbO9Cj1ya8XDFL9CqC5AoLZ47D4ZIQSWaWNkDHIzeVJj6TU99uUQsiDUEHSvi6iOrMtIssC2XIXefKJAetIdFzybkcXxgsUKiLZH6HxPK6KYh504O83Q26PuA0e4ClSt9zdRt6eGaGuYQLUfNai4N0nBwsiYJEdTzPYmGDs5wfDhMeYGkqtSpws1BNnyZEfF7x89McnYiYlVBQe+mE7z3Q1EWq5mDYysxblvXbwxDzsB8c4oHY+2lL08dmqSseOTFZeiyLpcUlKr2VZFrC1MoMaPFnTL4yzDopA0SE9kmO1LMHl2muHDo0z3zK3a988X02l/pIVAtSvKkZnO0fOjy2XnI1gXoOlQPU0H60vKZFpYdSevlkOhOGgmh1PM9M4x9PYoA69WJhByLVpIpelgPXV7aqjaHCNUH8Rf5UP1u5MlAMuwMXMmuZk8meks6dEMcwNJZi/PMXVxhsRQamUTJwH1e2ppOlhX8Ud6nx9wBW9u8Nkg5KJVQ42fQLW/NCltvKse6RrVt2BdgJ2f2kJ+rjJ/0f5Xh5m6OLPg/gVqfDTf01gW1GSnc1x8+vINBR1CFtRsi9Nyb2PZ68NHxhg/NbWhF5RUv8L4yUlsy0EGfFGNSEt4yc8IWRCqD+C/Rgl18uw00WU+txxCElRtidF0sJ7aHdVE2yIE6/zoYQ1Zk7Et212Ymcwy159k8tw0I++MMXluBjN34xODSHOIlvuaaDpYR7wrRqDWX8xyg5k1yc7kmetPMHpigsHXh5k8N+MGTYaNbdqr7rOt3VVNyz0NFb//8ouDzPTOrZsiqqRKVG2O0bC3lpptcSKtkVLAeGXxyraKC1cpg9xsjsxkluRQirmBJDOX5hg/M0khWdnCmZAEwfoANVvjxLtixDoihBqCBOuKi7U+d7HANizMfDFQKH7f1IUZRt4ZZ+LM0osbHvMJN4do2F+Hes3inGM7DB8do/f5/lu3X00hmu+pp35PLfHOKMH6gDsG6DI4rv9odjrHXH+SqfPTjBwbZ/x05dfbFeJd5fOWsVNTjBwdK80Fa7dX03J/I3W7qom2hvFX+1ED7nhgFSwKaYPkSJrZ3jnGTk4yfHiMxNDK5oJCEvjiOsEaP/4aP8EaP4HaAC33NpYWqgD8cR87PrmlYuu0obdd1drVjBFaWKNuVzUN+2up3hIvHbsWUBGSwCwG6+mxDDO9c0ycmWLwjRESg8mVf1mRQI2fTR/sQCk++2d6Ewy8NlS2KBdtD9P2QDP1e2uJdUSK80MVIQts06GQcseFxGCKmd5ZBl4bZuzE5Kr36d2MFyxWQNWmGHf/w32lbM2F719i6sIM+WSBzve0su1jm2g4UIfqm386JUVCDagEavzU7ayh7cFmhg6Pcu6b3YwcG19xEBduCnHPrx6o+P3vfOkUU+enKawmkySg+Z4Gtj+1uVQHn08UmLo4zciR8ZVvr4iiK2z+YCd3/dLu0muWYfPqf36bseOV3aiBah/bntpM+8MtVG2OovrnZ5YUXUHRFQI1fmqLpTNtDzdz6cd9XPhB76pWkfxVPnZ9ehu1O6oAmO6eZeTIGIlBt/Smbld10Zy4mUCNf37/gAx+TcYf8xHvjNJ0sB4hWHGwWLOjii1PdtL2YDPR1vCifQqSIqH6FfxxX0mIxDIs0uNZZi7Ncuqvz19d+KgAIQRNB+u551f3V7yvs/1J5vqTODeQStn6kS5qtlcRqPa7WYRiJkELqyWBhSuEG4Ps+8LOiredmc4z3TO7yDkQtD/SQtdjbW52xHFIDqWYuZxg7PjEqo9Hj2hs/XAXuz+7vfSaVbCYvfzKqrd5s1B8ClPds9iGBX4Fxa8Sbggi6/KiAbQW0gg1BEqLGPlEnsRgsvT31SDrMlue7GTzEx3Ubq8qCeeUvUeS8cdl/HGfu6j3QBPt3S30vtDPxR/0kpnIruq7hQRNBxvY9tQmWu9vQo9o88q/tJCGFtKItIRoOtRA08F6Lv6gl97n+jHzbn/WapQLhSRo3F+3oudAcjTNXH9iXWyUIq1huh5ro+X+Rmq3V5cWSq9HluSSKFKoPgDbAAcKGYOJ01O8/ttHmErOLPt90bYw7Q8307C/jvimGKH6gFvJswCS7Pr5+aI60ZYwjfvrMN5rMHF2igvf66Xnx31rsmhwpxBrj1CzvarsNdt0uPC9HozMzT+PkirRen8Tm5/ooPlQA/6qhZWV9bCGHtaItUdoubeB9kdb6Ht5iIs/uLSihczqrfGy++7sNy8yfXEGI23Q+Xgb25/aTP3eWjebeP2+FueCwdoA9btraHuomaG3Rjn3rYuMHp+o6N7c9P526nbXEKgtfw7qYa2sfxTcLOvez++o7MCA13/nCBPnpnFWMEYICaJtEbZ+ZBNtDzYRbYsseOyqX0EtZh3r99TQ8UgLLfc2cu473Qy8OryqxdFgfZCDv7QHPeKO+5dfHGD89KQ7pgtouaeBnZ/aSvM9DQs+GyQZFN1deK7ZVkV2uo7cTN4LFhfBCxZXQaDWT6ghQNuDTez9wk5iHZF5E9aFEJKbGel8TyvBWj+H/+gEw0fGNqz/VW42z/iZKdofbiFQLB9TfDJdj7XdULCoBhU63lOeVZy9PMfUhemKsorBugD3/Op+2h5qxhetvOxCC2k0H2og2hYhUBvgnT89uaRaWyXImlsClRhM0bC/lgM/v5umQ/UoCywcLISZt5g8t/wE6Voa76pj38/tcr9Hl1fcoyCrMpHmEME6P6e/fuG2qIfb+pEuGg/UVXSfrSWZqSyjxydouqsef5WvZETf8UjLDQWL/io3Y3ktk+dnmOqe3dBZRQBZU9xyotEMekRHkgWBWjfTmxxauF/JX+Uj1BAs/X2mdw4jYyw4sagEPayx+6e3s+2jmwg1BCq+B1S/Qv2eGiLNIaKtEY7+yQlSYyv0ARXQ+kAz+39+F3U7q5cNeIVwLQKaDtYTbgiiBVW3HH2Ny2FvNkIS1O+rZfdnt9F8d8OCAfPyGwEtqGLmzIqDtvq9tez/O7vwV/mXf/MCqAGVxgP1hOqDqEGFM1+/uOpKkzsJNaAQ74yVVQcAzPUnbskEWw0obPlwFzs/uYV4Z3ResLQYsiZTvSVOqCFIrC3MO3/mKreuZh52RbSrbmc1e39mB9G2SEUCM0ISBKr9dD7WRrDOz9v/4zijxyeW3YdNH2in7aEWJEXc8t5EIQlqdlRx8O/uofFA3YIB2WL4Yjodj7YQbg4RqPZz4Xs9N7yQpQZU9LBGZiJLx6Mt7P+5XdTurK74usjN5pjr9+yGFsMLFldBqC7Alg91lVLbkizhOA5G2mDy/Ayp0TRG1kTxyURbw1RvrSrVboM7WNXtrmXnp7aSHnPLAislP5dj8M0RtOJKmR7W0ELF7Mpajx0OjJ+aZPbyXClYlFSJhn11BOv8pMdXsSovoGZbFdH2SNnLI0fGSA4vr4yoBlXu/Uf76XysbV5Alp3JMd09S6rYk6BHdaKtYeJd0bL3huoC7PzkFgrJPCf+4tzKj+EaJNXNWlRtjrH3CztpuqcBpTh5dGzHVXyczGJmDLevqtaPv9qPrEjggJkxGXmn8sA70hpm509tpeWehrJJqm3apEbTzPTOkZ3OYeYsZE1CD2uEW8JEW0LzBvPx01PM9s7hrGCe5DgOicEkQ4dHS9efHtbc0rt1VGFT/cqtUXlzYOjNEbY80VFatVZ8CnW7awg3hxYNjpZCUiT3HmgtL8Hsf2WQ7PTqMl03E1l3x7upizNUb40DxWCwLrDo+QhU+Qg3Xg0Wpy7MYuWtsvLhSlH8Cnu/sIMdn9iCL14u6JBPFZjpmSUxlMJIGSgBlUhTkJrtVWWlc/4qH5s/2AGOw2u/dRhzBYFb7c5q9vz0dup21ZSVkTqOQ3Y6x+S5adITGXDAF/NRs72KUH0ASZaItITZ9dltJPpXX37lOA6JoSRDb4+iR9zspR7R3PKqm3WPCGjYX8uhf7CPul01Cwb9tmmTm3V7pAtpA0kW6FHdzUJfN3YNHR4lNV5Z0D55bnpBYSTLsEiNpJntS5CdyWPlTNSAQqgpRPXmWFk/l5AE4aYQ25/azNxAioFXh1ZxEu4sfDGdqs2xedfY4BsjGJkb67tfKbImseVDnez7wk7C1ymAmjmTmd455voTFJIGkioVK7uq0WNXxws9rNH2cAtCErz+u0dXNZaHGoJs+3AXjQfribRGStUnhWSBqQszpEYzGLniXLAtQs3WOPI1C7yKLlO/t86dC45nlp0DKX4FSb71gSJApCXEA//kILXXjYMA6YkME+emyRb7g/W4TrwjSrQ1XLr3hSSo3hxj78/swMyadP/o8g3tjxpQ0CMaTYfq2fezO8sCRdu0yc7kyEzlMHMmii67PfRxn3vtOJCeyDJ1YWUL93cSXrC4CiItYbZ/LFBq3M8l8pz5+kUu/uAS+UQB27RdpUBJuMI3jSHu+qXdtD7QVMqMyKpE20PN9L8yRHI0XXE56mxfgmf/r1fdAUNy/0iKQA2q1O+t5eH/4541PdaZ3jkmzk5Tt7sGxeeWFwVq/bTc18j571xa8faEJOh6X7sbLBXJzuQYPT5BdpnaeiEJ9n5+B+2PtLi9CLgBWWIoxYXv9XD5hUFXvOXK+ZcFsioT64iw86e20np/E2rAPQZfXGfnp7YW69xX3i94BUV3G8ub72mg7YEmJEUil8jT98IgPT/pY+aS2x/pOA4CEIpEoMpH3Z5a2h9pwUgbldsHCGh7sInW+xpLA65tO0ydn+adL51m/PQkVt7CtorqGcI9Z7IqowZVqjfH3F7KuxsINwTpfbaf7HRl/QwlHOh7eZDhI2Ol6889z+4DedP729n16W0r22YFvPZfjqCF5pcaqwGFu35pD9Vb4qXXZi7NceIvzpCusMRwunuxElSX2cvuynm8K1YKWqOtYZoP1XNuFRMMNaDQ8WhL2YpnajTN6LEJjPTGL4m7MjGYODPF1g93AW7/yLWZw+u5NrPoOA6T56YxC3bZOFAJQoItT3Sw5cNdpUDRcRyyUzm6f3SZ7qd7SY1nsI3yMThUH2T7U5voen87etjNgKl+hc1PdDJ+Zopz3+yu6Pt9MZ3NH+ig8UBd6Tw4jkM+UeDM317k4vcvkUvkS6vkkiyQdZnmuxs48Iu7ibaEibaECTcEEfIqJ3wODLw+wtiJyXn3oL/aT+d7W1dUfrYaqjfHuevv7qFhb23ZdWybNsmRNBd/2Mvw4VGSw2lsyy5lyyXZLYt3+0wbaDxYh5E2mDg7XXGmNTGYpPf5frY82UUhVWDi9BQDrw8zenyc7HQeq3B1DHSfjxKhhiDbP76ZrsfbShlQIQliHVG6Hm9j7MQEhWRhXc7VuwUtrM1b4HIch7Fi//JNQ0Dz3Q3s+qltpUDRcVyxkt7nBjjzzYskh1JYhlXsJXTnSHpYY8uHutjxyc1ukFDM+Lc91MzsQJJjXzq1YrG5WFuktPghJHcuc+qvz3Ppx33kk/PngtG2CHf90m6a724omwt2PNpC30uDpMczS2bY3v6D45z8y/kL3IpfYd/P7KB+b23pteRwine+dKriyonZy3MVt6PIusyhv7+Puj01peOwLZuZS3Oc+dsLDL45SiFZwLZscEDIEkpRY2L357ZTv7cWWZPcZ2mbOz9LDKcYP7n6DLVWnAPX76mhblcNCEF6IsP57/TQ/9ow6dE0tuW4c7HiNRGsC9B8byMt9zYyeX6azErnQ3cQXrC4CiRFcsVKHIfUSJqXfvNNho+MLRrwZadyvPBv3+Dh37ibzve2lVbBFJ9Mx3taGD48WvENbZvOog3Lyg30/yyGYzoMvTVK20PNxDuiIMAX1Wl7sIXuH/WtuJTKX+Wj7YGmq9svPmwWExi5lvZHW9j6kc6STYJt2UycnuLtPzzO8JGxRQe6zFSW6e5Z9n5hBzs/uQWtOFmMtITZ+4UdTPfMkl5pKVoRNej2nunFctjho+Mc+ZMTjJ8qCvUssEvpsQyT52c4962LSKpccRVosC5A3a4atPDVDGF6LM2z//IVEgPJpbczmSXRn+Dyi4OoAYWqLXHm+uZWJVRk5qwFP5cez8zrZ1krxk4uXPKpRzR2/dTWstfyqQIj74xXnrFf5vw7tsOlZ/tpf7gZpTnkLpjU+Gm6u4He5wfIJ1Y2yQzUBmi5r/weGHxrZEUVBrcSIbsrseNnpkoTIX+Vv+TxdX0ZreJTCDeHUINusG9m3ZV/27AQKywrrt9Xx7aPbSZUHygFionBFG///jF6X+hfdKKVncox25dgumeWA7+w2+0nFgLFJ3PXL+x2hSaWOf9Ccvt1N32gHfmazFY+WeD1/3qYi09fXnQMuviDXibPTfPgP7+bhv11N9SrCWDlLbILjL2psQxVm6I3tO3l8MV1dnxiM82HGsoyOkbG4OIPeznyP0+SnS6qHS5yb80NJLj8gjsWqQFlWY/OazHzFif+4izJoRS9Lwy4/dCWs2T5dnY6x3TPLJnJDHt+egdaSC1NGKu3xKjeEmfk6FjF+3AnogVVwk3lC0KWYTPTM3tTW2liHVF2fGor8a5o6fozMiZH/vgEp7523i0pXmB/cjN53vnSKSbPTXP/r99FuDiWy5rMns9uY+TIGAOvD6/oWK6dCyaH07zwb15zBQUXG4emc7z4b1/nwf/9bjoeab06F/QrdD7WxsjRMTJTiwcsE2cXFmXSQhpbn+wse62QMRk5NsHs5bnKDqbS4xaw7WObaH+kpRQoWobFwGvDHPnjE0xdXLiVIo+bcRw/PcW9//gAm97XjqRKSLKgfk8N2z+2icRgktxM5WPBtQRqAuz+zDZ8MR3btBl8Y4Q3/vs7JIeSxcWj+Z9Jjbr7c/wrZ9xs7cbuALmleD6LN0A+UeCt33+H4cOLB4pXyM3keOfPzrjlSUWEENTuqC4FGjfKjQiILMXYyQnm+hLYtnuMkiIRa49Qt6t6xdvqeLQFLXw1Q2TlLcZPTpJYJkPji+ts+2gX4cZQaZKYHE5z/H+dYeitZQRaHLf/8tRXzzNydLz0XiEJqrpidDzSsuoSXkWXCTeFUHSZocNjvPE7Rxg5MuYG0Uvtku1gFWyMdOUrmb6YXprkXuGKsm4lP73juCv/+USBkSNjZCbXdhXNcVi/wdZZ+I+z0LzAuWZfKvlTAWMnJ5i6OFN6CApJUL0l7tpHrAAhCdofakYLXr0HCimDkaPjZCY3fgkqgCQJwF0ou5KZllU3e6NH5/et6BGNaFu4dN3O9CbIJ9wJwUqqqbSQSud7W6ndWVXalpExOfEXZ+j5Sd+yPS9G2qD76ctc+nFfqTf6Sg/q9o9tWraE01/to+X+JoK1gdJ44TgOF757ie4f9S05Bjm2w3TPLEf+5ATJoXVcFHAWD9DWAiEJarZVseVDneWBYtbkzNcv8MbvHiUzUbSmWHL8uzoWpUYzK1u0cmCmZ46jXzzFTM9cKYu8HFbe4uRfnmPqmv40IQTB2gDR1uV9Qu9ohNsTdu1CJbjZq5tZgirrMs331NN6f2Pp+rMtm/Pf7eH01y+487AlLgUrbzH45ginvna+TOBO8Sns+MTmirUGric/V+CN3zmyvFBNsdzx+FfOlo33QgjqdlfPO78LfX7hP84Ch+1cHQ/W6DkI7qL17s9sKymvOrbD5Nlpjn/lDJPnZ5a+Fx3ITGY5/IfHy/oDJUWi8UAdDXtrVz0X00IqoQZ3wfLSs/28+p/fduet5jJjkeXamXm2GUvjBYurxYG+lwYZOTpecXN8ejzN0FujZa8Fa9266TXvN1xDCimDocOjZTLTwfoAjQfqV9QjI2sS7Q+3IClXV9Xn+pNMnJlcNthuOlhPvPNqv4RVsBk+PErfS5X3mmQms/Q+P1C2iu2v8tF4Vz2+2I0F7ImhFOe+1e02yq8TsirPy0jckIWJR8U4lkP3M31l5zvSHKJuT02pJLoSZF2m/TrLmMlz024p7AYXtrmKAFxboKmLV3s8Qg2BBdUItbBaVr42c2mWwgoWSa5QtTlGw77aMpGjqfPTXPhu5eXw+USBgddHSAxcXZySdZmWextLfdmLEaoP0ri/tuy1zGSW89/rqewZ4Lglz5dfGryNfutyFJ/M5g+0l/U/O47D4BsjnPqbC7dEEXMlFFIGA68PlwmpaWEN3yIqmh4ukiwtKGBUSBSwb+K1HKzz0/5QS1lmPzmU4uw3LlZc5WRmTUaOzrdOab67gUjzKhYNHOh9vp/R4xOVlXE6kBpJu+KG1xCqC+KLbey5IEDne1vLFq0LqQJ9Lw8ytoIS0uRwmks/6S8bByOtYep215T1lq+GqYsznP6bCysXLvNYEi9YXCWFdIHBN0dWVONspI15prVCFvirfUir7V+5SQy+PuKaGRdTWFpIpXZnFYHayhXpqjbHqdoUK2Ym3BXBqe6ZZZuKFZ9Mw766Mq+7QqpA7/MDK1axGz4yRm4uXzoOV+ggSLQtsswnF8cyLEaPjTN8ZHRdV/XN/PzVr+qtMfTlViM91oShN0dIjV7tL1V8CvW7aub18SxFVVeUqk2x0t+tgsX4qcnbpgT1WizDLrt3Q/VBAgsoVOoRvcyHcaZ3bsW9QZIqUb21inhXrOz17mf6ViROAzB5fprE0FUrF7eH2bdkCbWkSETbw0Su+62H3hxdUQl7bjbPxOmpFZVdbiT0iEbrNW0EANmZPBd+cIl0hQI1t5rJc9Nlzw1ZlVzbq439CL6lCIkFs25Gxrh55urF/rb6PeULNpdfGqy4P/0KiSHXc/XaaixZl2nYV7vEpxYmnyow8Prwiu7pQqrATO9s2WtCFgRqfLdGyK1C1KBKy32u9sMVEkMphg8v3ga0GP2vDpV9RpIl4l1RgiuYU16PmTddT9lLs6vehsfCeMHiKpntS5AYTK7oBrEMm8zU/EFNC2orq8e6BcwNJBg/PVkqsRBCEOuMUruz8lLUtoea3TKL4qHmZvOMn5oku0yNerA+QLTtqoqW4zilz66U9Hja9eG55mcL1PhvyBw8N1dg/PQU+bn1FUjITmdJjaXLHnDVW+Ps+sy2GxpgPSojnyjQ99Jg2WvV2+JUb4lX/IDveE8rslYubDN+ZmpF5cgbBatglQWLwfoA/uryDI2QhWseXczcGFmTxFBqxd52vqhO1aZomS+hmbdW1WeWm8mRGsuUBQxaSKV6S2zRzyg+maqu2DzrlpFj4xgrLF9KjqSZG7g9Jdrjm2IEagJlr42fnGBmUZ/SjUd6IlsmyHJFfORm2/LcVgixoAWBkTHhJrmOyLpc9FO9po2lYDF2YnLFpbCFlEFyJF1WKSIkQe2ulbUVgLv4lRhKrShotgoW2QV6E7WQtqGngrF2V5zryr3i2A7JkTTTPbMr3lZiMEVurnzuF22N4K9e/VwmNZph8tz0hq9wuB3xRsdVkhhKLRvkXI9jOwtOkmTfyr3ybjaODZee7cfKX93/UH2Qup3Vpdr1pfBX+WjYV1s22UsOpxg5urxtRKgh6PYJXbMviaHUioVFrnw2PZEpmyzoEX3ZErSlyE3nmOmtsIn8BsjN5pk4O13WAK74FPZ8bhv3/ZODbL7G3sFjfbj0bH/ZxMQf91G/twZffPkyZi2s0XxPQ2nS5TgOU92zTJ5dv9Ll9cSxXCXifFFFUgu4PSPXjgeKTyHWES1NLlKjabJT2RVn4H1RfV72PzWaXrmaL24bzxV7mav76fYeL4biU+bZ/Rg50zW6r1DJ+grZmdyKMyEbhbod1y0OOhStQm6f4zHz85/BQggvs7gs829a216oV259UHS5ZNVzhcx0jvREZuULFY67+HftIp2QBLH2lVcYJQaS5OdWNhe0LWfBFhJFlzd04iDWES3TnDDzVrFvdeXBmWXa8+zXArX+G6qUSgwmy6p/PNYOL1hcJZnJ7Mqlth0WHNSE2wK04Rl5Z5zk8NXMlqLL1GyvKisxW4z6va4R9pUMjJkzmTw/w2zf8ivsoboAgZprgiDHWZUn0hUKyUKZEb2syWVlFSveXqpwU0qwHMth4LUhRo6OlbIiQgh8MR9dj7Vxz68e4D3/+n72/Mx2Iq3hDV3OcruSGEyW9ZoISdB0qL6izHTjvlq3Ab84GcgnCkycnrxtyvcWIp8sMFf0DBSSINISKhNpUP0K8a6rE7C5geSKF9kA9KhGpKU8mEsOp1xp9lVgZIyyzKIkS0uKS8iaTOS6YDI7mV1V72UhWVi14t+tJtZRPpkuZAzX13aFmeJbiWPjqR6uFMfBNuafNFmRblpsI2tyWQk/QGYiu2phEjNvzith90W1Fc/F0uOZlY8DDgtnIjf4MzvWHinrVzbz5uqfX0U/ymtRA8qCnq2Vkp3OzctWeqwNnnXGKjHSxop7ZW53zKxJ38uDVF1TrlWzvYqqzbF5vZjXImRB06GGUn+j4zhkZ/IMvTFS0aq8FtLKmp6FLNj8RAdNh+pXdRyBGn9ZSY2Q3BIXSZVWnCUAV2xnpT1YqyU5kubYn59Bj+o07K9DUkRRAl4i3BgkWOenbk8NOz+xhbETk3T/+HJFar0elWFkTbqfvkzbg82lYDzaGqF2ZzWT56eXFBxqe7i59KB11XzdzPrtKnYC7jg42ztbUkaOtITRI5pb6o2bkYt3xoCimfxAclX9eopPwXedanT9nlqe+p8fXNX588X08hVs4VoPybq8oFCGJAv0SHkwmZ3JlQmlVIqRNW+6ifmaINxS42vJzeTIzuZvbfAliv1e1X5iHVFi7RH81T58EQ0tpKH43N9V1tw/WlAty454LI9jO25G1qEsmFKD6k1blJRkMa9EsWpzjPf/x0dWdR9qIZXAdduTVBnFJ2NmK99eIW1g5e+M56svppeJ7OkhjX1f2Mm2j25a8baEJOZ58wpJoPgVhCxWVdZuZE1P9G+d8ILFVWLmrRWLq7wb6H7mMnt+ZocrCIA7eNTvrWXordFFS8KquqLUbItfHWQct8F88O2Rir5T9pWrgAoh8Md9rorsGiCEa1wvKasLFm3LLivPXVccmDw3xXP/96vs/uw2tn64C1/MVzIIl2QJX8SdCIebw3Q81srs5QTnvt3NwKvD5GZzWIU777pdKxzLYfzMFBNnpkq2GZIi0f5IC30vD5EYXFioJtoeoWZHdalf0S6Kw0zcpiWoVyikDaa6Z0tGx9HWSFlQp0dd2wxwj3luIFmyzVgJkirNE9jQQipVodgN7f8VhLhqbL9QsChkgXJd9YGZs1Y1obFNG6tglc7Z7cT1AbuRNbFuxeRMuL9/vDNK28MttNzbSLgxiKxKCNk1+xbSteWl4rap4NmI2KZDfq4w75r1x3XXd/X/Y++/niTZ8vtO8HNce+iI1DpL66pbV8vu2xLdQEOQBAmCIIdqx8Zmdzgvu3/CPszT2K4Zd3eWNssZw5CDIUAABBsAu9EafW9fLaruLS0zK7UMLVydffDIqIxKnZWl/WNWbX0jI9yPu59z/HzPTz0EhKasyZSp29quXEfXPb4I+4xmajsSi17d27WHwxOFCOtBKtrd561oCvHuGPHu2CY/3MEpmnUvhbI7sRi4PoEbicUHQSQWd0ngba+209NGeabCxPvT7Ht7CAgHd/8LPdz4m9vri0UBvc91kxlJ3a2NVvMY+8UEbmVrgaXoCpqpPdYulVKyrTqHe3a+IHS/+fBff87NH49z6veP0numCztnhbtyQjQFsEDVDXpOdtJ9vIP8WJFLf36NsV9MrEnwEbF9ags1bv5knM5juVYsXu9zXeQOpClNrZ/oYOiVvlYheYDqYp2xv5184p+BV/MojBXx6j66rRHvtol3xxBquDjvOJhpbfSUZ6uUZys7tkIJVaDHHoIFYxMxIRTR2iBbwXf83b0DmvVOCYDde1w9Eu4tE+M7Pv5DXpwpukL3iU5O/P3DjHx1cM1zWUE2a8wFfoD0w/e1DCQIcV9hB88qbs3FKTuYqbsbBvHe+JpyTg8KPa4/llnjpRc8Mcmd7gfVUNHMxzu/xsNeiz1LPPYz5nqF5oWy+2B0oYT/1jnR7g74jOE3fG79dJyRNwdarpyZkRS5g1nmLy6tcQexMiZdxzuwmlZAKSWNQoOxd7ZXHzHc7Wt/2DKQVBdre5p9tLpQeyLF/8LlJX7xf3+f7hMdjH5tiJ6TXaQGElgZ8x5XW0F2X5qX/y9nGXy5jy//+ArTn85GLhu7wK15zJyfpzRdacUqqrrK6NeGmfpkdo1LshHX6T7d2arlKQNJabLE9Oc7z+T5OFLPNyhNlckdyIRZkkdS6LZG4AZ0HL5bjqI8U6E6v7v4FmUdoVjPN6gt1cIYtD2gNFXZcNEn14sxuo9FkwxkaKV50kxda26BeKiLR0UTjHxlkFf/+7OkBtrjhAMvoF5oUFuu45Rc3KqLV/Nwqi5ezcdr+PiOj5nQOfo7uy/A/qzi1jwqc7U2sWgmDOLdMUpT5QfuiryeUHTKDtXF+p6FWVQX2jPlRtxFUcWaOc93A6oLtT3N5t0oPGK39oh1eexny3WzhxoKiirYzTJ3vcLmSPnMxR/ulsCTzF9YpDBeIrs/DYSuCIOv9DL+zgTlmfbFYO5gho7D2bsLCgmzXy5Q3GZducAPCNx2l63Al9z+2R1u/nR8z66rMld9YuP6Ajdg5vN55r5cIDWYpP/FXnpOd9JxOEtmJIWiKa17p5kqw28OEOu2+eTfnGf83akn9rofJaXJMpMfTIdJm5r3dujVPmJdMZxye2bcjiM5sqsygnp1j4kPZh54qZWHRb3QoHCn1Eo+kdmXRrM1XOm1ZS8sz1Z2lzVTynXdNmfPz3PxT6/u2dzdKDgbHksGErfmtQkMrekutRuEpjzW3hIbce/9UY0w1vth0XOmi1f+1dm2zLWBF1CcLDP7xTzzFxdZup6nNFWhulhbd27LHcxw6Nf3RWJxh7hll9J0mdzBTNvn3cc7mD2/zYL094Ff99bMAYvX8lz806tUF/YmG6/f8HFrT2A88UPAd4PQo27VM3BKDle/f4OpXZQw2ojCeOnZcOt9wnjsZ8v1EgFolrbrF5RqqmteEjLgoSUoeRqoLdcZf3eyJRYBes90k+xLUJ6ttnaFFF2h41C2rWi59CU3fzS27XNJP1ykBW6wSuRLqkt1pj5+Oiwze0XgSfK3i+RvF7n54zE6j+Xof6GXoVf7QsG+anHaeTjHmf/qBPmxEvmHUPbjaaO2XGf68zn2fX24FTsb67QZfKWXwlihZe0SiqD7ZEdrcSulpF50uPWLO4+q6XtOvdBoi9XMjIb1EGUgye4L5wjf8SlPV3aV3EYGzdi4ht82d7tVj+nP5x9KjUoZSNyqh70qc78e03ZVm0/RlPsSmo+Se0sE6DHtoYkuK2Ny6h8eJbkqo7Dv+sycm+fin15j8sPpp2YD5nGkXnTI3y4y8lb75/0v9fDlH1954GLRrft4dQ/dXlW6oe4xf2mJwjayqkfcH4Eb4FY9pC8R2srGfUBpuhKtxZ4BHvvSGestBKysuesXlJk01mS1k1LSKEcvme3ilF2mP51tW/jZWYves91taY9jHTadR3NtQenFyTIz5xd2dL5GodEm5oUQexZQ/bRSzzeYeG+aT/9/X/D+//NTLv3ZtTUppXtOdjLylYGHahl4WpC+ZOnq2hqJB745gqKvGgOdNp1HcnezL0qYv7BA4fbTs7hxyi6lyXLLBT01kMBMmyT7E625tl5oUJre2M1zK9yqS225PSY61m0/NMEVeMEaoWvnrDUxfNtBs+6vVM8jQ4Zxp6uxslZYY/QhPIaeM110Hs21udfnx4qc/3eXuP2zO9sWiuEze/KE+qPGKTss3yrg3lOqoutYB6mBjWuU7hWBG6wp02BnrfsqtRCxM2qLtTbvAtVQo9rOzwiP/SqxulBfE0Cf6I3vunCn3WG1FWCXUuLVPOrLOy/u/KwiA0l+rMTchVWiT8DIW4NtwjA5kKDreHsR57FfTuCUdmZdqC7UqC3ddTMRigjjo57AnfmHjVfzmPx4hk//7Zdc+OMrbfWghCLY99Whh5ag4GmjMFFi5vx8m6t8dn+mzfUydyBD7mCmzYX6xo/Gn8j42I2QvqQyV6XaTHCl2xrp4STdxztaa/LaYj2Ma9oljZJDebq92HJuf/qhLRT9hk9xst113s5ZGImdl2AwkwZW5slcYOVvt3shaJZKsi+xJkvlg6DnZGdbvJzX8Jk9N8/UxzM7ShRlpcz18xZEbIr0JYXxIoXx9o0uM2Vy8NujD/z8vuOTv9V+7uRAYs3mf8SDozhZajPg6LFwro/2Xp5+Hvsp06m4lKbuWSQcyLQJvu0iFEFqILmmuHL+djEqJ7BDKrOh68Fq3/LOI9lWmnzVUMjuS7clIfAaPrd/cQd/hzFyxYkypdWxkALi3faaAtERGyDDmMybPx5n5rO5tj9lD2TaUmFHbB+/4TP7xTz58bsiQrPVVqZgRVPIHcyQWuWGXZmtML2H8R2PC9XFGuWZu/N0x8Fs20ZRdbF2X2KxtlRn6Wa7UDFTZlvN1weJ1/DXuLqpukrHoeyOrYtW1iLetfP31+PA3JeLbf8thKD7RAeJh+DpEe+OtW0OOGWHpev5HSfpyu5LIXbhPhxBuEn85WJbAhJFE+z/5vADfx97dY/ZC+39z0jo5A5m0Kxow/NhsHg1T31V6SNFU0j2J0j2xTf5VcTTwGM/Y/puwMLldlcvK23Sd7YHY4fWxXi3Tc/pzvZ6Wc2EKxE7w2v4zF9aatvpUw01LFauhnUQ+57ratX/A5j6ZIbixM6zphWnyixdW25ZcIQQmGmTA98eiXaId0BlvsryvZYBU217Rk8ageu3MkuusFIv72EwfyGsubiyaRIme+pDj+vEe2J0Hsu12iKl5OaPx2mUnj6X98pcjfJ0pfUcOo/m6DkV1qEM/NB9rDK7u0yoAPXlBvMXF9vd0RXBke8deCibHV7NY/Hqcnu2ZwEDL/VixHdmVUsNJsjsS2/9xceQxevLlO6x8Pae6aLzSLbNPXTPUUIrxuqafr7j7zgGVtEU+l7sbdU7jdgZ9XydqY9nKE6VW2NdCEFqMMnZf3lqx2uynRBakufawimEEOz/5gh27sncfNkrfLdZHmb1e1ARex5isnQ9T2Gs2LLkr2S/HnilL7IuPuU89jOm3/CZeH+6zc1EKIIjv7mfzqO5bbsiKrpC3wu9jLw12JZNy2v4jP1yYs/b/SywfDPPzLn5Npe6ka8Mohoq8e4Yvc91tz4PvIBbPx3fVUFu6UsmPpgmP1ZsTYa6rbHva8P0numOBOM2UQ0V3W6PlXIq3hNtVfca/poi6rqtPbTFg1N2mfxopi0LcKzTpv/5blIDCbqO5e7WF6163PzJ2FOZfba6WKM4ebfGZO/Z7pZF1Sk55MeK95WSXgaShUuLzH4x37YgGn69n6HXBx64S7oMQhe8+Yvtlo3BV/voPJLd9kIp1mHR/3xPq4zKk4Zbcbnxw9ttc75ma5z8/WOh+/WDegxBONZXl0lRNKV943cLhALDbw3QeSQbhTDsFgmTH80w8UH7mkzRFUbfGuDF//pUGMP2IG6vDL2Mxt+ZbOt/vae7OPCtkWfauug7fmhhXzXFaqZKvGtvLf6BF3DjR2PUC43WPBzrstn/9WE6DmYiwfgU89gvswMvYOb8PPl7EkLEu2M8/y9OkjuU2VIsKLpC/ws9nPwHR7DS7S/piQ+mo0xau6S2VGf2y4W2xBPJvjidh7PkDmVI9N51TciPFZm/tLRrYTJ7PoxN8Wp3rYuZkRTP/fMTdBzJ7WoHzUjqJPriaPaTkWzCTBsk+uK72hUXiiAzmloTQ1oYKzzZdaUklOeqbf0q1mHRfaLjwVo6VjHz2Sz52wVkEKYU12MafS/2khpMkuy76/I++eH0mgQhTwvSl5RnKq1smWqzXIsQgnrBWTN/74blWwXG35lssybpcZ2X/tsz9D7XtetkM8n++LZiD8tzNSY/mmmLoVcNldN/cJxEz9ZuWKqh0P9yLyNfHXqsC1tvhlf3ufGTsTbr4oor6nP/7EQYn7tDISZUgWa3Ww3Xo7pQa7PsGgmD3P7MtuZ+oQpyB7Oc/L0jxDrtJ/b+Pw7U8w1u/M1tFq8ut0SbEAIjYXDktw7w0n97hs4juZ2LNxFu9G1mqa8u1Lj5k7G2RDdCEZz5p8cZfnNwV+9y1VBI9Maf2A0cAGR4b1YnnzFTJj2nu/bcujj2y0nmvlxoe/Z9L/Rw4veOkhlJbTmO70UoAitjEu+ORfkTHmOeiFVybbHGjR+PkRpMtGVBHXipl1f+1Vku/slVFq4uU1uotcXDKboSWrjOdHHy947QfaJ9oVxdrHHl+zee+BqLQhHhLus6E6WiK2iWhlf3d5QEYLssXFpk6UaeWM4GEe72Dr85QGKVD7uUoWXw3kxmO8F3Ai7/55t0HM7R93w3iqqgaAoDL/Wi6iqX/+I6cxcWqcxWNhSkiq5gJg1iHRaJ3jhdJzqJdVhc/NNra1ydHzeEIhh8pY99Xxtm8uMZ8jcLlGerVOa3rg+pWSpdxzo4+jsH25KvyEAy/s5ku2vdbtunCjRLW3fBrlkqmqWGloEHIEwXLi6x/+vDrXgmM20y/NYAc18uMPvF/AO3nFbmasx8PkfPqTABh2pp9J3tQre1lmD1HZ+xdyafShfUFcrTZaoL9TVW3UYxtCzeL4EnGfvlJF0nOtj/jWE0U0Moguz+NK//317k4p9cZebcPKXpSmtT6V6EJjATBnbOItZlkzuQoftkJxf/9CrTn8yt+5sVnJLD5IczDL81SNfRXOvz/hd7OPNfHefCn1ylMF5ct4+bKYPB1/o584+PP7B4xU3HoKmhmhpSevc9BgvjJS7/p2s8989Oti3s9399GM3SuPTn11i8shQmp9tgbtGsMItirNMmNRhaoCfen6a2tHGiuYXLSzglp+Udodsafc9303e2m+nP5jacB42ETveJTk783hF6TnXuqtzJdlhx+9MsbU3x8pXPAy8IXdaf4P05gOnP5rjy/ZvEOm3i3bGW+DYSBoe/d4DMvjQ3fzTG/MVFSjMV6suNNesPoQp0W8NMGdg5m3iXTXo4RXm2yvUf3Fr3vDKQzH25yLUf3ObE3z/c6n9m0uD1/+sLxLtspj6dpTRRxqm6695noQiMhN6KHc6Mpug728P4O5Nc/5vbD7wEyINi8doyjUKjNT6MhM7wG/3MfD7H9Gdzazxwdovf8Dn37y6RO5BpjV3NUDn03VGMuM71H9xi4coSlfnahvdSNRSsTHj/k/0Juk92EngBl/7T9W3X4I54uDwRYtEpu9z66Tg9pzoZeq2/bedy8JU+cvszTH0S7u7X8w18N0DVFayMSfZAhoGXe7HvyT7n1T2u/uVNpj+deyImByOh03OqC81WUXUV1VBRDQXFUNCMcIGQGlybvrr3TDfIcKHjOaHLnu8G+I4f/nMDKjNhLNtuJpPCeImFy8v0nu5Cs8Ld4cGXezFX7dLV8w1mz8/fdw2s5Rt5zv/7S8Q6LDL70gghUHWVgRd7ye5LM3NunsWry5RnK7hVj8ALULTwO3pcx8qYJHpipIeSZA9ksHMWS9fzXPn+jftq10NBhNkXD3xrhJGvDFKcKLF0Pc/yzTzl2Sr15TpOxW3GLkgUVaDFNOysRXZfmsFX++g63tG2UFq6mWf83cltbSIIBeI9cToOZsJC3IbS1g81U0OP62s2ZCBcRKaHUnh1r9nvAnzXJ1j1//O3ihR2+ZKY+nSGymwVK2O2rFndJzp44b85ze2f3WH5ZoFGyUEG4X1RTRXN1jBiOoqhMPPZ3JokWjtl7J1JDvzaKEbSQFEE6aFU20J6+XaRhUtLT6UL6gqlmQrVpRod3N2QCPyA2mKNyuz93d/WOabKXPrTa8S7YqE1UVdRVIXOQzle+Vdnmf1igflLS5RnyjhlF98JUNRwEa/Hwjkg3mWTGkqSHU0T74nhVlyu/uXNbZ1/4coSN390m2RfvOWlomgKR3/7IMm+OHd+NUVhooRTckFKVEsj3mXTdayDfV8bItmfCMuALNUx0+bOsnoLSPTEyB3KhuNOV1rjTzXUcAzGNDqP5db8dPTtIZJ9cbyaF74HnIDAbY4/x8d3fQpjJfLjxS2FjFtxufE3Y2T3pdnXFIgrDL3WR+fhLFMfz7B0s0BlrtqqkysUgWaqmGmDWIdNciBBdjRNaijJzOdzzF1Y3FQszpybpzBRCi2DzTVA7mCGs//iJMkfhJau2lKYPV01VMykEWbkPpZj5M1BsgfSKKrC0o08RsIg3r1zC6OVtcgdSGMkDTRDbbv/qqGimirZfek2S7UQgs6jOc7+8xN338HOqndw6z1cYflWcU827x400pdc/8EtzJTBqX90FCtttu6lqiv0PddN19EcyzcLLF5bpjhRpl5o4Ls+AlAMFSOuY2ct4t0xUoNJUkMJjJjO5f90fUOxCKFH07W/vkmqP87IVwbDdYcQxDtjvPx/fo65i4vMfblAcaqMUwzXPSvn1C0NM2MQ74yFscOjaZJ9cVRDfeJzV8yen6c4VQ7FuxK+B3MHs7z435zm5k/GWbqRp1F0wjqJajgWNSucM1RTZe7LxW172c2em+eLP7rM8/+nU606w5qpceCbI3Sf6GD6szkWry23rJ3SlyiagmooGAkDO2uS6EuQ258mPZLCTBqMvzsZJdt7jHkixCKEouTL/3AFM2U2F71hp1qpuXfou/uQgcRr+ASuj6KraOb6hY9XsnJe/ovrOE/ITn+yL8HL/91zGElj1SIhfFGtTAzr0XOqs5VoQkqJ7wZ3F+nNRcL4O1Oc+8MLVOZr6x5jM3wnDDof/epg6IKgCLIHM22iZP7SIsu3CntSLuDOr6Yw4jov/Nen72ZfE2Gc2P5vDDP69iBOycGtevhegKopKLqCEdfDl8pTEKuimWpYkuFABhlIGkWH2nIdt+LiOz5BUxTpsfBlvHpxtUJxqswXf3Q5tPhs47Eomkrf2W6e/5en2hdHzb6IYMM+OPrVIUa/OgSy2QedtRsWF/74CoX/cGVXO+7FO2Wu/ZdbpEdSrV1VVVfpf76HjkPZ0D2y5LReWFpTLK7Uunvnf/jwvsVi/laB+QuLZIZTqIaKkdDvikUJkx88vS6oK1TmalTna6E7brO/+Q2f/NjeZpuePT/PZ//2S87+i5P0ne0OrbcidLsafmOAodf6cSoubsXFc/xwg0BX0WIaekxHuY85wK163PzpHTL70uz/xkirv2mmyvCbA/Sd7aE8G/Y3pESzNGJdMWI5C6EIfMdn6pNZpj+b4+B3RjGTa4XdRiiaQs/pLl78b87seAyOvDnAyJsDd8eg2y5YAjfg0p9fp/hHl7e1eVSaLnPu319CqAojbw20SmcIIYh12hz8zj4CLwifQ9XDd30URaCaGmZKRzN3vvQoT1e4+pc3yR3IYKaM1mZh//M9ZEfT5MeLoVh0AlRDwUwZpPoTbe5t+bEin/7bLxh4sZejv3Nwx23IHUhz9p+fJDWYaInDcNNM2dBiKRRB55EcnUfCZy2lJHCDdsHo+oz/corP//AC1YWdv4cfBU7Z5eJ/vIr0A079/rE1Geo1S6PreAddxztaJcpWPL9W+q5yj8vidr2flm8VOPe/XQQhGH5jIJzLRRg/2/9CD31nu3FrHk7Zac09qhFad42Esea8TwOlqQo3fnj7nvGh0HOqi+z+NOWZKo1Cg8CX4Sa6qaFbajh2BXz4rz/ftliUgeTqX95Ej2kc/90jJHqasZGCMDtqf6JVm9ZreKvEYvhuVE01cgV/wnhixGLgBUx/Ossn/+Y8p//JcfrOhrvKqxFK6NbAJn7r9XyDGz8e4+KfXKU4uftU7g8bzdZID6fWJCjZCUIINEOFe/zCEz35+/Jrn/1igcJYkfRQsrl7fLeNvuMze36B0h7daxlIbv50HLfmcfIfHKb/xd622DRFDd0brMx2DhbukD4R1h7Jhi41VsbcdryFDCTLNwt88R8uc+und7addl4oYRbizMh9pEdvLmY1S0O7p8ycnbMQAuQu9xOu/tVN0iMpjv72gbZFm5k0NrXeNErOnmwgBJ7k5k/GGX07rFsphGgF+1cXa8yen39iNqZ2i1fzKE1XcGteSyi7NY+l6/k9PY+UMPXJLI2Kw6nfO8qBb420xboIRWz53O8eLDzeTqw5xYkS5//dJRRVYfSrg21CyUjo5BKZdX/nOz5TH8/w+f96gUbJof/FHji87dMimoJ4T8agqaHdM2XEOrafmEQGsHQtzyf/8xeUZysc+u5+Yp1W2wJQ0RSstLkmT8D9cOun46QGk5z+R0dbFk2hhAJ103JaEhauLnHuf7vI2C8mCDy5K7FoxHVSA4m2klA7RQjREktw1wIZ78k/tDjrvaJRdLjwH69Rmatx7O8d2tDNN4zl1tmzapwS5i8v8fG/OU9pusyR7x3Ayt61bgpFYMT17WcqlhA8ARbdrbjxozFSg0lO/IMjbWVmjLhB7sDG86FTcXf8HnQqLhf+9BrVxTrH/s4huo7n2p69oinbL3Enw3fok+Dl96zyxIhFCIPrJz+eoTxXYfQrgxz5zQOkBpPb6uRe3WPm3DzX/voWEx9Oh7t3Ub/cE2rLdWbOzdNzpmvNwqA4WWbh0tKOa2FtRuAGjL87SXGixNBrfRz8zj5yB7M7KpdQmqlw591Jbv/8zp7EUz1oZCCZ+mSWC398JYwJ7Y3vaHKXgaS6UOPWz+9w80djLFxZwq2uH9f1JFLPN/jsf/mS6nyVo79zcFsJR/aa6c/mKIwVMU91ti2a5y7snWX9cadwp0Sj2LgrFqseSzfye34eGUgWLi7x0f90julPZzn06/vpOdW5owQJtXyDmc/muPnjMRauLO/g5LB0I89H/5/PWbqR58TvHibeE9twp1xKiVNyufwX17jy/Zvkx4qohkptsY6U8ondYZeBJN+08Mx8Nsf+b40w+tWhsMTFNq8p8ALyt4vc+dUU9fzGLqgrOGWXL/+Py9QWa5z8h0dJD20t2pyyw9g7k1z+T9eZ+3IBr+4zf2kRt+JiJKKC7veLW3G58eMxlq7n6X+phwPfHKHjSHZH1mMpZbNu7QJTn2yzDq2k1f+mP53jyG8dYPiNgTaRtBWNssPchUXG/3aC8Xennnix0ig6nP/3l6gu1jj5e0faEqw9CJyiw/W/uc3S9WVG3hrkwLdHSQ0mth0XHHgB+bFw/N/++Z2n3vvmSUbITbbyhRCP7cjRYxqxDpuuYzn6Xuih43AWO2uFsQSmiu+GJvDiZIn5C4thUpDbRRqFxo5dovS4HvqBr/qsulTbVQyeHtPWLGSrS/WwpMQmd1s1VZJ98QeysHAqLrWlGoG3+8dtJEM/9HsnCc/xqS3W9lQsriZMlGCTO5ih97luOo9kSQ4ksDMmiq7gOwFe1aW61KA0VaYwVmDuy0WWbxeoFxo4ZXdHL4iVpEnaqkWpW3PDSe4BjxahhrulVsYkPZKm+3gujLnoj2PnrNBi13S99hs+TtWjMldh6XqBuQsLzH25QHWhFl7zToWLoJkc6MEk56jl69SXd15W5V70mEZqKEnf8z30PddNZjSFnbXQYxq+E9AoNWgUHcrTlVY8zfSnc20Zfe+H0//4OK/8q+da48B3fD76n87zxR9dejIs2OugWSqxTrvlyeE5PpXZyrrzhR4Py5aoK4l93IDybGX9axdh9uSVRaXvhfGNO93EUA0FO2uRHknRd7abzmMdpAYT2FkLzVIJPIlbdannm3PAeCl0jb9RoJav0yg4u07+pcc0En0Jht/sZ+DFHjIj6dDKL6BRcilNlJg5Nx9uSo2X2qzLsU67Zf2UUobxfZtd+wMeg/VCY9OYwc0QqsBMGSR64vS/2EPX8Q4yIyliHTZ6XEcoYZIyr+ZRma9RmiyzdL3A/MVFihMl6ssN3Jq3al6SyE0mVM1SSQ0k6X2+O4xZ358O50AzfN71fJ3CnRJzFxbD+MlV8VoQWp5SQ8mWS/J2rl2goMd1Yh0WQmPP5/u9eA8/ajRLxcpYpIeTdJ/spOtIB+nBJHanhRbTUBSB74ZlHuqFBpX5KqXJMguXl1i4skR1oUaj6Ox4vSDU0MMmNZCk74Vuuo91kBpOEeuw0G0tDFGqe9QLDqWpMsU7JRauLIVxdYt1GkVnWzkbjIS+phxFdTFs807R4zqJ7r051r1otkZqIBG+B88234M5Cz2mh+7hJSd8D86seg9+Pkd1y1AkgUCwZnwK0GM6sZxF57EcvWe66TyaI9Ebx0zqLRd8t+JRWahRmiqzfCPfTEhWplEMQ4d2si5RTZXkPZvm9zOHRYCUckOB8cSKxRWEGmYCVVQRdhoBLV8aKQl8ifSD0Ff+sb+aiN0SZoQVCDXsC4iVKQ2QEikJi9YGMnR3eMKtPEIRYd9v9vvVfX9lKkeGu/+BLwm84InfNd0Jiqa0+oMQ3M1OKCVShu4uK/dmL+/L6T84xiv//dmWWJy/tMh7/49Pmd7ubnnE7hErz70Zx62Eo6FtDgjC98FeP3dFV1rvoba+FoRj71l6/6w39lbPxSo6+1Mv02+fCIXROnNxyV3gw5n/yFY3TdHC979QlWYJrXve/V6A793/ve+0RzmUeZ2Ylgbgs/nvs1SP6jNviIB0rJtDHa+RsXpZcu5wefkX+IG7djyujMm9EMkrc4CqIFSxpk+sPuez8E7c/D24s/kwrmfZl3qJnDVI0Znl4uJPcYK14nLtmnxFf9xdk6xelzwr8+KTwGZi8YlyQ10P6Ut83+fJ9zaPuB9kIPEdCTyZ1pud0ppw3UfdkseTwAsIPOAhzgx6XOfgr422djoDL2DuwiKLVx/vsixPDTJ0UX8UFtxHdd7Hka3GnirA1V181UcRCkJoCKGENovmwlLztuceGniSwPM3PNdeoaCiKya6GgZbi62KOz/rSOjWD5JhEM0xyPojxJ1u5msbZzndq/NGY/Eue/ke7LL30xM7iK6aWFqCuepNpiqX1nwvWpM/nTzxYjEiIiLicWD49f4whrq54K3MryS2iRR9RMQKgfSZr97G9etoitn6lzX7sLVUJMSeElSh332WQqCKPUtvE/EIUIWGsmpsRs/z2SISixERERH3iZE0OPCtkVY5DhlIlm4sM/P5/CNuWUTE44UkYLkxyXJjsu3z4x3fYCBxHJVILD4NFJxZOt0Ctpam7CxSdOYedZMi7oOSs0DFXSau56h6eQrOzKNuUsRDJBKLEREREfeDgOE3++k+2dlKfd8oNpj+eJbS9JNTniciIiJir1io3UbKAFtLUXTmqHr5R92kiPtgqTHB9cL7xLQMVXeZkhNthD5LRGIxIiIi4j7oOt7B0d86iJ0L45lkIFm6WeDWz+9EwfsRERHPJG5QZ6Z69VE3I2KP8IIGc9Ubj7oZEY+ISCxGRERE7AJFV+g908XpPzjWblUsOVz/wW2Kk5FVMSIiIiIiIuLJJhKLERERERsgVMG+rw+T7ItTLzTw6h6KqhDvsuk8kqPzWAfxnrt1NwMvYPKDaW788HZkVYyIeFqJxnZERMQzRCQWIyIiIjZAURWGXu3jwLdGwnIlMiwbJRSBaqhhLa9m9lMZSBauLPHh/+tznEqUAXUvUIWGECpIiS89ZKs0jkARKgpKe+0wJIH0V31vZwiUsJzDmuMGBDLY8XEFCqoSZg0MpE8gvfa/bnANUgYE6ySfbx1v1f0QCJRm+QkpJVL69/xWNO+jEtYfJCCQPttVPOvek1VtvZ/7/aSyuiC5IlQEyt3Mn7u8L/c+R1+2F2ff6DwrfXOnzxOU1tzV3u4AucPCB6v7+UZ4gbPtNraOKTQQYs3YUVBb5VZW+qSUEom/o3vxsHiwY0i0jr2TTMJr56P29m71PP3AaRsH22hl63lK6eOvOrdAbV5De53anc5V7ecTiHvn161Y856JWCESixERERGboOgKemzjF6eUEq/msXh1mV/+Dx9G7qd7huBYxzfojx+l6uW5tvwus9Ub6IpF1uyjK7afjNmHqcZRhIrr16l4yyzUbrNQG6fqLq8ruNZDERoxLUXWHKDDHiGhd2CoMQQCN6hRchdZqN1mqX6HmlfacJF1L92x/RzLvY2mmNwpfcGV5b8FBIZikTH76YkdIG31YqoJBNDwa9S8Avn6NLPVa5TcRVYvlDqsIZ7v+R3qXpGry+8wX7tNV2wfw8kzJI1O6l6J2cp1JsoXqPslFKGRswYZTp4hY/YRSJ/l+iQT5S9Zbkw2F2Lr3Q8VXbGwtRRZs5+02du6J6rQ8KWHG9SpuMss1ydZrI9TcZfx5bOxSRJIH1XoJIwOemIHyVmD2FoaRah4QYOSs8Bs9QYLtVs0/CrbWewmjS6OZN8iaw1SaMxwbv6vqPtlVKGTNLroiR245zwODb/Mcn2ahdptFutjGy7eBQqGamGpKTJmHxmrj4Sew1DjaELHlz5uUKfqLpNvTLNYG6PsLuHdI1jXR9AXP8LJzm9v+A3Hr/LhzJ/sKMlNb/wwhzKvYWkp7pS+4PLSL1CEIKF30mXvC++FnkZXTALpU/OKLDcmmaveoOjM4wWNbZ/rQXB3DKXJmv1kzF7iegeGarfGkBPUqLaNofwOxpBAV0zSRg+dsVEyzdIzmmKGoouNBVIgPW4XP+V6/r11/95hD3O263vhRt0Gv/9o5j9ScGa32VbotEc5kn2TmJ5lpnKVi0s/JZAecS1HV2wfHdYQMS2DrloEMgj7dmOK2co1is4cblDf1nkECqYaI2cN0hXbR8road5znc3uCUDVXeZq/h3mqje3fV3PCpFYjIiIiNgAKSWNgkNtuY5maai6glAEMpD4jo9Tdqku1Jj6dJYLf3yV0lQkFPcS0dw1N5rCJaHnGEmdpTd+GF0x276rKQa2nqLTHqHkzHMj/yFz1RtbCkZdseiJHQoFl9nZXGit+rtqEtMzdNn7KLsLjBfPMVu9gRvUttV+IRQUoWKqcUCQ0HMMp56jL3YEXb33GkzieoasNYAr65TdpXYBIJr3Q41haUl644c4mHkNW0uFbTUsYloGU4tzI/8BGbOfQ9nXievZ1iH6EkdIGB1cWf5bFmpja9qsoJK1BhhNPk/W6ke75z4DqOgYqk1cz9Id20/NKzJe/Jw75S8f+SL9YSAQ9CeOcSD9MpaWbPubrpjYWopOe5SF2m1uFj6i0JjZlrVCNJ+vqcYRTbExkDjJaOoslpZo+66mGFhagpTRja0nWWpMINfZxBAoZMxeRtMvkDMH0VVrzXfC52kR1zN0xfYxlDzNRPkL7pS+oOFXtmy3Lz1cv9bq63etoKJ5XcoWy/R17kVr7Cgk9Cy6atIXO8xI6nlienrN9w3VJm320B8/ykTpS8ZL56j7j2Y+VoRKhzXESOosGbMfTTHWfGdlDCX0HN2xA9S8IreLnzJZurANkS6IaxmGU8/RnziGrphIKZvWQh9lHctg+HcPX7o4QX1T8RVIHyeoN2srhlbc0Jq78hR3Xt5GiLvPM65n0BWTnHmQ/ZmX2uanFQzVIml00hc/wlTpIrdLn1LzipueQxEqGbOf/emXyFmDoSWX0FroS691PavviUTiSxc/cKn7Fbzg2djw2imRWIyIiIjYgMALuPmTMcrTFexOGyOuoRgqgeNTLzoU75SYv7BIfrxI4EauKw8KVTHImH0kjS56Y4cBSdlZpOFXwsWRULG0BJaWQhUaSaOLw9k3WrvTG6EIjaHkKfalXkJXTaQMaPhVan4RN2iABE3RsbUUphouzA9mXsNU49wpfYETVLfVfoGCqcWI6Rn2pV+iL34YKQOqbgE3qLeuQVcsTDVGzS9RdZc3FBiqopO1BtAVCz9wWajdRldsUkYXqqLTaY/gBHXSRg+aYrJUnyCQAUmjE1ONEW8uUAuN2TWLRiEUEnonOWsIVdEIpE/Dr+D4VdyggZQBoilYbS3VEkcHM6/hBHUmyxe2/VyfRCSSTnuEoeRpVEVv9sMqgfRQhIqhhs9ZESqd9iiaYnB1+R3yjeltn8NQbTTFCDcD0q8ihELdK+P4NXzpIhBoioGpxQEoNGY2cSkUxPQsndYIqqKHQsCv0mg9Tz98noodPk/VwtIS7Eu9iBd4jJc+29ACvXJHSs4c1wvvoykGmjDQFIOU0UPK6EZV7n+ZGdOz9MWPcDDzGqrQqHkl6l4pdG0VoUCP61l0xcJQYwwmT+NLj7Hi53jy4W9eCBQSRhdZaxBVaATSo9G8515rDKmYqt2yBtpaikOZ13H8KtOVK5se31Bt9qVfZCBxHCEUGl6FojNHxV3GlQ00YZDQc6TM7uYmFfjSZbZ6naIzT90rbVr3suoucyP/Abpioirh80zqnaTNnnWF706xtTTdsQMcSL+MpljUvTI1r9gSyZowmoLSRldM+pPHCfC5WfhoU5GbNno5lHmdjNmHEKJZ33OWmldCIjHVGAm9k6TR2bqOul9msnyBhleh5hUoOQv3fX1PI5FYfIIwhgewjhxC+h6NW+M4t8a39TslHsM6egglEadx9Qbu9PZdBx5nhKFj7h/FGBpY8zfp+zSu38IZn3gELYt4apAw8/k8M59HNaUeJSsLb4mk4VeYq95gsX6HireMH7hoik5c76A3dpAuex+6ahHTMwwmT5HfxKrTEzvIaOoFdNXED9zQ7al6naIzh+NXkVJiqDZJo5ue2H46rGEsLcFw8gxOUGOqfGl7bmMiXCANJ8/QE9tPxV1ivjZGyZmj7pXxpYsqNCw1SdzI4QceZXd5k8MJOqxhCo0Zruffp+DMYGtpDmffaLrmJhlMnMALHO6UzjNbuYYvPfoTR9mffqVprekgpqUpOO2LL1+6Lbc4RSgUnXnKzgJVr9gS56rQsLUUHdYQvfEj2HoKVdEZTp5htnJtm+6LTy7DyTNIAu6UzrNYG6fqFfADF0WoLSv0QOI4qtBJm70MJU9T80o0tmnpUhWdntghhhIncYMG87VbFBrT1LwibuAgEE1LYA5TTbBYu7PhsQJ88vUpFmpjaIpB0Zmj7CxS9Qo0/Ap+U+TaWpKcNUhv/AhxPdt8nqeZqVyh7pc2bW/VK1AtnW/7bCh5mpieRt2DZaalxtmXehGBYK56k7nqTcruAo5fAwGmGqfDGmYocQpbT2GoFt2xgyzVJ1huTN73+XdKOIYmWGo+l5IzT8ldpOYVmhsLq8aQPUxf/AiWlkQVOsPJ55it3thU/OesQfriR1ubCBPlL5goXWh7TpaaZCB5guHk6ZZgXKrfYbpyZQvxHwqoifIXbZ/1xY9i66k9EYu6arEv9SKq0Fmo3W65Djt+DZAYaoys1c9Q4hQJowNdMemy97FUn2C+dmvdYxpqjN74YdJmD0IISs4C1/PvM1+71bqXAoWk0cm+9It02ftDd+DAZap8cUur5bPOUy8WU7/2ddREOFC8fIHauS/xFpbW/a7W00Xi1RcRWnhb3PkFqp+cI6hsb/f4gSIE5oF9ZP/ubxDU6hT+5mfbFovW4QNkvvdt1GyaygefsvRHf/aAG/twEKaJfeYEqbffWPO3oN6g8P0fPFZiUVgWem8Xel8PaiqJYllhsLfj4JcreItLuFMz+IUiBI9XgH5ExKNkxZJS98qMl84xWb7QtsPc8KHiLlNxF1EVnW57P0IodFjD6KqF46+dw1fEm65YBNJnqTHJ9eVfUXTm2lw/636JojNPoTHD/rRLX/wwphZnKHGaQmNm0x361e231AT98aMUnQVuFz5msT6xJokJgKgqrZimrY45W73OXO0GgfSpe+EOecbsa7kyLtUnmCxfaC2EpitX6I8fJ6anMdU4RnMReS8Vd4kb+ffxpU/VW153cVn18s17BcPJ0+iqRVzPEtc7KDjbt6I9aaz0xVuFT7hZ/GiN223Vy1NozKIIhcHEKVShkbMGyFkDW1qMVp9jOHmaQPpcz7/PXO3Gun14vnYbTTEJgs37Ss0vcaPwARJJ1V1et2/VvAJFZw5f+oymnsdUY8T0dBgLW9tcLD5ohFDQVYu56g2u59+jcs9GSt0rUXYWkNLnUPZ1FKGR0HMkjU7yjelHkrCk7CxyPf8evvSoevlNx5BAMJg81bKQxrUsJXf9DUohVHpjh1AVDSllGIN8j1CEcN6aKl8krmXoTxxDUww6rGHmq7dx5KNd0woEphpjoTbG1eV3Kbvt1ry6X6LkzOMFDsc7vh4Kaz1NyuhmoTa+bgKmuJYla/ahCBUpAyZKXzBfu9l23yUBRWeO8dI5knonCaMDS0vQYQ0x8ZR7RNwvT7dYFILE6y+hd3cC4M7N4y0urS8WFQVjaIDUt76KUEOf5tqV69QvXnk8xOJ9oHV2oCQTCMNA7+991M3ZM2SjQe38RYJqFcWyUGwbY6gfva/nUTetDWHomAf3E3v+FEZ/H2omhWJbCF0PxaLnIeuNpmBcpvblpcdnk2I3qCqKZUIQENQbICPhG3H/SClZqI8xXbmyoStSxV1msTbeSnyjKyZxLbvuQrsndoCEnkMIQd2rcKd0fpOEDZKyu8hk+SJJo7P5r4Mue9+2E7soQsUNGowXP2e+dnvDBawk2JZlru6Vqbh3hZwkoNgIF1iaYhBIn3xjmrp315rlBQ5VL0+smRhE38BK4Et3W8kr3KDOYm2M7lhozRUI4nr2qRaLAHW/wp3yFxvGZ7pBjbHi53THDmCqcUw1QcbsY752e9sxnbpicqPwIVOVi5tagrZzvEB629rU8AKHpdoduu39mGoMgLie3dCa87CQUuL4NW4VPlkjFFfwpcd87RZ9iaMt91dbS6MpxraTo+wlnnS2PYYWamOhR4RhNmP6NhaLCgppI1zH+dKl5M5vGJtZ98oUnFl65WEUoTbdL3WcxyBiwpMuN4sfrxGKK0gCFmq3KTkLZMze0PNCS6Kr5rrzuanGsbUMAE5QI9+Y2XDcFBqz1PwScZlr3pduIBKLm/F0i8V7UOJxtI7cun8Tho7e3dkSik8TjZu38eYX0DpyVD8596ibs2dIx6V+7QaN2+MIVUWoKsmvvYnWmWOrrFcPC8W2SH71DeKvvYiWTYcCsUngOBBIFEOHlIGaSqL39eDNzm0/1fNjiDEySOrrb+GMT1B+98MnV/RGPFY0/CrL9cktXfmqbh7Hr4WuV0K0XLBWo6CSs4bQFAMpg5bI3BxJ0ZljuT5J0uhECIUuex8T5S/x/a3FYiB9is4sC5sIxZ3QCCprFsG+dHGDenOB3KDhVdrOJWWA64e/CROR3P8SoOaXwvhOgKZ75NNO2A83T/xS84os1yfpjYcL9biexVKTlLcpFht+lcnyhS1dBveahl9pS95kKPZDPf/6SPKNaUpbCF43aFB2FkkZ3UAouFWh8binLFkdrxeOoY3v+Uq8MITj3fHrbJRtVxLgBo2Wq7Gu2Dsqr/EgKTbmKDRmNv2OH7iUnDkyZiiOdcVEEzrrbaWpit5ykV2J7d2IoJnNOSw9pGBucr8jQp4JsSh9H79UDhfjHVlQVfDbJ2DFNNH7epCBBNcF9fEYUHtB4/Yd5v+/f4jQVPzSU5at0fORnt+aKoNajVYxvEeMMAzSv/5NEm+8grBMkBJnYorqZ19Qv3wNv1wBCUrMwhgawD5xFLUjS/3azSdaYBn9vdgnjxJUqk/l5kvEo6Hulza0KqzGC5zWAlvAuvXCYnqmmXFSwQ88Co3ZbVkH3aAWlhRoWu+SZhe6Ym0rY6QXOBQaM3sWz+c1F4GrkQStz7ygseZcEgi4G79zb+bXjRGrvrvqV+KebTlBW7bBp5WSM4+Umwv+QAbkGzP0xg8DYQyZpcY3tKTcS6Exs64FZW/Y5HkK0eaGvVH5hIeJRJKvT21Z1y+QwaqNi3DsPy7iaLN7vuZ7W7RZrPqx2GKtI1adN5D+Y1OCcrkxteVGiES2NreAZh3S9fuj2OS/1v++0vyebNbmjNiMZ0Msuh7u1AxaOoWaTaOmU/hL7YsOYZno/b0ElQp+pYKWzTyaxj4IfB8/X3jUrXjmiL14huRX3wBNRdbqlD/4hNJP38Fbzq/ZrHDuTFH54FOEaSAd54l13VQScfS+HoRx/0HwERGrcf3athbP4YJyZfyIsCjzPVhqsrULLfG3JUJXcPxKy3oXJgZJUXYXt/ydL12qbn7b59n6eP4Gi63w2gPprfv31swixKabagKlmaUxScroIWl0NrOf2miKjir00DqpaGji2RrvK9kVN0MStNUV1FVr3TIkG1F2l5B7+B4In6eBpSVJGd2rnmcMXTGaZQXC0gKrk5g8+m3X0A11e2NUtgvdLeoNPmjujqEUabOHpN4ZulIqYbbblVIOOxlDQTOL8kriF1tNIlDW9VZQRZjJOawxCHW/uGUs9MOi4i6xHeV67/PcaIPLDRo4fhVTi2NrydA6u8H+n6HEsNQEAkEgfapetD7eimdCLBL4+Mt5pOehptNo2fQasajEY2hdHXizC/ilMnpHxyNqbMTTgJrNkvnON0Kh2HAof/AJhb/60cYWwyBABgHSfdwdZjZHzaQxBvq23O2MiNgpgfT3bKGjKnpzZzlciO4kvf5KzS4IFy+6YrOyQ70Z4Xn2cHzLYNNztovmnWEoMTrsYQYSx8ma/S3rbFiXLCCQQbg4lTI8hXgyN7d2y3qJidYiw9IOTZR7arxthRc0thSk20VXLHLWEAOJ4+SswbsbJc3nKWVAsPI8H1PcJ6x+p6HG6LRHGYgfD2PuthxD2zuulD5ztRvE9TDeLmsNkrMGWa5PttWUDetr9tFpjyBEKIoWa3cem/u41/VYK+4yRWeOTjUsV9MfP07NK67JcqoJg77EEWJaWKvTDRrr1puNaOfZEIsIpOPhLSyhppOo2XsKuqoKek83iq7jF4v4xfK23VCVeAwtmwkTyOgaSEnQcAiKJbylfGgl2iZKPBYmo0nEEKqK9HyCSgVvYYmgVt/eRK4ItI4O9IF1EtlIib+0jHNn47pjWx4+lUTLpFFidni9ihIKHcclqNXxiyX8YgmCTcz6moaWSaOmEgjLQmgqIJB+M9FLoYi3lN/8GI858ZefQ0klQ9fTO5OUf/n+nrmWCttCy6ZRk8nQgidANhz8UhlvOY+sbRLMr6oY/b2oHdmwL0zNgB+gppKouSxqzA77fhAQ1Op4+QL+Un7DvicMHTWZREnEUGIxzP0jrQRDWkcO++RR/Ora4uXe7Py2Srgoth16A6QSCL25wHEc/GIpvNb61i8cJR7DGB5E6BqNm2ME5UpY3DweQ8tlUeKxsC/7AUEj7H9+voB0H48d2IiQlUXtXiDudd/awSJZItu+v303t92Lt43asVdiYjWmGmc09XwrO6OUkrpXpu6XmvX5ak0XWJdAeqjCoC9+mJie2fO2PK5s976vtgyKVf+7l+fYCl2xGEmeZTj1HIZqIWVYfqbmlXCbz9MN6s3nGZZ06I4dIGl07sn59wa5bgbMxxVLTTKaeoGB5PG2MVTzijhB6CHhBQ38wCMgHEP9iaPYWmrLYwf4TFeu0mnvI2V0kTF72Z9+mSntEtVmwquVEi798eOkzV6kDCg0Zpmv3drmRseDR+5xLG7VyzNbu0HS6MLSEvQnjiKlz2ztRsuVVVV0MmYfA4kTGFoMKQPmajcp7KAG6rPKsyEWhUD6Pu7MHPbJo2iZdOh+05zIhapiDPQhgyAUO6UKQtnCZ1zXMUaHsE8cxTwwit7ThbAskAFBqYw7PUf9ynWq5y7gLSxuuRgxRoaIv3gG89B+tK4OFF0ncFy8+UXqV29Q/ez8thavQtOxTx8n97u/ueZv0vcpv/cRS//+T7c8zr0o8RjmwX3Yxw9jDA2idWQRlnlX1FZr+Pk8zuQM5V++v37JClXBHB3G3D+KOTqE1tuNmk6hmAahoA9FgDMxRe3Ly9QuXA4X9k8YwjSwjx9F6DqyUad28ere1LbUVIz+PuyTxzAPjqL3dqPE4wgBfqWKNzNH/dpNqucv4k6HIvBeFNsi+fbrJF5/mcqn51n+k79A7+0h9uIZzNFhtGwGYehIz8MvFHHGJ6l+9gXV8xfXuM5C2G8Tr7+M3tuNlsugJOKtsWOfOIJ94si6l1L4wU/If/+HG5cI0TSMoX7sk8ewDoTXKmI2AvDLFdyZOepXb1A7fwF3Zn7TjQW9r5fcP/w7qOkkC//zv6N25TrmyBCxMycwD+4LN2gsE+l6+MUSjeu3KP70l7hTmwffb41ASyQxu/vQEilQVaTr4BYLOPMz+LUnr28/LYQL42afEWLduMaNuNdCtNc75I8SRWj0xg4zlDyDpuj4gcdyY5LZ6nXyjel1yy7YWpqs1f9MiUV1W4mBBNqqgvSB9B+64BEIuux9jKafR1MMfOlRaMwwW73Ocn2SqptfE9dqaclWxt+InaMKnd74YYaSJ1GbY2ipMcFc9TrL9SmqXmFNDcWYlqHDHtqWWASoOGFpmwPpl0kYnXTYQ2TMXup+GS9ooCoGtppsnb/gzHKr8DFlZ2t3+SeVQPrMVW5gKjEGkyex1ASDyVP0xA9Rb7qNG2oMU421MlMv1G5zq/DRA9l0e9p4RsQiSN/DnZkjdvYUajaDYlsEKxYPVcUY7EM2nNCitVXAsGkQO32C5NfeCAvCqypBqYy/uIRQVZRkAvtkKCKN4QEKP/hJKBY26I/GyBCZ3/o1rKOHQncBx8HLF0BKtO4OUoN9GIP9NG5vbSqXvo87MUX53Q8QhoEwDLSOLHpPV2gF3AVaR47E6y8Re/n5UCQKgfQDZKNB0HAQuo6aTqJl0+h9vVQ/+myDGydIfuU1Ys+fRmga0vcJKtWwlIkANZFA6+5E6+nCPLgfNZ2i9PN3d2SdfRzQu7tQ00mEIvArNeqXtldba1M0DevIQVLfeAvzwCiKYeBXa/jL+fDeJRNYRw9h7BvB3DdM4Yc/o3FrbF3B2DpkZw77xFESb72KMTSIrNfCBEhCoCYTaN1d6D3dGMODAFQ/+2LNMdR4DCVuIx0Hd2YOJR4LhZ2q4uULeIvL64pMb2Fpw/EgdB3r+BFSX38TY3QYxdDxKxX8xWVQFNRkAvvYYcz9I5ijQxR+8LNwc2IrS7QQqLks1qEDpH/9G5ijw6EnQL1B4DhhkqvuTqTv33+skKJi9w+TPvMS9uAoaiwRimgZ4CwvUTj3AflP37u/c0TsGieorSrULDDVxLZ/qyvGqnhHieNXeGyyRtwnumIykDyB1hTPhcY01/PvU2hMb7igUoTacul9VjDUGAKx6SJTINrqWPrSfejxYorQGEyeavXXkrPAjfwHLNUnNszIGyY+erae515iqDYDiWOtDajlxhTXl9+j6Mzu2RgK8Fmo3UYRGgcyL5PQOxBCwdZSCJRWts9CY4Z8Y4a52k2Kzmybm+rTiBNUmSh/gapoDCVOoylmmIjM6EQSjsGaV6TiLrFcn2Smem2Nm2rE+jwbYhGBdD28xWWk74euZ4lESywKTUPv7wmFy/xiKKw2QlHCRfu330bv78Uvlal8+BnOrTGCWh2hKqi5bGi1OLSf2NnTACz+0Z+t6x6oJBOkvvkVrMMHIQioXb9F9eNzYRIUJEoshnVoP/EXzzRLQmyB79O4cTu0LOk6QtOJnTpK6ltvo8RjO75zSjJB4iuvknjjFdSYTVCrUTl/Eef2nTCbpx8gdA0lncTo70MxdBpj61gVATwfd34Rb3GZxo3bOBNT+Mt5gkYoBtV4DPPoIRIvnUVNJ4m/fJbG7XEaV2/suN2PEq2nK0xUIyV+tYo7vXV9q00RAmOwn/R3vo65f4SgWqP00ec0rt5oijtQUynsE4dDS9yxMPve0n/8Pt7s+rWaAPSuTlLf/hpKPEbpF7+icfN26CorBGo6RezsKawjB9C6Oki+/QaNG7dCF+1V1K/fwl1YQijhBot5YB+Z730bEbNp3Byj/M4HBJW1FjS/UFrf2i4ExugQ6V/7GsbIIEGlSvH9j2msZIgVAjWTwj55DPt4eL0AS3/8F6G77Ga3UVEwD+0j/tJZ9M4OKh98SuP2eOu4im2hD/SB5+HNby9j4fonElg9/XS9/V2Mzh6qt69RHbtO4DiosThW/xDSi1xcHyVVNx+mTpeyVX9sOyhCxdKSrUQloVvm02Mh1hWLhB6+ZwLpsVi/s+kiF8BQLFTlGVlKNIlr2aZY3BghFBL63dwHDb+K4691yX+QrCyUgWbdzSmWG1Oblm7RFastwU3EzjCUGPHVY6g2FmbP3WwMqfY2rdV30VWbtNmDJkxqbpHp6pVWEqBA+niBQ8MvU/UKT5X3w1bE9BxxPYcQKoXGDJOVi62NQV/6eEE9jGV0i0+9eN5Lnp0ZXkr8QgG/WEbNZVCTcby5cCGtZTMo8TjO0hTu3AJ678ZiUevMEX/pefS+HoJqjcJ/+UlYQH21u6Sq0rh9h+xvfxfr2CHs0yewPztP9bMv1xwvdvIo1qH9oAic8SmW//Qv17gQNq7dQDoOybff3N6lel7bot7r70V6uxsU9rFDxF84gxqz8as18n/+V9QuXsUvFtutVrqGmogjNB3Z2HhiKr/zAbULV/CX8/jlMtzTrvr1W6iJGPbpE2jZDNb+kSdOLIb3QQ2tVsXSfVtGlXiM+MvPY44OIxsOpb99j/I7H4QZblcEl6LQuDVG4HokXn4e68hBYqeOU1r+FdJZP6mGYlsI06Twlz+k9M4HBKvLqigKztgdOv7JP8AYGUTr6cLYN0LtXHvh2qBcaev7ajKJbFr4gnIFd3I6jGHdJuEmwfMYwwPIeoPiT9+h8t5H4TFWXatzexx8n9jZ01jHjhA7eYzSux+ua8W8e3AV+9gRgkqV/F/+DbUvL7fH1wqBkowjVG1Nv9wJqmWTef41zN5+il9+ytL7v8AtLofnUVT0qyn8xsMvEh1xFzeoU3LmSRs9KEIjoXdga2lqW2TFW8kkueKGmm/M4AZPlufDZmiK2bo2P/Bo+NUt09sn9E5MZW0ty6eZrNUfxqpucm9UodJhDbb+u+aVtqwRutdoioFC+DwDufI8N9+oiusZLC35MJr3FCJaWZIBvMAN7/kWoiSpd6HvoNafKnT64kcZSJwAKblV+oQ7pfNr6q4+a8S0DMPJ03Taozh+jav5d1muT+5JXdtnnWdHLCIJyhW8hUX0vh7U5F23I30wzN4YVCqbWxSaFh7r6EGEqlL74iK18xfWxtU1XUGr5y+gD/ahppLEX3p+rVjUNaxjh1EScaTnU/7Vh7gTa5PP+IUSxZ+9Q/zl51FTD28SVzMprKOHULMZEILST39J5ZNz6ycVcT385a3TD/v5wqZlPPx8gerHn2OfPoEwTdRMZvcX8IhQLAuhNMXiOslddorWkSX2/CmEplK/fJXqJ+dC99PVBAHe3AK1cxex9ocxtLEXTlP56FP8DcQigHNngvKvPmoXis3juVMz1C5dQe/vQTEMjP7eNWJxr9G6O4mdPh6OryvXqX52Hr9wj5tIEOBOz1E9fxFjdAi9s4PYy2cpf/gZchOxKIRAqArVT89R+fDTtSJaSoLi/S/mtHSO5LHTNOZnyX/+IW5+VZxI4OMWNk4Bbw/tJ33qBYzObmQQ0JiZpHjhc+ozd+6KZSGIDR8g9+rbLH/8Dn6tSvrUC5jdfYCgMTfN8sfv4Cyub9Fe9xwXP6c+fWfL2OqniZnKNbpjB7C1FDE9w0DiONfz77ORS6mCSs4cJGeGAiCQPjOVa0/Vrv1qIaEIdUtrR0zL0GmPbFpE/GkkoXeQswaZr93a8Ds5a5hE06rnBS4lZ56693DFoh/cfZ5iG8/TUpN02qM7csuOWI1sczVWhIa6RQbcuJ4Nx5BibfssumLSbe9HV0xKziLFxtwzLxQBkkYXaaMXVWiUncWmRTcSinvBMyQWwS+FYtA8uA81lwFNBc/HHB4icD28uQWC+sYDTrHD4ulKPIb0POpXruPnN/B3lhJnfJKgVEZNJTFGh0LXxMbdXWi9M4eayyIUhaBW33Qh7hdKNG6OEXvu5G4vf8donZ3o/X0IRcGdm6f6+Zfbyj55v7gzTddJRSAMvS0Z0ROBcjfmVW6UwGW7aCrGyDBqKon0fRq37+Bu5FoqJe7sXLgh0tMV9tVEInT53IDq51/ir+MmuoI3Mx9a61QVJbFzN+adIAwDY3gIJZkIr/XmGN78BgH5UuJOzeAv5dE7OzBHhlDjMbxNxq+UkqBcpfzBOkJxr1BUYkP7EJpOY2aCxuzk9n6nauReeovM86+BADe/hNB0ksefI37wGIvv/pjSxXNIP1yIKJaNPTiKUDVU2wYh8CpltESS1MnnsYf3MfVnf4izOL+Dc/yE0sXPW+d42sk3ppipXGM4eQZNGAwmTuAHLpPli3iy0YxblQgUVEWn297PgcwraIoZZtGr3iDfeLp2rR2/Ss0tYuspFKGRtQZYrI9TcZdXXadAESpxLcNo+kU67BFA7GlNwMeZFdflI9m3cAOHkjPXtL6G9Q8UoZA0ujiceSOsfyclJWeOxdr4Q+8rblCn5oU1+RRUMmYfKaObkrNwz/NUsNUUI6mz9MQOhi62UkYlkHbB6jGkCo2cNcRSI0wmtHLPw2zMKnE9y/7US+SsQXY2hkRLhMa0FH2JIwR4YfKcwLtnu6uZN1n6+K1++nSiCKWVnTpj9jKYOMF87RZu0Lib0AxYuQdhyZiN6tVGrObZEovlCu7cAkiJ3tOFEosRlMsYIwPIeh1nYmrTcaTEbPTeLoQQ+NUawjTXL1HRRE0lQIQp2oWuo2bSbTFkaiZMtIMQocVts9IKUuLO3Gfs2w5R00m0XAYAZ2xi3diz3SIMHWGaCF1HaGqY/KNZJFrtyIbfESLMNP6EicWg3kAGAUIIFHv7RZjXQ6hhVlAhRBjbqSjofd0bfl9NJluJjISioGYzYVbPDe6fe2dq0yQ40nGaY0KE7pkPEGHoGAO94fiq10FT0ft7Nvy+mk7fTdqkqqjZNN7i0qbn8MsVvAc4joQiMLv7CRp1GotzrfuuGCZaMo3QwnsoPQ+3sIz0QtGaPHKSzAuv05idZPaHf45XKoCiEN93mK6v/wa5l7+Ks7RAffJukivFsrH6Bsl/8i5LH/wCv1ZFqBqdX/t1Ms+9Qvq5V5n/yfdb3w/P8RqN2Wlmf/hn7ef42m+Qe+UruEvz1Ca3TqT1NCCRXM+/R1zPtKwph7Kv0xM/xGJtjKqXR8oAS0vSYQ3fXdARUGjMcKvwyVOXHMENGkxXrjCafh5FqPTEDqArFtOVy5TdRSRgqXGy1gDd9n4sLUXJmUNVDGJaZlvnMNUEilAIl8xK+H5EYChWq+C2omhhUgrpN+vSrdQDlK0yD4+KFQGWNLp4oee3WajdJt+YxvFraEInbfbSHT+ILsK5v+6XmKpcpuDcb3blnRNIn8nyJQ5lX0MRKh3WEMdyX2OqcpmyM08gAww1Rtbqpyd2AFvLUHYXEQjiehbB1nUhDcVGERpCKE0RpLSSRq0kbVFQwuMJtfUcQwET4Ev3qbKKOUGNmeo1RlLPoQiV3vghdNViunKFirvUHEMJctYg3bF9mGqSojOLrljYWnrL40OYgXm2dhNbz6AJg/74Mfrjx9Z8TyLxpUvdKzWz4N6g0JjGCTb2eNIVC1Xoa56npSVbLs0giOkZfOmt8zy95vN8+Gu2kjNPoTGDodpoisnh7Fsczr615nuSAC9oUPXyLFTHmKlep+rlt3TRfpZ5psQiXugqGVRraJ2doVALfLSOHEG9vnWqfFVDsUN3GzWVpOP3/+72zy1Es0TEXRTTaC0e/UqNzQeXJKg93OB4YehhHT/AL5V3Hfe4GsW20Pt7MUaGMIYH0DpyqMlEGD+na6Eg0dQdVKN6/AhqtdAaJwRKItGqRbkrFIGaCOOBlJhN5te/SebXv7m9367T5+7Fr1QeGyEuVAUlHl6rGo+T/e3vkv3t727794q5hTCXD2EMCYFqh54HQf3uuezBfXR943sY2Q6EpuMszTP15/+OxuwkwjCJ7z+Calosvv/zUMQBBAHV8VtUbl4l98pXMTt7qE9PNIuxh/so9dlJCuc/xq+FG03S9yie+5DMc6803VKbzWqdw2bx/Z/dc46b4Tle/SpGZy+16QkIno2dVl+6XFr8OYdzb5KzhjAUm4zZS8ZcuwkopcQLGiw3prhd/ISCswflcB4zfOkyWblE0ugiZw2gKjod9hAd9tDa7wYuhcY0NwofkjZ6GU2dRdki0Y0qdI7nvhYm9FAMNKGjKjqqMFCF1rJkxbUsr/b+w2YGURc/cPCkhx84jJXOMVe9/kCufzsUnVmuLb/Hgcwr5KxB+uJH6IuvLREkpaTmFZksf8lU+dIjaGm4KJ6uXCZj9dFhDaMpOlmrn6zVv+a7vvQoOrPcLnyCpSXZl34RU906FnU0/QIZsw9VGGiKjiqa/xS9uSkQxsI+1/2b+NLFC1z8YOW5uizUxxgrfvrQM8U+KLygwVT5Ekmjk6zZj6rodNojdNoja77rBy75+hQ3Ch+QswYZST0H28iKGuCzXJ8kZw2SswZbmyz3IhAowkQ3TJJGJ73xw0yUvuRm8SMcf33jxFDyVLOvmM3naax5ngKFU53faT5Pp/Us/cBlqTHBWPGzR7IB0PArLNbHSZndzcywG90XFUONYagx0kYfvfHD3Ch8wGz1RiQYN+DZEouAVyjiL+fRujtQYjZqOoXQVIJqfWP3viZC0LJkSM/Dr1S3Xbg7qNWQ91pwVixn0FoAbohkT8TaThBCaWW5xA/uW1SomRTxV14k8cZL6J0drUQ8frV6V4wGPsIwMA+MPrGC0VtYJnBdVBEKPS2b2dLitRECAWqzz/lhPcugsf2EGlv1z8er8HwYUwi0yqoE23UXlZJgOxlGdyvad0JzzKx2QXYLixS/+Bg1niB14oW2r+upDHo6i/Q9YkP7MXLtCbb0dJhZT0tlmvVXQ1dwKSVeYRlnud1V120KQdW4K57bzjG8zjkyoTVfSzfP0Xg2xCJAzS9yeekX9MWP0GENE9MzGIrdSn0fSA/Hr1H1CuTrU0xXr1JxdzeenwSq7hLX8u8ymDhJxuzD0hJoiolAhFkWpRNaKpxZpsuXyTemUVDxpIOxxZJCCIUOe3jLbJtCCFShoaIB7fGQYZyg4FG50xWdeSruEpeXfsFQ8jRZawBbTaKpZqtsgRPUqLhLzFSuMlO59kgtoXW/zNXld8K2mv1YWhJ91fMMywmUKDnzTFcus9QUIa5f35ZYzJi9ZM2BTV1WQ+uxiiJU9Hti85yg+tSV6ii7C1xb/hUDyRNkzF4sNYmmGHfHUNCg5pcoNmaZqlyi0JhFUwy8wG1lWt4IXbHoiR+iN3aIpN6J69ep+2X8wFmTcTV0odcwlTi6aqMpBsOp56j7ZW4XP1n3+Cmjm6w12BKG67HiDaAIE/2e9nrSQRUaD7PHCxTieo7e+CG67H0Yik3dK22Y0ElBRVX01nOJ6zn2pV+i4VdZqt95iC1/cnjmxKKfL+AtF7CbSW607k5A4C0uhslItI1vSVhbMFyoB+UK5Xc/3LZrqPT8NQlgpOu2XABDq8gm8kgIxBZWor1Geh7S9UJX0ZgF6tYuKRshdJ3Em6+Q+vpbCMPEmZimduES7vQsXr6IrNeRjhuWNunqpPu/+5d7eCUPF3d2DlltpuW3LcwDI7sWi1LKVsmVoFan+sk56jdub/v3oWv142E53AoZBAQr11qtUfnwMxpj25y4JQ/UvXTbSEIxpygo+t1C787iPEuLPwdVJTa0H8W6uwBW7RiKYaJYNtkXXm9lk12Nm19Cuu2bBNL38eu1NRtNclV219Y5LLv9HOu4Hrv5pcespqlkvnqTuhfG3JbdhW0tuht+mcnyRRaaMWJFZ+t+0fArjBU/Z7Z6g6TRFS7+FRMBTXFUpuQutMUdbYeyu8RY8TNUYTTdF7efGXg9qm6eG/kPASi583j3ZGJ1/Dp3Sl9gKDEafmWNm2wgXeart2h4lfDeNNbeG4mk6MxxNf8uKaOLuJ7DUGyEUFrCuewuUXEXcZvJfYrOLGPFz9AUk3xjesP2B9LnVvGTVe5sOyffmOFhC8WKt8x46Ty6YjFfu4kvPapenuv5X5E0uknoOQw1hoKCL72WEKh6+W2fo+FXmCpfZrke3r9CY2aPioVLKu4S15d/RdLoImHkMJRY63m6QYOys0jZXWxZg8ruIuOlc5hqgnxj87jr1W3eDWV3Yd1soSV3gfHiuTBGmGBbJWr8ZqkKP3Bbx34UCagkkoIzQ3U5H95zPYeuWAihhG63zTFUdpda7Ss0wjGkKhqFxvpeCwKF4eQZRlMvoCoqhcYsM9VrlJ3FZimg9rlJESqaYmBrGfrih8lY/SioDCSOc6d0ft35dLZ6vVmCY3fb9RV3ac28FH6+zJ3SeXQlfPdVt+HCH0ifpfoE5MO2VN3ldcvPxPUshzKv0WmPEuAzX73JfH2Mqptv9oVV40gIFFR01SKpdzKcOoOtpYjrWbrsfeTrU1FJjXV49sRioYS/nEeoKlpXZ1iYmzAZzVZIx8FbyeTZTN9f+/Ly7ttSrtytMZhOtgrVb4SW2Z4/+14R1Gr4lWoYq9nVFSab2SV6Xw+x0ycQloVfKLL8F/+FxtXr61q2lMSTnYY9KJVp3JkMs4jGbOyTx6h9eXl3mVEDPyxgTxiD6M7MUf34871t8GOC9Dz8pWamUCFwJqefvGuVEreQR9F1tERqRz9180th7GFl/YyJzvICgbv65S7XFZbrI+6e48O/xS+vL1rWnuPRMlO9ykz16o5+U/fLjJfO7fhckoCaV9iyfMZOKLuLlAsbJGnaBVUvz7X8uxv+3Q1qjBU/2/DvvvSYrV5jtnpty3N5QYOl+kS4WNuC0FLx6ZbfC6THjfz7W37vcaPiLq1rTfalR74xRb6xNov5Tmn4FSbKa8tr7RWedFhuTLK8hfhbact2x9CDanPJmafkbO7tdS+B9Jiv3do0S+3DxA3qLNXvbMtaVfdL3Cp+vOl3MmYfg8lTaIpBxVvmRuEDFmt3trGBdQdPNrC1NDE9janGiWkpSu7auWm6cmXLtu6GjcbQZkgCFuvjLNbHN/yOJgx6Ygfpiu1DESpzlZtcL3ywrXMt1sYxtTijqedRhYatpdBV+6GXuHkSeObEomw08JbCQvDGUD/G8CBSSpw7W0/2frWKOzWD9H2UeAy9v5f6tZttGU53gre4HBYElxIlZmMM9tO4scEkpygYwwO7Os9u8ZYLeAtL6F0dGEP96L3dYeHzXViqtJ5OlHiYTdOdnqV+6eqGLoF638ZJTZ4IpKT6yTliz51EjdmYB/YRO3uK8nsf79gNUnoejbE7SM9HWCZ6Xw9KPL6nyYb2EiklrLhfqmqbdWvL3zoOjTuT4fiK2eG1xuw9KT/ysJCBT2P6DorxNkZnN8IwtrTW+fUageOgWja18Zs4S1sskHaRodBv3HOODcpqREREREQ8nnTaoxiKhURSdhZYqk9s29Oh6uabluM0AoG2g1IdjzO6atFhj6AIFS9wWKqPU3U3Lk+1GklAqbEq6aTQtiwv86zydDmKbwcp8ZaWCMpl7GOH0bJp8HycO9tIce96OOOTuJPTCFUl/vILGEMD21u8rfOdoFzBmZgkaDihm+YbL93N7ngP1sF96D1d6/7tQeHNLeCM3UG6Loptkf7211AzO7OWrCCa2e+a/7WhaBK2ReKVF9b925NE4/ot6peuIgljNZNfe4v4i8+BvsOJKJC407M0btxGKArWiSNYRw9uzyX4EaQ9l75P0BRHWiaNsHaQDdYPcCdncG7dQSgKsTMnMA/s23BMtPG4pHiXkvrcNM7yIlbvILHhg1v+xCss4xaW0VKZMCnNJrEiu6XtHF29D+QcEREREREPDktLIoSClAGOX91RyQdNGCjNchsSiSefjvqwCipWsy6oFzi4fn0H7tsCXb0rmgPpRQluNuCZXDF4C8v4xTJKMgGqirewtLYo+QY4dyapfPQ5fqWK3tdNxx/8LomvvBYmytH11j/FtjAG+ki8+Spd/+0/wxhdm00OKal8ci6MZ1MU7FPHSf/6N1FSyTB2UtMQho517BDZv/sbCH2bbqDNEhQoyt1/YuVPqz8Xd7+7DtJxqJ77ksbtO0gpMQ+M0vkv/gD7uZMoiXj79SYTWEcOkv7etzCGB9fe88WlVg1Lo78X6/jh8BpVFVQVoWvog310/KPfXff3m16rcvea2oLsV1//Fte610jXpfDXPw7rBAqB3tdN9u99j84/+PvYZ06EbseGgTB0lHgcY2SIxBuvkPmt74QbEKvwlvKU3nkfv1BEy2XJ/M6vk/7O19G6u8Jj6Fr4HCwTvbeb+Csv0Pkv/1FYk/M+4kx3Q1Au4y0shP3l4D5izb7S6s/Ntm4kAL25BcrvfYRfLKN1dZD9+79J6ltfRevIhdl5V67VttD7eoi/9hKd//U/wT5xdHui8iHgFfPkP/4VejpLxxvfIHH4BIplIzQdLZZA0dtjjwOnQfnqF7iFZTq/8mvYA8MITUdoGkLT0bOdxPYfQd2hW+vm5xjZ83NERERERDw4VoSMEAqGGt92YiBFqHTYw1hasll+pkHV3Tt3+0dJWB4kvC+aYjQtpttb5+mKQU/sEBDGR9b98roxkRHPoBsqhMLFKxRZWbJtO4kGoYAqv/cRwjJJvPEyWlcHud/9TeRvfQevWEQ6Loquh2LKNML6gQhKP/nlusdz70xR+uk7pL/3bdRMivSvfY3Eay+GmVn9sKyHmkkT1OsU/+bnpL/7jY0bpwj0vl707k6EaaJYJsK2MIcHW/UcjZEh0t/9JrLRIKjXCeoNgmoV59Z4K7nIapyxCYo//Clp9VsYQwOY+0foGvlHBA0Hv1QCz0dYFmo8FgoC36Nxc61/eeP2HRrXbqLlsiipBJ3/4g9wxifCeDxFoHd1ovf3ghCU3/kA+8SRzd1RNRVzaAA1m0GxTBTLQlgm1pGDCE0HAdaJowjDJKjXm9fbwC+UcMbvPLii7KtwZ+ZY+F/+iOzf/y2MgV6UZILYS88Re/5UM1lSsx6jZSJUFSEUvHye+vWb7QfyfWpfXCIfs0PhlMmQ/s43SH3rq/jFEkGtjtA01HgMYVlhn1ME9cs3HrrFzZtfpP7lZczhIYRtkfnet0m8+iLeQhgbIWwbJWZT/uX7lH72zprfS8+j+tl5RMwi9faboTj+3rdJf+fr+IUSQaMR1iyNx8I6nc1rrX324GJ9dor0XIoXP0WNJ0ifeYm+3/x9AqeB9D0U00IoKo35aaR/dwezfO0Sqh0n98pXGfjdf4abXyLwXFQ7jmrFaMxNMf+zv8Iv776uX/s5/un65/j5X9/XOSIiIiIiHgyFxgy98cNowiBt9jCQOM5s9Tq+dJtF51csagJFKChCw1Bs+hJHGUicQBMGIJl9xBl69xIvcCg5cyT0HKrQ6YsfpuIuUXLmW3UgVwjruiqoQsPSkhxIv0za7GmVuVmqT0TJbTbgmRSLQamMv5wHzwdVxbm9s1S5QaVK4Yc/xZ2dJ/HqC+g9XSixGHpXZ2jdkDLMJNpw8Ks1vKVlvMIGCzApKf8qzG6X/OrrqNk0aiqJmkmDHxDUargzsxR++HPc6RlS3/zKhu0Suk7qG2+ReO2lDb9jDPZjDLbXWAoqVeb+3/+Wxs11inFLSe3CFbx8keTbb2AeGA3rIpoGSqw7FCNBgHQ9gmoNP58nqK5Tv8f3yf/1jxGqinX0EEoyjnXkIBwJ/xYKuSKV9z+h/P7HKInYpmJRjcfJ/N3vYR3ct+F37KOHsI8eavvMmZxh/t/8Id7czgLnd4WUOLfHWfhf/neSb7yMdewIaiqJYpuhRcdMhvGfvo90Pfx6BW92gaC6VrTLRoPyux/iLS6RfOMV9IE+lHgMLZuBTrXZ53yk4+DXavjLhVCgPYxSEavb6bhUPj6HYtvEnj+Nmk6hdXag9XSF/cTzwuvbJO41qNUp/fxdvPlFEq+/jN7XgxqPoXVkQ0vpyvhyHPxqHX85j7e09FhlffUrZRbf/TG1OzdJHDqBnukAGeBXK9RnJ6neutYeNygDCuc+pDY1Tur4WazeflA1nIVZnKV5Kjev4iwt3D1+tULtzi3c/DrJU2RAbeI2bmFpzeebnuPWVZzFhzAuIiIiIiJ2zGz1Bv2JY2TNAWwtxeHsm3TYwyzVJ6l7RfzADcWQomNpSZJ6JzlzkJieQYiwbEehMcNYaeMkWE8ablBnpnqNnDWIqSXosIextRTztVsUGjM0/CpSBmFmWNUipqVIGT3krMFWGRcnqDFducJ89fFIjPQ4IuQmCywhxOOz+toNQpD9+7+FYlvUzl+k+tkXrT/Zp48TO3MCYRjkv/9DvLnmQkxViD1/htiZE7hTM5R++f6mLqpKIo55cB/G8CBqKhm62Pk+QbWKt7iEMzmDMzaBbGzhHy4Eem831rHD6D2he6FsNHCmZ6lfvIq3sIhiW2R+6zsIw6B6/gK1z9utKULTSLz+EubhAzu6TbLRoPA3P8fbos4kisDcN4I5OozamQuteaqCdFz8chlvbpHGrTHc6Y2LVQvDwD5+GGPfSHi/BPi1Ot78AvVrN3GnZgFJ7PQJYi+coX7tJuW/fW+NEFBiNsmvv4Xe272ja/WW85R+/Lf4G4n3B4WqoHV0YO4bDjcXEnEUy0QGAbIplN25BZyxCbyl5U1FnojZmCNDGCODaLkMwrQgCDcW/KVlnKlZnPEJgvLaJDjCMom/9DzWkbCPLP/ZX93NQLoOxugQybdeA1WlcfU65V99tK3LFYaOOTocbi50ZFEMg8Bxw3GxsETj2s1N+8kKSjyGMTqMOTKImk0jDBOCsN6kt7QcxjiOT2yaBEfr7Sb5lddQkwmcyWmKP/jptq4hIiIiIiLicSJnDXEo8zopo6tVC3YrpAyo+xXyjSluFj6mtI1yQk8SumLRnzjOUPIUMS3dis3cikD6lN1FZirXuFM63yod86wipdzQFe3pFosRERERERERERERTwWClNFNb/wQKaM7LPegWGiKjkBFIpHSx5cujl+nEVSounnyjWkWare3Va/ySUQTBjl7iC57lITeiakmMFQLRWgIBJKAQPphEpygRt0rU/aWWaje2lFW2aeZSCxGREREREREREREPAUoQiOmZYhpaQzVDsWiUJEyFIuedHH8Gg2/TNUr4AVPR/bTrdAVi7iexVKTGKodikUhkHJFLDZw/Bo1v0jVKyJ3kFH2aScSixERERERERERERERERFr2EwsPh655iMiIiIiIiIiIiIiIiIeKyKxGBEREREREREREREREbGGSCxGRERERERERERERERErCESixERERERERERERERERFriMRiRERERERERERERERExBoisRgRERERERERERERERGxBu1RN+BpR00kSZw8jWLHtv6ylLhLC5TPf/7A2/W0Yw4METt89O4HUlK5fBFnZurRNWo9FBVz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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from wordcloud import WordCloud\n", + "import matplotlib.pyplot as plt\n", + "\n", + "wordcloud = WordCloud(max_font_size=100, max_words = 20, width = 1000, height = 500).generate_from_frequencies(keyword2WordCloud) #Objeto que permite gerar wordcloud a partir de texto\n", + "plt.figure(figsize=(16,9))\n", + "plt.imshow(wordcloud, interpolation=\"bilinear\") #imshow plota imagens que derivam de arrays\n", + "plt.axis(\"off\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Projects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- [Spark NLP](https://www.johnsnowlabs.com/spark-nlp-in-action/)\n", + "- [Spark NLP Keywords Extraction Demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/)\n", + "- [kaggle](https://www.youtube.com/watch?v=6TBvZmg7AsA)\n", + "- [textacy](https://github.com/chartbeat-labs/textacy/search?q=yake)\n", + "- [pke - pyhton keyphrase extraction](https://github.com/boudinfl/pke)\n", + "- [docker](https://github.com/LIAAD/yake#option-1-yake-as-a-cli-utility-inside-a-docker-container)\n", + "- [dendro](http://dendro-stg.inesctec.pt/)\n", + "- [conta-me histórias](http://contamehistorias.pt)\n", + "- [time-matters](http://time-matters.inesctec.pt)\n", + "- [The General Index](https://archive.org/details/GeneralIndex)\n", + "- [Nature. Giant, free index to world’s research papers released online](https://www.nature.com/articles/d41586-021-02895-8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Awards" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[ECIR'18](http://ecir2018.org) Best Short Paper (see the below reference)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please cite the following works when using YAKE:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**In-depth journal paper at Information Sciences Journal**\n", + "\n", + "- Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013)\n", + "\n", + "**ECIR'18 Best Short Paper**\n", + "\n", + "- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63)\n", + "\n", + "- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Media" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- [INESC TEC technology used to create a database of keywords obtained from more than 100 million scientific articles](https://bip.inesctec.pt/en/noticias/inesc-tec-technology-used-to-create-a-database-of-keywords-obtained-from-more-than-100-million-scientific-articles/)\n", + "- [This tool can extract keywords from texts in every language about any topic](https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276?returnurl=https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276)\n", + "- [Apps do YAKE! e Conta-me Histórias já estão disponíveis no Google Play](https://bip.inesctec.pt/noticias/apps-do-yake-e-conta-me-historias-ja-estao-disponiveis-no-google-play/)\n", + "- [INESC TEC team wins another Best Paper Award](https://www.inesctec.pt/en/news/inesc-tec-team-wins-another-best-paper-award#about)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "255px" + }, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 921fbd3cc45aa5105d74ac39c6b48166e2f012cd Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:38:32 +0100 Subject: [PATCH 102/118] updated collab redirections and notebook --- README.md | 2 +- docs-site/content/docs/gettingstarted.mdx | 2 +- docs-site/content/docs/home.mdx | 2 +- docs-site/public/1YAKE.ipynb | 678 +--------------------- 4 files changed, 5 insertions(+), 679 deletions(-) diff --git a/README.md b/README.md index afed494a..37506ce3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # YAKE! (Yet Another Keyword Extractor) -[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index b464c53c..916425d0 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -1,6 +1,6 @@ # Quick Start -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) ## Installing YAKE! diff --git a/docs-site/content/docs/home.mdx b/docs-site/content/docs/home.mdx index 4ab68ec0..2895187b 100644 --- a/docs-site/content/docs/home.mdx +++ b/docs-site/content/docs/home.mdx @@ -4,7 +4,7 @@ --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) --- ## Background diff --git a/docs-site/public/1YAKE.ipynb b/docs-site/public/1YAKE.ipynb index 3e7f0287..614d977c 100644 --- a/docs-site/public/1YAKE.ipynb +++ b/docs-site/public/1YAKE.ipynb @@ -38,7 +38,7 @@ }, "source": [ "

    Table of Contents

    \n", - "" + "
    • 1  YAKE - Yet Another Keyword Extractor
    • 2  Package
      • 2.1  Installation
      • 2.2  Usage (Python)
      • 2.3  Usage (Command Line)" ] }, { @@ -571,7 +571,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
        " ] @@ -679,680 +679,6 @@ "```" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## API" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### API Docs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "http://tm-websuiteapps.ipt.pt/yake/apidocs ou http://yake.inesctec.pt/apidocs/" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Code" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Extract Keywords from Text" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"\n", - "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords\"\n", - "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords\"" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://boiling-castle-88317.herokuapp.com/v2/extract_keywords\"" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'keywords': [{'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", - " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", - " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", - " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", - " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", - " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", - " {'ngram': 'plataforma', 'score': 0.14041950406587828},\n", - " {'ngram': 'Universidade', 'score': 0.15430157935310973},\n", - " {'ngram': 'docente', 'score': 0.16062340283143323},\n", - " {'ngram': 'fontes', 'score': 0.22178899197855695},\n", - " {'ngram': 'Web', 'score': 0.24221396811318066},\n", - " {'ngram': 'Prémio', 'score': 0.26491441089796414},\n", - " {'ngram': 'TSF', 'score': 0.2814604328980921},\n", - " {'ngram': 'Tomar', 'score': 0.3296342992141605},\n", - " {'ngram': 'Arian', 'score': 0.3296342992141605},\n", - " {'ngram': 'Mangaravite', 'score': 0.3296342992141605},\n", - " {'ngram': 'Alípio', 'score': 0.3296342992141605},\n", - " {'ngram': 'Jorge', 'score': 0.3296342992141605},\n", - " {'ngram': 'Porto', 'score': 0.3296342992141605},\n", - " {'ngram': 'Kyoto', 'score': 0.3296342992141605},\n", - " {'ngram': 'Ricardo', 'score': 0.35667154152030806},\n", - " {'ngram': 'Campos', 'score': 0.35667154152030806},\n", - " {'ngram': 'Instituto', 'score': 0.35667154152030806},\n", - " {'ngram': 'Politécnico', 'score': 0.35667154152030806},\n", - " {'ngram': 'Pasquali', 'score': 0.35667154152030806},\n", - " {'ngram': 'Vitor', 'score': 0.35667154152030806},\n", - " {'ngram': 'Faculdade', 'score': 0.35667154152030806},\n", - " {'ngram': 'Ciências', 'score': 0.35667154152030806},\n", - " {'ngram': 'Adam', 'score': 0.35667154152030806},\n", - " {'ngram': 'Jatwot', 'score': 0.35667154152030806}],\n", - " 'message': 'success',\n", - " 'params': {'language': 'pt',\n", - " 'max_ngram_size': 1,\n", - " 'number_of_keywords': 30,\n", - " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import requests\n", - "\n", - "text = '''\n", - "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", - "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", - "'''\n", - "\n", - "payload = {'content': text, 'max_ngram_size': 1, 'number_of_keywords': 30}\n", - "r = requests.post(url_api, data=payload)\n", - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Conta-me\n", - "Histórias\n", - "LIAAD\n", - "INESC\n", - "TEC\n", - "Arquivo.pt\n", - "plataforma\n", - "Universidade\n", - "docente\n", - "fontes\n", - "Web\n", - "Prémio\n", - "TSF\n", - "Tomar\n", - "Arian\n", - "Mangaravite\n", - "Alípio\n", - "Jorge\n", - "Porto\n", - "Kyoto\n", - "Ricardo\n", - "Campos\n", - "Instituto\n", - "Politécnico\n", - "Pasquali\n", - "Vitor\n", - "Faculdade\n", - "Ciências\n", - "Adam\n", - "Jatwot\n" - ] - } - ], - "source": [ - "for ele in content['keywords']:\n", - " print(ele['ngram'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case you want to tag the keywords in the text, please specify the tag as follows: \n", - "- `preTag` (e.g. `` or ``) \n", - "- `posTag` (e.g., `` or ``)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui. A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import requests\n", - "\n", - "text = '''\n", - "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", - "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", - "'''\n", - "\n", - "payload = {'content': text, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", - "r = requests.post(url_api, data=payload)\n", - "content = r.json()\n", - "content['highlighted_text']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To get a better visualization of the results:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'highlighted_text': '\"Conta-me Histórias.\" Xutos inspiram '\n", - " 'projeto premiado. A plataforma \"Conta-me '\n", - " 'Histórias\" foi distinguida com o Prémio '\n", - " 'Arquivo.pt, atribuído a trabalhos inovadores de '\n", - " 'investigação ou aplicação de recursos preservados da '\n", - " 'Web, através dos serviços de pesquisa e acesso '\n", - " 'disponibilizados publicamente pelo Arquivo.pt . '\n", - " 'Nesta plataforma em desenvolvimento, o utilizador pode '\n", - " 'pesquisar sobre qualquer tema e ainda executar alguns '\n", - " 'exemplos predefinidos. Como forma de garantir a '\n", - " 'pluralidade e diversidade de fontes de informação, esta '\n", - " 'são utilizadas 24 fontes de notícias eletrónicas, '\n", - " 'incluindo a TSF. Uma versão experimental (beta) do '\n", - " '\"Conta-me Histórias\" está disponível aqui. A '\n", - " 'plataforma foi desenvolvida por Ricardo Campos '\n", - " 'investigador do LIAAD do INESC '\n", - " 'TEC e docente do Instituto Politécnico de '\n", - " 'Tomar, Arian Pasquali e Vitor '\n", - " 'Mangaravite, também investigadores do LIAAD do '\n", - " 'INESC TEC, Alípio Jorge, '\n", - " 'coordenador do LIAAD do INESC TEC e '\n", - " 'docente na Faculdade de Ciências da '\n", - " 'Universidade do Porto, e Adam Jatwot '\n", - " 'docente da Universidade de Kyoto.',\n", - " 'keywords': [{'ngram': 'Conta-me Histórias', 'score': 0.006225012963810038},\n", - " {'ngram': 'LIAAD do INESC', 'score': 0.01899063587015275},\n", - " {'ngram': 'INESC TEC', 'score': 0.01995432290332246},\n", - " {'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", - " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", - " {'ngram': 'Prémio Arquivo.pt', 'score': 0.05749361520927859},\n", - " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", - " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", - " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", - " {'ngram': 'Xutos inspiram projeto', 'score': 0.08720742489353424},\n", - " {'ngram': 'inspiram projeto premiado',\n", - " 'score': 0.08720742489353424},\n", - " {'ngram': 'Adam Jatwot docente', 'score': 0.09407053486771558},\n", - " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", - " {'ngram': 'Alípio Jorge', 'score': 0.12190479662535166},\n", - " {'ngram': 'Ciências da Universidade',\n", - " 'score': 0.12368384021490342},\n", - " {'ngram': 'Ricardo Campos investigador',\n", - " 'score': 0.12789997272332762},\n", - " {'ngram': 'Politécnico de Tomar', 'score': 0.13323587141127738},\n", - " {'ngram': 'Arian Pasquali', 'score': 0.13323587141127738},\n", - " {'ngram': 'Vitor Mangaravite', 'score': 0.13323587141127738},\n", - " {'ngram': 'preservados da Web', 'score': 0.13596322680882506}],\n", - " 'message': 'success',\n", - " 'params': {'language': 'pt',\n", - " 'max_ngram_size': 3,\n", - " 'number_of_keywords': 20,\n", - " 'posTag': '',\n", - " 'preTag': '',\n", - " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}\n" - ] - } - ], - "source": [ - "import pprint\n", - "content = r.json()\n", - "pprint.pprint(content)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Extract Keywords from URL" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"\n", - "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords_by_url\"\n", - "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Ftechcrunch.com%2F2017%2F03%2F07%2Fgoogle-is-acquiring-data-science-community-kaggle%2F&max_ngram_size=3&number_of_keywords=3&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" - ] - } - ], - "source": [ - "import requests\n", - "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", - "#url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", - "url = \"https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/\"\n", - "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 3, 'preTag':\"\", 'posTag':''}\n", - "r = requests.get(url_api, params=payload)\n", - "print(r.url)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", - " 'message': 'insuccess',\n", - " 'params': {'max_ngram_size': 3,\n", - " 'number_of_keywords': 3,\n", - " 'posTag': '',\n", - " 'preTag': '',\n", - " 'url': 'https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/'},\n", - " 'result': []}" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Fwww.publico.pt%2F2019%2F01%2F10%2Fmundo%2Fnoticia%2Fmaduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373&max_ngram_size=3&number_of_keywords=20\n" - ] - } - ], - "source": [ - "import requests\n", - "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", - "url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", - "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20}\n", - "r = requests.get(url_api, params=payload)\n", - "print(r.url)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", - " 'message': 'insuccess',\n", - " 'params': {'max_ngram_size': 3,\n", - " 'number_of_keywords': 20,\n", - " 'url': 'https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373'},\n", - " 'result': []}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again there is a chance to get the text labelled with the tags." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=http%3A%2F%2Fneurosciencenews.com%2Fgenetics-brain-aging-6250&max_ngram_size=3&number_of_keywords=20&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" - ] - } - ], - "source": [ - "import requests\n", - "url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", - "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", - "r = requests.get(url_api, params=payload)\n", - "print(r.url)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", - " 'message': 'insuccess',\n", - " 'params': {'max_ngram_size': 3,\n", - " 'number_of_keywords': 20,\n", - " 'posTag': '',\n", - " 'preTag': '',\n", - " 'url': 'http://neurosciencenews.com/genetics-brain-aging-6250'},\n", - " 'result': []}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### WordCloud" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Para poder gerar uma word cloud a partir de resultados obtidos da API começamos por criar uma lista composta apenas pelas keywords (e respetivos scores):" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[('Columbia University Medical', 0.00529347656322898),\n", - " ('University Medical Center', 0.0056204056835212944),\n", - " ('Brain Aging', 0.007981486613454188),\n", - " ('Brain Aging Gene', 0.008561464903059477),\n", - " ('Gene Discovered Summary', 0.011117241458580198),\n", - " ('Aging Gene Discovered', 0.011543956129580845),\n", - " ('Brain', 0.01423327097089573),\n", - " ('Aging', 0.015001419612135828),\n", - " ('University Medical', 0.015066192388173577),\n", - " ('normal brain aging', 0.015170215216394334),\n", - " ('Columbia University', 0.015967452701775162),\n", - " ('Medical Center', 0.016898333782857357),\n", - " ('Aging Gene', 0.024664710351924097),\n", - " ('Discovered Summary', 0.028839657817467175),\n", - " ('disease', 0.029978432676500924),\n", - " ('Gene Discovered', 0.036645602314177926),\n", - " ('Gene', 0.036950964796584024),\n", - " ('brain disease', 0.043948285235841565),\n", - " ('University', 0.047988124236656333),\n", - " ('Medical', 0.047988124236656333)]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "keywords = [(kw['ngram'],kw['score']) for kw in content['keywords']]\n", - "keywords" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "De seguida balizamos os valores entre [0,1]:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Columbia University Medical': 1.0,\n", - " 'University Medical Center': 0.992342620489739,\n", - " 'Brain Aging': 0.9370410532302345,\n", - " 'Brain Aging Gene': 0.9234567207386875,\n", - " 'Gene Discovered Summary': 0.8635949653479431,\n", - " 'Aging Gene Discovered': 0.8536003947342071,\n", - " 'Brain': 0.7906108869653287,\n", - " 'Aging': 0.7726192022203064,\n", - " 'University Medical': 0.771102085214606,\n", - " 'normal brain aging': 0.7686656480055105,\n", - " 'Columbia University': 0.7499926402908452,\n", - " 'Medical Center': 0.7281894136146929,\n", - " 'Aging Gene': 0.5462842570603634,\n", - " 'Discovered Summary': 0.4484980545022026,\n", - " 'disease': 0.42182551072706065,\n", - " 'Gene Discovered': 0.2656661324210402,\n", - " 'Gene': 0.2585138897150733,\n", - " 'brain disease': 0.09462167322975978,\n", - " 'University': 0.0,\n", - " 'Medical': 0.0}" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def normalize_scores(keywords):\n", - " if len(keywords) == 0:\n", - " return {}\n", - " max_value = max([item[1] for item in keywords])\n", - " min_value = min([item[1] for item in keywords])\n", - " \n", - " result = {}\n", - " for item in keywords:\n", - " normalized_score = (item[1] - float(min_value))/(float(max_value) - float(min_value))\n", - " result[item[0]] = abs(1 - normalized_score)\n", - "\n", - " return result\n", - "\n", - "keyword2WordCloud = normalize_scores(keywords)\n", - "keyword2WordCloud" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```python\n", - "def normalize_scores(keywords):\n", - " if len(keywords) == 0:\n", - " return {}\n", - " max_value = max([item[1] for\n", - " item in keywords])\n", - " \n", - " result = {}\n", - " for item in keywords:\n", - " normalized_score = 1 - item[1]/float(max_value)\n", - " result[item[0]] = abs(normalized_score)\n", - "\n", - " return result\n", - "\n", - "keyword2WordCloud = normalize_scores(keywords)\n", - "keyword2WordCloud\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install matplotlib\n", - "!pip install wordcloud" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(-0.5, 999.5, 499.5, -0.5)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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WNUipqVIGT3krMFWGRcnqDFducJ89fFIjPQ4IuQmCywhxOOz+toNQpD9+7+FYlvUzl+k+tkXrT/Zp48TO3MCYRjkv/9DvLnmQkxViD1/htiZE7hTM5R++f6mLqpKIo55cB/G8CBqKhm62Pk+QbWKt7iEMzmDMzaBbGzhHy4Eem831rHD6D2he6FsNHCmZ6lfvIq3sIhiW2R+6zsIw6B6/gK1z9utKULTSLz+EubhAzu6TbLRoPA3P8fbos4kisDcN4I5OozamQuteaqCdFz8chlvbpHGrTHc6Y2LVQvDwD5+GGPfSHi/BPi1Ot78AvVrN3GnZgFJ7PQJYi+coX7tJuW/fW+NEFBiNsmvv4Xe272ja/WW85R+/Lf4G4n3B4WqoHV0YO4bDjcXEnEUy0QGAbIplN25BZyxCbyl5U1FnojZmCNDGCODaLkMwrQgCDcW/KVlnKlZnPEJgvLaJDjCMom/9DzWkbCPLP/ZX93NQLoOxugQybdeA1WlcfU65V99tK3LFYaOOTocbi50ZFEMg8Bxw3GxsETj2s1N+8kKSjyGMTqMOTKImk0jDBOCsN6kt7QcxjiOT2yaBEfr7Sb5lddQkwmcyWmKP/jptq4hIiIiIiLicSJnDXEo8zopo6tVC3YrpAyo+xXyjSluFj6mtI1yQk8SumLRnzjOUPIUMS3dis3cikD6lN1FZirXuFM63yod86wipdzQFe3pFosRERERERERERERTwWClNFNb/wQKaM7LPegWGiKjkBFIpHSx5cujl+nEVSounnyjWkWare3Va/ySUQTBjl7iC57lITeiakmMFQLRWgIBJKAQPphEpygRt0rU/aWWaje2lFW2aeZSCxGREREREREREREPAUoQiOmZYhpaQzVDsWiUJEyFIuedHH8Gg2/TNUr4AVPR/bTrdAVi7iexVKTGKodikUhkHJFLDZw/Bo1v0jVKyJ3kFH2aScSixERERERERERERERERFr2EwsPh655iMiIiIiIiIiIiIiIiIeKyKxGBEREREREREREREREbGGSCxGRERERERERERERERErCESixERERERERERERERERFriMRiRERERERERERERERExBoisRgRERERERERERERERGxBu1RN+BpR00kSZw8jWLHtv6ylLhLC5TPf/7A2/W0Yw4METt89O4HUlK5fBFnZurRNWo9FBVz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\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "from wordcloud import WordCloud\n", - "import matplotlib.pyplot as plt\n", - "\n", - "wordcloud = WordCloud(max_font_size=100, max_words = 20, width = 1000, height = 500).generate_from_frequencies(keyword2WordCloud) #Objeto que permite gerar wordcloud a partir de texto\n", - "plt.figure(figsize=(16,9))\n", - "plt.imshow(wordcloud, interpolation=\"bilinear\") #imshow plota imagens que derivam de arrays\n", - "plt.axis(\"off\")" - ] - }, { "cell_type": "markdown", "metadata": {}, From 44446e9d58fe9ceaf5545b9b2a04dee70f35cc37 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:48:58 +0100 Subject: [PATCH 103/118] Create meta.json --- docs-site/content/docs/meta.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 docs-site/content/docs/meta.json diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json new file mode 100644 index 00000000..22d45cc2 --- /dev/null +++ b/docs-site/content/docs/meta.json @@ -0,0 +1,26 @@ +{ + "tittle": "Home", + "pages": [ + { + "title": "Home", + "path": "/", + "description": "Welcome to the documentation site for our project. Here you will find all the information you need to get started and make the most of our tools." + }, + { + "title": "Getting Started", + "path": "/getting-started", + "description": "Learn how to set up and use our project quickly and easily." + }, + { + "title": "About", + "path": "/about", + "description": "Learn more about our project, its goals, and the team behind it." + }, + { + "title": "Related Projects", + "path": "/relatedprojects", + "description": "Explore other projects that are related to this one." + } + + ] +} \ No newline at end of file From d1fef9771b2e06dfe33bfc7d6520e57aa7384c85 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:51:04 +0100 Subject: [PATCH 104/118] updated order --- .../content/docs/{gettingstarted.mdx => getting-started.mdx} | 0 docs-site/content/docs/meta.json | 4 ++-- .../docs/{relatedprojects.mdx => related-projects.mdx} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename docs-site/content/docs/{gettingstarted.mdx => getting-started.mdx} (100%) rename docs-site/content/docs/{relatedprojects.mdx => related-projects.mdx} (100%) diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/getting-started.mdx similarity index 100% rename from docs-site/content/docs/gettingstarted.mdx rename to docs-site/content/docs/getting-started.mdx diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json index 22d45cc2..0a41507f 100644 --- a/docs-site/content/docs/meta.json +++ b/docs-site/content/docs/meta.json @@ -3,7 +3,7 @@ "pages": [ { "title": "Home", - "path": "/", + "path": "/home", "description": "Welcome to the documentation site for our project. Here you will find all the information you need to get started and make the most of our tools." }, { @@ -18,7 +18,7 @@ }, { "title": "Related Projects", - "path": "/relatedprojects", + "path": "/related-projects", "description": "Explore other projects that are related to this one." } diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/related-projects.mdx similarity index 100% rename from docs-site/content/docs/relatedprojects.mdx rename to docs-site/content/docs/related-projects.mdx From 7343b3ea5f9ed46ff8ca6146c2bb0140b5710b15 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:57:56 +0100 Subject: [PATCH 105/118] Delete meta.json --- docs-site/content/docs/meta.json | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 docs-site/content/docs/meta.json diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json deleted file mode 100644 index 0a41507f..00000000 --- a/docs-site/content/docs/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "tittle": "Home", - "pages": [ - { - "title": "Home", - "path": "/home", - "description": "Welcome to the documentation site for our project. Here you will find all the information you need to get started and make the most of our tools." - }, - { - "title": "Getting Started", - "path": "/getting-started", - "description": "Learn how to set up and use our project quickly and easily." - }, - { - "title": "About", - "path": "/about", - "description": "Learn more about our project, its goals, and the team behind it." - }, - { - "title": "Related Projects", - "path": "/related-projects", - "description": "Explore other projects that are related to this one." - } - - ] -} \ No newline at end of file From fb3a3cf100ef7e37abeccbcdffc8d98a47b8cbf3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 05:00:42 +0100 Subject: [PATCH 106/118] Update getting-started.mdx --- docs-site/content/docs/getting-started.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs-site/content/docs/getting-started.mdx b/docs-site/content/docs/getting-started.mdx index 916425d0..cc084de6 100644 --- a/docs-site/content/docs/getting-started.mdx +++ b/docs-site/content/docs/getting-started.mdx @@ -1,4 +1,7 @@ -# Quick Start +--- +title: Getting Started +icon: GitCompareArrows +--- [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) From ab73131cbde5ed4e5781115cd9b8d8d5bfa41e55 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 05:19:13 +0100 Subject: [PATCH 107/118] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 37506ce3..11126cf4 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ custom_th = TextHighlighter( ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs) +- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs/home) - 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) - 💻 Pypi: [https://pypi.org/project/yake/](https://pypi.org/project/yake/) From 75a81d73f7dba24bf82edb46dbe4cc2f065edeaf Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 14:50:32 +0100 Subject: [PATCH 108/118] sidebar test --- docs-site/content/docs/getting-started.mdx | 2 -- docs-site/content/docs/home.mdx | 1 - docs-site/content/docs/meta.json | 12 ++++++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 docs-site/content/docs/meta.json diff --git a/docs-site/content/docs/getting-started.mdx b/docs-site/content/docs/getting-started.mdx index cc084de6..0900cc0b 100644 --- a/docs-site/content/docs/getting-started.mdx +++ b/docs-site/content/docs/getting-started.mdx @@ -2,9 +2,7 @@ title: Getting Started icon: GitCompareArrows --- - [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) - ## Installing YAKE! Installing Yake using pip: diff --git a/docs-site/content/docs/home.mdx b/docs-site/content/docs/home.mdx index 2895187b..bb680788 100644 --- a/docs-site/content/docs/home.mdx +++ b/docs-site/content/docs/home.mdx @@ -1,4 +1,3 @@ - # Yet Another Keyword Extractor (YAKE!) > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json new file mode 100644 index 00000000..c9196720 --- /dev/null +++ b/docs-site/content/docs/meta.json @@ -0,0 +1,12 @@ +{ + "pages": [ + "home", + "getting-started", + "related-projects", + "about", + { + "title": "Documentation", + "type": "separator" + } + ] +} \ No newline at end of file From b0fd5204941a0e09c7f5bc81486c127b8074451d Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:05:01 +0100 Subject: [PATCH 109/118] teste sidebar --- docs-site/content/docs/meta.json | 12 - docs-site/lib/meta.ts | 14 + docs-site/lib/source.ts | 2 +- docs-site/meta.ts | 14 + package-lock.json | 4527 +++++++++++++++++++++++++++--- package.json | 4 + 6 files changed, 4224 insertions(+), 349 deletions(-) delete mode 100644 docs-site/content/docs/meta.json create mode 100644 docs-site/lib/meta.ts create mode 100644 docs-site/meta.ts diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json deleted file mode 100644 index c9196720..00000000 --- a/docs-site/content/docs/meta.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "pages": [ - "home", - "getting-started", - "related-projects", - "about", - { - "title": "Documentation", - "type": "separator" - } - ] -} \ No newline at end of file diff --git a/docs-site/lib/meta.ts b/docs-site/lib/meta.ts new file mode 100644 index 00000000..6e0cc3ea --- /dev/null +++ b/docs-site/lib/meta.ts @@ -0,0 +1,14 @@ +export const docsMetadata = { + pages: [ + 'home', + 'getting-started', + 'related-projects', + 'about', + { + title: 'Documentation', + type: 'separator' + }, + 'core', + 'data' + ] +}; \ No newline at end of file diff --git a/docs-site/lib/source.ts b/docs-site/lib/source.ts index 9871c2fc..28a77668 100644 --- a/docs-site/lib/source.ts +++ b/docs-site/lib/source.ts @@ -6,6 +6,6 @@ import { meta } from '@/.source'; // See https://fumadocs.vercel.app/docs/headless/source-api for more info export const source = loader({ // it assigns a URL to your pages - baseUrl: '/docs', + baseUrl: '/docs-site', source: createMDXSource(docs, meta), }); diff --git a/docs-site/meta.ts b/docs-site/meta.ts new file mode 100644 index 00000000..6e0cc3ea --- /dev/null +++ b/docs-site/meta.ts @@ -0,0 +1,14 @@ +export const docsMetadata = { + pages: [ + 'home', + 'getting-started', + 'related-projects', + 'about', + { + title: 'Documentation', + type: 'separator' + }, + 'core', + 'data' + ] +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 852326a2..c2671023 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,484 +4,3898 @@ "requires": true, "packages": { "": { + "dependencies": { + "@types/mdx": "^2.0.13", + "fumadocs-mdx": "^11.6.4" + }, "devDependencies": { "gh-pages": "^6.3.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", + "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", + "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", + "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", + "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", + "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", + "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", + "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", + "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", + "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/runtime": "^1.4.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", + "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", + "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@next/env": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.2.tgz", + "integrity": "sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.2.tgz", + "integrity": "sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz", + "integrity": "sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz", + "integrity": "sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz", + "integrity": "sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz", + "integrity": "sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz", + "integrity": "sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz", + "integrity": "sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz", + "integrity": "sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@orama/orama": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.7.tgz", + "integrity": "sha512-6yB0117ZjsgNevZw3LP+bkrZa9mU/POPVaXgzMPOBbBc35w2P3R+1vMMhEfC06kYCpd5bf0jodBaTkYQW5TVeQ==", + "peer": true, + "engines": { + "node": ">= 20.0.0" + } + }, + "node_modules/@shikijs/core": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.4.2.tgz", + "integrity": "sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.4.2.tgz", + "integrity": "sha512-1/adJbSMBOkpScCE/SB6XkjJU17ANln3Wky7lOmrnpl+zBdQ1qXUJg2GXTYVHRq+2j3hd1DesmElTXYDgtfSOQ==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.2.tgz", + "integrity": "sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.2.tgz", + "integrity": "sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/rehype": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-3.4.2.tgz", + "integrity": "sha512-atbsrT3UKs25OdKVbNoHyKO9ZP7KEBPlo1oanPGMkvUL0fLictpxMPz6vPE2YTeHhpwz7EMrA4K4FHRY8XAReg==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "3.4.2", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.2.tgz", + "integrity": "sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/transformers": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.4.2.tgz", + "integrity": "sha512-I5baLVi/ynLEOZoWSAMlACHNnG+yw5HDmse0oe+GW6U1u+ULdEB3UHiVWaHoJSSONV7tlcVxuaMy74sREDkSvg==", + "peer": true, + "dependencies": { + "@shikijs/core": "3.4.2", + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/types": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.2.tgz", + "integrity": "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==", + "peer": true, + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "peer": true + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", + "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==", + "peer": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "peer": true + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.4.0.tgz", + "integrity": "sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fumadocs-core": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-15.3.3.tgz", + "integrity": "sha512-3i547DisQ/k4v5UYECgTIi14be2TGrnomwT6AKOis+Nj0A8sUdaMEU6KgYT9GAOUeeC6A733pSm6Bi8aY91/IQ==", + "peer": true, + "dependencies": { + "@formatjs/intl-localematcher": "^0.6.1", + "@orama/orama": "^3.1.6", + "@shikijs/rehype": "^3.4.2", + "@shikijs/transformers": "^3.4.2", + "github-slugger": "^2.0.0", + "hast-util-to-estree": "^3.1.3", + "hast-util-to-jsx-runtime": "^2.3.6", + "image-size": "^2.0.2", + "negotiator": "^1.0.0", + "react-remove-scroll": "^2.6.3", + "remark": "^15.0.0", + "remark-gfm": "^4.0.1", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^3.4.2", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@oramacloud/client": "1.x.x || 2.x.x", + "algoliasearch": "4.24.0", + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x" + }, + "peerDependenciesMeta": { + "@oramacloud/client": { + "optional": true + }, + "algoliasearch": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fumadocs-mdx": { + "version": "11.6.4", + "resolved": "https://registry.npmjs.org/fumadocs-mdx/-/fumadocs-mdx-11.6.4.tgz", + "integrity": "sha512-pGczNrR+w31JJ8/L9TfFFoe0dGNV43suz2YXyz1iD1yQ2j2VldLqYZ12UyRi7IsqTiVBFUSkRks1iYBRvNr/4w==", + "dependencies": { + "@mdx-js/mdx": "^3.1.0", + "@standard-schema/spec": "^1.0.0", + "chokidar": "^4.0.3", + "cross-spawn": "^7.0.6", + "esbuild": "^0.25.4", + "estree-util-value-to-estree": "^3.4.0", + "fast-glob": "^3.3.3", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lru-cache": "^11.1.0", + "picocolors": "^1.1.1", + "unist-util-visit": "^5.0.0", + "zod": "^3.24.4" + }, + "bin": { + "fumadocs-mdx": "bin.js" + }, + "peerDependencies": { + "@fumadocs/mdx-remote": "^1.2.0", + "fumadocs-core": "^14.0.0 || ^15.0.0", + "next": "^15.3.0" + }, + "peerDependenciesMeta": { + "@fumadocs/mdx-remote": { + "optional": true + } + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/gh-pages": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", + "dev": true, + "dependencies": { + "async": "^3.2.4", + "commander": "^13.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^11.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "peer": true + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "peer": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "peer": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "peer": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true, + "peer": true + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "peer": true, + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "peer": true, + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "peer": true, + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "peer": true, + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/array-union": { + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { - "fill-range": "^7.1.1" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "dev": true, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">=18" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "peer": true, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, + "node_modules/next": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.2.tgz", + "integrity": "sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==", + "peer": true, "dependencies": { - "path-type": "^4.0.0" + "@next/env": "15.3.2", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.2", + "@next/swc-darwin-x64": "15.3.2", + "@next/swc-linux-arm64-gnu": "15.3.2", + "@next/swc-linux-arm64-musl": "15.3.2", + "@next/swc-linux-x64-gnu": "15.3.2", + "@next/swc-linux-x64-musl": "15.3.2", + "@next/swc-win32-arm64-msvc": "15.3.2", + "@next/swc-win32-x64-msvc": "15.3.2", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } } }, - "node_modules/email-addresses": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", - "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", - "dev": true + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "peer": true }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/oniguruma-to-es": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "peer": true, + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { "node": ">=8" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, "engines": { "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "dev": true, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=14.14" + "node": "^10 || ^12 || >=14" } }, - "node_modules/gh-pages": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", - "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", - "dev": true, - "dependencies": { - "async": "^3.2.4", - "commander": "^13.0.0", - "email-addresses": "^5.0.0", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^11.1.1", - "globby": "^11.1.0" - }, - "bin": { - "gh-pages": "bin/gh-pages.js", - "gh-pages-clean": "bin/gh-pages-clean.js" - }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "peer": true, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "peer": true, "dependencies": { - "is-glob": "^4.0.1" + "scheduler": "^0.26.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "react": "^19.1.0" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, + "node_modules/react-remove-scroll": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.0.tgz", + "integrity": "sha512-sGsQtcjMqdQyijAHytfGEELB8FufGbfXIsvUTe+NLx1GDRJCXtCFLBLUI1eyZCKXXvbEU2C6gai0PZKoIE9Vbg==", + "peer": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" }, "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "peer": true, + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "peer": true, "dependencies": { - "is-extglob": "^2.1.1" + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "engines": { - "node": ">=0.12.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", "dependencies": { - "universalify": "^2.0.0" + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/recma-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", + "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", "dependencies": { - "p-locate": "^4.1.0" + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "peer": true, + "dependencies": { + "regex-utilities": "^2.3.0" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "peer": true, "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "regex-utilities": "^2.3.0" } }, - "node_modules/p-limit": { + "node_modules/regex-utilities": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "peer": true }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", "dependencies": { - "p-limit": "^2.2.0" + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", "dependencies": { - "find-up": "^4.0.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -491,7 +3905,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -510,6 +3923,132 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "peer": true + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "peer": true, + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", + "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", + "hasInstallScript": true, + "optional": true, + "peer": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.7.1" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.1", + "@img/sharp-darwin-x64": "0.34.1", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.1", + "@img/sharp-linux-arm64": "0.34.1", + "@img/sharp-linux-s390x": "0.34.1", + "@img/sharp-linux-x64": "0.34.1", + "@img/sharp-linuxmusl-arm64": "0.34.1", + "@img/sharp-linuxmusl-x64": "0.34.1", + "@img/sharp-wasm32": "0.34.1", + "@img/sharp-win32-ia32": "0.34.1", + "@img/sharp-win32-x64": "0.34.1" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.4.2.tgz", + "integrity": "sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ==", + "peer": true, + "dependencies": { + "@shikijs/core": "3.4.2", + "@shikijs/engine-javascript": "3.4.2", + "@shikijs/engine-oniguruma": "3.4.2", + "@shikijs/langs": "3.4.2", + "@shikijs/themes": "3.4.2", + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "peer": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -519,6 +4058,67 @@ "node": ">=8" } }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -540,11 +4140,49 @@ "node": ">=0.8.0" } }, + "node_modules/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "dependencies": { + "style-to-object": "1.0.8" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "peer": true, + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -552,6 +4190,15 @@ "node": ">=8.0" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -573,6 +4220,114 @@ "node": ">=0.8.0" } }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "peer": true + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -581,6 +4336,106 @@ "engines": { "node": ">= 10.0.0" } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "peer": true, + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/zod": { + "version": "3.25.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.7.tgz", + "integrity": "sha512-YGdT1cVRmKkOg6Sq7vY7IkxdphySKnXhaUmFI4r4FcuFVNgpCb9tZfNwXbT6BPjD5oz0nubFsoo9pIqKrDcCvg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 1b58964b..38b19483 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,9 @@ { "devDependencies": { "gh-pages": "^6.3.0" + }, + "dependencies": { + "@types/mdx": "^2.0.13", + "fumadocs-mdx": "^11.6.4" } } From ce9fc5f07dd7a8b7a023b8c361e9936d372431aa Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:20:45 +0100 Subject: [PATCH 110/118] _meta --- docs-site/content/docs/_meta.json | 24 ++++++++++++++++++++++++ docs-site/lib/meta.ts | 4 +--- docs-site/lib/source.ts | 2 +- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 docs-site/content/docs/_meta.json diff --git a/docs-site/content/docs/_meta.json b/docs-site/content/docs/_meta.json new file mode 100644 index 00000000..13f6c56c --- /dev/null +++ b/docs-site/content/docs/_meta.json @@ -0,0 +1,24 @@ +{ + "home": { + "title": "Home" + }, + "getting-started": { + "title": "Getting Started" + }, + "related-projects": { + "title": "Related Projects" + }, + "about": { + "title": "About" + }, + "--": { + "title": "Documentation", + "type": "separator" + }, + "core": { + "title": "Core" + }, + "data": { + "title": "Data" + } +} \ No newline at end of file diff --git a/docs-site/lib/meta.ts b/docs-site/lib/meta.ts index 6e0cc3ea..166eab9c 100644 --- a/docs-site/lib/meta.ts +++ b/docs-site/lib/meta.ts @@ -1,5 +1,5 @@ export const docsMetadata = { - pages: [ + docs: [ 'home', 'getting-started', 'related-projects', @@ -8,7 +8,5 @@ export const docsMetadata = { title: 'Documentation', type: 'separator' }, - 'core', - 'data' ] }; \ No newline at end of file diff --git a/docs-site/lib/source.ts b/docs-site/lib/source.ts index 28a77668..9871c2fc 100644 --- a/docs-site/lib/source.ts +++ b/docs-site/lib/source.ts @@ -6,6 +6,6 @@ import { meta } from '@/.source'; // See https://fumadocs.vercel.app/docs/headless/source-api for more info export const source = loader({ // it assigns a URL to your pages - baseUrl: '/docs-site', + baseUrl: '/docs', source: createMDXSource(docs, meta), }); From d53881943874d6dacc5d2f35a5616ae93b71ffc0 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:24:59 +0100 Subject: [PATCH 111/118] updated sidebar --- docs-site/content/docs/{home.mdx => --home.mdx} | 0 .../content/docs/{getting-started.mdx => -getting-started.mdx} | 0 .../content/docs/{related-projects.mdx => -related-projects.mdx} | 0 docs-site/content/docs/{ => Documentation}/core/Levenshtein.mdx | 0 docs-site/content/docs/{ => Documentation}/core/highlight.mdx | 0 docs-site/content/docs/{ => Documentation}/core/yake.mdx | 0 docs-site/content/docs/{ => Documentation}/data/composedword.mdx | 0 docs-site/content/docs/{ => Documentation}/data/datacore.mdx | 0 docs-site/content/docs/{ => Documentation}/data/singleword.mdx | 0 docs-site/content/docs/{ => Documentation}/data/utils.mdx | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename docs-site/content/docs/{home.mdx => --home.mdx} (100%) rename docs-site/content/docs/{getting-started.mdx => -getting-started.mdx} (100%) rename docs-site/content/docs/{related-projects.mdx => -related-projects.mdx} (100%) rename docs-site/content/docs/{ => Documentation}/core/Levenshtein.mdx (100%) rename docs-site/content/docs/{ => Documentation}/core/highlight.mdx (100%) rename docs-site/content/docs/{ => Documentation}/core/yake.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/composedword.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/datacore.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/singleword.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/utils.mdx (100%) diff --git a/docs-site/content/docs/home.mdx b/docs-site/content/docs/--home.mdx similarity index 100% rename from docs-site/content/docs/home.mdx rename to docs-site/content/docs/--home.mdx diff --git a/docs-site/content/docs/getting-started.mdx b/docs-site/content/docs/-getting-started.mdx similarity index 100% rename from docs-site/content/docs/getting-started.mdx rename to docs-site/content/docs/-getting-started.mdx diff --git a/docs-site/content/docs/related-projects.mdx b/docs-site/content/docs/-related-projects.mdx similarity index 100% rename from docs-site/content/docs/related-projects.mdx rename to docs-site/content/docs/-related-projects.mdx diff --git a/docs-site/content/docs/core/Levenshtein.mdx b/docs-site/content/docs/Documentation/core/Levenshtein.mdx similarity index 100% rename from docs-site/content/docs/core/Levenshtein.mdx rename to docs-site/content/docs/Documentation/core/Levenshtein.mdx diff --git a/docs-site/content/docs/core/highlight.mdx b/docs-site/content/docs/Documentation/core/highlight.mdx similarity index 100% rename from docs-site/content/docs/core/highlight.mdx rename to docs-site/content/docs/Documentation/core/highlight.mdx diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/Documentation/core/yake.mdx similarity index 100% rename from docs-site/content/docs/core/yake.mdx rename to docs-site/content/docs/Documentation/core/yake.mdx diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/Documentation/data/composedword.mdx similarity index 100% rename from docs-site/content/docs/data/composedword.mdx rename to docs-site/content/docs/Documentation/data/composedword.mdx diff --git a/docs-site/content/docs/data/datacore.mdx b/docs-site/content/docs/Documentation/data/datacore.mdx similarity index 100% rename from docs-site/content/docs/data/datacore.mdx rename to docs-site/content/docs/Documentation/data/datacore.mdx diff --git a/docs-site/content/docs/data/singleword.mdx b/docs-site/content/docs/Documentation/data/singleword.mdx similarity index 100% rename from docs-site/content/docs/data/singleword.mdx rename to docs-site/content/docs/Documentation/data/singleword.mdx diff --git a/docs-site/content/docs/data/utils.mdx b/docs-site/content/docs/Documentation/data/utils.mdx similarity index 100% rename from docs-site/content/docs/data/utils.mdx rename to docs-site/content/docs/Documentation/data/utils.mdx From 9b99efe6d04f6828570f4b4d7fb4b911eb41c542 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:35:27 +0100 Subject: [PATCH 112/118] sidebar final config --- docs-site/content/docs/--home.mdx | 5 ++++- docs-site/lib/meta.ts | 12 ------------ docs-site/meta.ts | 14 -------------- 3 files changed, 4 insertions(+), 27 deletions(-) delete mode 100644 docs-site/lib/meta.ts delete mode 100644 docs-site/meta.ts diff --git a/docs-site/content/docs/--home.mdx b/docs-site/content/docs/--home.mdx index bb680788..475f23d6 100644 --- a/docs-site/content/docs/--home.mdx +++ b/docs-site/content/docs/--home.mdx @@ -1,4 +1,7 @@ -# Yet Another Keyword Extractor (YAKE!) +--- +title: # Yet Another Keyword Extractor (YAKE!) +icon: GitCompareArrows +--- > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. diff --git a/docs-site/lib/meta.ts b/docs-site/lib/meta.ts deleted file mode 100644 index 166eab9c..00000000 --- a/docs-site/lib/meta.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const docsMetadata = { - docs: [ - 'home', - 'getting-started', - 'related-projects', - 'about', - { - title: 'Documentation', - type: 'separator' - }, - ] -}; \ No newline at end of file diff --git a/docs-site/meta.ts b/docs-site/meta.ts deleted file mode 100644 index 6e0cc3ea..00000000 --- a/docs-site/meta.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const docsMetadata = { - pages: [ - 'home', - 'getting-started', - 'related-projects', - 'about', - { - title: 'Documentation', - type: 'separator' - }, - 'core', - 'data' - ] -}; \ No newline at end of file From b96f10a0f0064edc903e2ffe2b0ae0b12b57ef8a Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:43:25 +0100 Subject: [PATCH 113/118] updated utils and homepage --- docs-site/content/docs/--home.mdx | 3 +- docs-site/content/docs/-getting-started.mdx | 11 +- docs-site/content/docs/-related-projects.mdx | 12 +- .../content/docs/Documentation/data/utils.mdx | 119 ++++++++++++++---- docs-site/content/docs/about.mdx | 12 +- 5 files changed, 129 insertions(+), 28 deletions(-) diff --git a/docs-site/content/docs/--home.mdx b/docs-site/content/docs/--home.mdx index 475f23d6..3247457d 100644 --- a/docs-site/content/docs/--home.mdx +++ b/docs-site/content/docs/--home.mdx @@ -1,5 +1,5 @@ --- -title: # Yet Another Keyword Extractor (YAKE!) +title: Yet Another Keyword Extractor (YAKE!) icon: GitCompareArrows --- > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. @@ -87,7 +87,6 @@ When contributing to this repository, please first discuss the change you wish t If you are feeling nostalgic you can access the old site [here](http://yake.inesctec.pt/). --- -

        Back to top diff --git a/docs-site/content/docs/-getting-started.mdx b/docs-site/content/docs/-getting-started.mdx index 0900cc0b..bcdc0300 100644 --- a/docs-site/content/docs/-getting-started.mdx +++ b/docs-site/content/docs/-getting-started.mdx @@ -170,4 +170,13 @@ The lower the score, the more relevant the keyword is. ('conference in san', 0.12392066376108138) ('service', 0.12546743261462942) ('goldbloom', 0.14611408778815776) -``` \ No newline at end of file +``` +--- +

        +

        + Back to top +

        +

        + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

        +
        \ No newline at end of file diff --git a/docs-site/content/docs/-related-projects.mdx b/docs-site/content/docs/-related-projects.mdx index 8c396869..c43caf2b 100644 --- a/docs-site/content/docs/-related-projects.mdx +++ b/docs-site/content/docs/-related-projects.mdx @@ -23,4 +23,14 @@ Multi-algorithm automated subject indexing tool for libraries, archives and muse - [Portulan Clarin](https://portulanclarin.net/workbench/liaad-yake/) - Provides Sservices and data for researchers, innovators, students and language professionals Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official [website](https://portulanclarin.net/). -- [Tell me stories](https://contamehistorias.pt/arquivopt) is a research project that allows users to automatically build news narratives based on news preserved by the [Portuguese Web Archive](https://arquivo.pt). \ No newline at end of file +- [Tell me stories](https://contamehistorias.pt/arquivopt) is a research project that allows users to automatically build news narratives based on news preserved by the [Portuguese Web Archive](https://arquivo.pt). + +--- +
        +

        + Back to top +

        +

        + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

        +
        \ No newline at end of file diff --git a/docs-site/content/docs/Documentation/data/utils.mdx b/docs-site/content/docs/Documentation/data/utils.mdx index 14ecff45..74e8df1c 100644 --- a/docs-site/content/docs/Documentation/data/utils.mdx +++ b/docs-site/content/docs/Documentation/data/utils.mdx @@ -9,12 +9,23 @@ The `utils` module provides essential text processing functions for YAKE (Yet An ## Module Overview ```python -"""Utility functions for text processing.""" +""" +Text processing utility module for YAKE keyword extraction. + +This module provides essential text preprocessing functions for the YAKE algorithm, +including text normalization, sentence segmentation, tokenization, and word +categorization. These utilities form the foundation for clean and consistent +text analysis throughout the keyword extraction pipeline. +""" import re from segtok.segmenter import split_multi from segtok.tokenizer import web_tokenizer, split_contractions +# Stopword weighting method for multi-word term scoring: +# - "bi": Use bi-directional weighting (default, considers term connections) +# - "h": Use direct term scores (treat stopwords like normal words) +# - "none": Ignore stopwords completely STOPWORD_WEIGHT = "bi" ``` @@ -30,15 +41,36 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def pre_filter(text): - """Pre-filter the text to normalize line breaks and spacing.""" + """ + Normalize text by standardizing line breaks and spacing. + + This function preprocesses raw text to ensure consistent handling of + paragraphs, line breaks, and whitespace. It preserves paragraph structure + by detecting capitalized line beginnings while normalizing other whitespace. + + Args: + text (str): The raw input text to be normalized + + Returns: + str: The normalized text with standardized whitespace and line breaks + """ + # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") + + # Split the text into lines parts = text.split("\n") buffer = "" + + # Process each line for part in parts: + # Determine separator: preserve paragraph breaks for lines starting with capital letters sep = " " if prog.match(part): sep = "\n\n" + + # Append the processed line to the buffer, replacing tabs with spaces buffer += sep + part.replace("\t", " ") + return buffer ``` @@ -51,14 +83,32 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def tokenize_sentences(text): - """Tokenize text into sentences and words.""" + """ + Split text into sentences and tokenize into words. + + This function performs two-level tokenization: first dividing the text into + sentences using segtok's sentence segmenter, then tokenizing each sentence + into individual words. It also handles contractions and filters out empty + or invalid tokens. + + Args: + text (str): The input text to be tokenized + + Returns: + list: A nested list structure where each inner list contains the tokens + for a single sentence in the original text + """ return [ + # Inner list: tokenize each sentence into words [ - w + w # Keep only valid word tokens for w in split_contractions(web_tokenizer(s)) + # Filter out standalone apostrophes and empty tokens if not (w.startswith("'") and len(w) > 1) and len(w) > 0 ] + # Outer list: iterate through sentences for s in list(split_multi(text)) + # Skip empty sentences if len(s.strip()) > 0 ] ``` @@ -72,31 +122,51 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def get_tag(word, i, exclude): - """Determine the tag of a word based on its characteristics.""" - - # Check if word is numeric + """ + Determine the linguistic tag of a word based on its characteristics. + + This function categorizes words into different types based on their + orthographic features (capitalization, digits, special characters). + These tags are used to identify proper nouns, acronyms, numbers, and + unusual token patterns, which affect keyword scoring and filtering. + + Args: + word (str): The word to classify + i (int): Position of the word within its sentence (0 = first word) + exclude (set): Set of characters to consider as punctuation/special chars + + Returns: + str: A single character tag representing the word type: + - "d": Digit or numeric value + - "u": Unusual word (mixed alphanumeric or special characters) + - "a": Acronym (all uppercase) + - "n": Proper noun (capitalized, not at start of sentence) + - "p": Plain word (default) + """ + # Check if word is numeric (with possible commas and a decimal point) if word.replace(",", "").isdigit() or word.replace(",", "").replace(".", "", 1).isdigit(): return "d" - # Use counting instead of list comprehensions for better performance + # Count character types for classification cdigit = sum(c.isdigit() for c in word) calpha = sum(c.isalpha() for c in word) cexclude = sum(c in exclude for c in word) - # Check for unusual combinations + # Classify unusual tokens: mixed alphanumeric, special chars, or multiple punctuation if (cdigit > 0 and calpha > 0) or (cdigit == 0 and calpha == 0) or cexclude > 1: return "u" - # Check for ALL CAPS (acronym) + # Identify acronyms (all uppercase words) if word.isupper() and len(word) > 0: return "a" - # Check for Proper noun (capitalized) + # Identify proper nouns (capitalized words not at sentence beginning) if len(word) > 1 and word[0].isupper() and i > 0: - # Optimized check for single uppercase letter + # Check that only the first letter is uppercase (not an all-caps word) if sum(c.isupper() for c in word) == 1: return "n" + # Default case: plain word return "p" ``` @@ -107,13 +177,13 @@ The `utils` module contains functions for text preprocessing, tokenization, and ### pre_filter -Normalizes text by handling line breaks and spacing to prepare for tokenization. +Normalizes text by handling line breaks and spacing to prepare for tokenization, preserving paragraph structure by detecting capitalized line beginnings. **Parameters:** -- `text` (str): The input text to normalize +- `text` (str): The raw input text to be normalized **Returns:** -- str: Normalized text with standardized spacing and line breaks +- str: Normalized text with standardized whitespace and line breaks **Example:** ```python @@ -127,7 +197,7 @@ print(normalized_text) ### tokenize_sentences -Splits text into sentences and then tokenizes each sentence into words, filtering out invalid tokens. +Performs two-level tokenization: first dividing the text into sentences, then tokenizing each sentence into words while handling contractions and filtering out invalid tokens. **Parameters:** - `text` (str): The input text to tokenize @@ -147,19 +217,19 @@ print(sentences) ### get_tag -Classifies words based on their characteristics, assigning a tag for each word type. +Categorizes words into different types based on their orthographic features (capitalization, digits, special characters), which affect keyword scoring and filtering. **Parameters:** - `word` (str): The word to classify -- `i` (int): The position of the word in its sentence -- `exclude` (set): Set of characters to exclude from regular words +- `i` (int): Position of the word within its sentence (0 = first word) +- `exclude` (set): Set of characters to consider as punctuation/special chars **Returns:** - str: A single character tag representing the word type: - - `"d"`: Digit/number - - `"u"`: Unusual combination (mixed alphanumeric or special characters) + - `"d"`: Digit or numeric value + - `"u"`: Unusual word (mixed alphanumeric or special characters) - `"a"`: Acronym (all uppercase) - - `"n"`: Proper noun (capitalized word not at the beginning of a sentence) + - `"n"`: Proper noun (capitalized, not at start of sentence) - `"p"`: Plain word (default) **Example:** @@ -179,7 +249,10 @@ print(get_tag("test@example", 0, exclude)) # Output: "u" (unusual) ## Module Constants -- `STOPWORD_WEIGHT` (str): Default weighting scheme for stopwords, set to "bi" +- `STOPWORD_WEIGHT` (str): Stopword weighting method for multi-word term scoring: + - `"bi"`: Use bi-directional weighting (default, considers term connections) + - `"h"`: Use direct term scores (treat stopwords like normal words) + - `"none"`: Ignore stopwords completely ## Usage in YAKE Pipeline diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 7b013048..17e6cb75 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -23,4 +23,14 @@ This project was developed by LIAAD - Laboratory of Artificial Intelligence and ## Aknowledgements -Project "TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020" is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file +Project "TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020" is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). + +--- +
        +

        + Back to top +

        +

        + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

        +
        \ No newline at end of file From 31d32e6076cd412173cf70bb0c14b6cead0a88c8 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:50:34 +0100 Subject: [PATCH 114/118] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 11126cf4..54816784 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/gettingstarted#keyword-deduplication-methods) +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/-getting-started#keyword-deduplication-methods) #### Usage (Python) @@ -122,7 +122,7 @@ custom_th = TextHighlighter( ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs/home) +- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs/--home) - 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) - 💻 Pypi: [https://pypi.org/project/yake/](https://pypi.org/project/yake/) From 807453aba4ae2ef187de4a73f7f08aab54604265 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 16:26:51 +0100 Subject: [PATCH 115/118] updated main class documentation --- .../docs/Documentation/core/Levenshtein.mdx | 77 +++-- .../docs/Documentation/core/highlight.mdx | 304 +++++++++++++++++- .../docs/Documentation/data/composedword.mdx | 113 ++----- .../docs/Documentation/data/datacore.mdx | 21 +- 4 files changed, 404 insertions(+), 111 deletions(-) diff --git a/docs-site/content/docs/Documentation/core/Levenshtein.mdx b/docs-site/content/docs/Documentation/core/Levenshtein.mdx index ddc2de76..a2b54887 100644 --- a/docs-site/content/docs/Documentation/core/Levenshtein.mdx +++ b/docs-site/content/docs/Documentation/core/Levenshtein.mdx @@ -10,7 +10,17 @@ The `Levenshtein` class provides utilities for calculating edit distances and si ```python class Levenshtein: - """Class for computing Levenshtein distance and similarity ratio.""" + """ + Class for computing Levenshtein distance and similarity ratio. + + This class provides static methods to calculate the edit distance between + strings (how many insertions, deletions, or substitutions are needed to + transform one string into another) and to determine a normalized similarity + ratio between them. + + These metrics are widely used in fuzzy string matching, spell checking, + and approximate text similarity measurements. + """ ``` The `Levenshtein` class offers methods to measure the difference between two strings and calculate their similarity. @@ -26,14 +36,20 @@ The `Levenshtein` class offers methods to measure the difference between two str ```python @staticmethod def __ratio(distance: float, str_length: int) -> float: - """Calculate the similarity ratio based on distance and string length. - + """ + Calculate the similarity ratio based on distance and string length. + + This method normalizes the Levenshtein distance into a similarity ratio + between 0 and 1, where 1 represents identical strings and 0 represents + completely different strings. + Args: distance (float): The Levenshtein distance between two strings. str_length (int): The length of the longer string. Returns: - float: The similarity ratio. + float: The similarity ratio, where higher values indicate greater similarity. + The range is [0.0, 1.0] where 1.0 means identical strings. """ return 1 - float(distance) / float(str_length) ``` @@ -48,14 +64,20 @@ The `Levenshtein` class offers methods to measure the difference between two str ```python @staticmethod def ratio(seq1: str, seq2: str) -> float: - """Compute the similarity ratio between two strings. - + """ + Compute the similarity ratio between two strings. + + This is the main method for determining string similarity. It calculates + the Levenshtein distance and then converts it to a ratio representing + how similar the strings are. + Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - float: The similarity ratio. + float: The similarity ratio between the two strings, ranging from 0.0 + (completely different) to 1.0 (identical). """ str_distance = Levenshtein.distance(seq1, seq2) str_length = max(len(seq1), len(seq2)) @@ -72,37 +94,52 @@ The `Levenshtein` class offers methods to measure the difference between two str ```python @staticmethod def distance(seq1: str, seq2: str) -> int: - """Calculate the Levenshtein distance between two strings. + """ + Calculate the Levenshtein distance between two strings. + + This method implements the core Levenshtein algorithm, which calculates + the minimum number of single-character edits (insertions, deletions, or + substitutions) required to change one string into another. + + The algorithm uses dynamic programming with a matrix approach to efficiently + compute the minimum edit distance. Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - int: The Levenshtein distance. + int: The Levenshtein distance - the minimum number of edit operations + required to transform seq1 into seq2. """ + # Create a matrix of size (len(seq1)+1) x (len(seq2)+1) size_x = len(seq1) + 1 size_y = len(seq2) + 1 matrix = np.zeros((size_x, size_y)) + # Initialize the first row and column of the matrix for x in range(size_x): - matrix[x, 0] = x + matrix[x, 0] = x # Cost of deleting characters from seq1 for y in range(size_y): - matrix[0, y] = y + matrix[0, y] = y # Cost of inserting characters from seq2 + # Fill the matrix using dynamic programming approach for x in range(1, size_x): for y in range(1, size_y): + # Check if the characters at current positions match if seq1[x - 1] == seq2[y - 1]: - cost = 0 + cost = 0 # No cost for matching characters else: - cost = 1 + cost = 1 # Cost of 1 for substitution + # Calculate minimum cost among deletion, insertion, and substitution matrix[x, y] = min( - matrix[x - 1, y] + 1, # Deletion - matrix[x, y - 1] + 1, # Insertion - matrix[x - 1, y - 1] + cost, # Substitution + matrix[x - 1, y] + 1, # Deletion (remove from seq1) + matrix[x, y - 1] + 1, # Insertion (add from seq2) + matrix[x - 1, y - 1] + cost, # Substitution or match ) + # Return the bottom-right value of the matrix as the final distance return int(matrix[size_x - 1, size_y - 1]) ```
        diff --git a/docs-site/content/docs/Documentation/core/highlight.mdx b/docs-site/content/docs/Documentation/core/highlight.mdx index ae45ca1d..6328964e 100644 --- a/docs-site/content/docs/Documentation/core/highlight.mdx +++ b/docs-site/content/docs/Documentation/core/highlight.mdx @@ -11,7 +11,10 @@ The `TextHighlighter` module provides functionality to highlight specific keywor ```python """ Module for highlighting text based on keywords. -Provides functionality to highlight specific keywords in text. + +This module provides functionality to highlight specific keywords within text documents. +It handles both single word (one-gram) and multi-word (n-gram) keyword highlighting, +allowing for flexible text markup based on keyword extraction results. """ import re @@ -23,7 +26,7 @@ DEFAULT_HIGHLIGHT_PRE = "" DEFAULT_HIGHLIGHT_POST = "" ``` -## Constructor +## Data class ### NgramData @@ -36,7 +39,16 @@ DEFAULT_HIGHLIGHT_POST = "" ```python @dataclass class NgramData: - """Data structure to hold n-gram processing results.""" + """ + Data structure to hold n-gram processing results. + + This class stores the results of n-gram identification for highlighting, + including the list of words and how they are split within keywords. + + Attributes: + word_list: List of words that form the n-gram + split_kw_list: List of lists containing the split keywords + """ word_list: List[str] split_kw_list: List[List[str]] @@ -46,10 +58,10 @@ DEFAULT_HIGHLIGHT_POST = "" A data class to store n-gram processing results containing: -- `word_list`: List of extracted words -- `split_kw_list`: List of split keywords for processing +- `word_list`: List of extracted words that form the n-gram +- `split_kw_list`: List of lists containing the split keywords for processing -### TextHighlighter +## Constructor @@ -97,6 +109,9 @@ A data class to store n-gram processing results containing: def highlight(self, text, keywords): """ Highlights keywords in the given text. + + This is the main entry point for text highlighting. It processes the text + and adds highlight markers around identified keywords. Args: text: The original text to be processed. @@ -130,6 +145,9 @@ A data class to store n-gram processing results containing: def format_one_gram_text(self, text, relevant_words_array): """ Formats text for one-gram highlighting. + + Processes text to highlight individual words that match the keywords, + handling punctuation and maintaining the original text structure. Args: text: The text to process @@ -163,6 +181,9 @@ A data class to store n-gram processing results containing: def format_n_gram_text(self, text, relevant_words_array): """ Formats text for n-gram highlighting. + + Processes text to highlight multi-word phrases that match keywords, + maintaining proper context and handling overlapping keywords. Args: text: The text to process @@ -212,6 +233,9 @@ A data class to store n-gram processing results containing: def find_relevant_ngrams(self, position, text_tokens, relevant_words_array): """ Finds relevant n-grams in the text. + + Identifies potential keywords at the current position by looking ahead + for matches with the provided keywords. Args: position: Current position in text tokens @@ -240,6 +264,9 @@ A data class to store n-gram processing results containing: def process_ngrams(self, text_tokens, position, n_gram_word_list, context): """ Processes n-grams and updates the final text. + + Handles the replacing of n-grams with their highlighted versions, + distinguishing between single-word and multi-word keywords. Args: text_tokens: List of tokens from the text @@ -280,6 +307,9 @@ A data class to store n-gram processing results containing: def replace_token(self, text_tokens, position, n_gram_word_list): """ Replaces tokens in text with highlighted versions. + + Performs the actual replacement of keywords with their highlighted + versions, handling punctuation and maintaining text structure. Args: text_tokens: List of tokens from the text @@ -322,6 +352,9 @@ A data class to store n-gram processing results containing: def _find_more_relevant_helper(self, position, text_tokens, relevant_words_array): """ Helper method for finding relevant n-gram words. + + Checks all possible n-grams starting at the current position and + identifies matches with the provided keywords. Args: position: Current position in text tokens @@ -374,9 +407,11 @@ A data class to store n-gram processing results containing: ): """ Creates a context object for n-gram processing. + + Bundles all the necessary information for processing multi-word + ngrams into a single context dictionary. Args: - position: Current position in text tokens n_gram_word_list: List of n-gram words splited_n_gram_kw_list: List of split n-gram keywords relevant_words_array: Keywords to highlight @@ -394,6 +429,261 @@ A data class to store n-gram processing results containing: ``` + + + + _process_multi_word_ngrams_helper(text_tokens, position, ctx) + + + ```python + def _process_multi_word_ngrams_helper(self, text_tokens, position, ctx): + """ + Helper method for processing multi-word n-grams. + + Handles the complex logic of identifying and highlighting + multi-word phrases in the text. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + kw_list = [] + n_gram_word_list = ctx["n_gram_word_list"] + splited_n_gram_kw_list = ctx["splited_n_gram_kw_list"] + relevant_words_array = ctx["relevant_words_array"] + final_splited_text = ctx["final_splited_text"] + + splited_one = n_gram_word_list[0].split() + + for len_kw in range(len(splited_one)): + if position + len_kw < len(text_tokens): + self._update_kw_list( + position + len_kw, + text_tokens, + relevant_words_array, + { + "kw_list": kw_list, + "splited_n_gram_kw_list": splited_n_gram_kw_list, + }, + ) + + if not kw_list: + return position + 1, text_tokens[position] + + min_score_word = min( + kw_list, key=lambda x: relevant_words_array.index(x.lower()) + ) + + if kw_list.index(min_score_word) == 0: + term_list = [min_score_word] + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + else: + terms_ctx = { + "splited_n_gram_kw_list": splited_n_gram_kw_list, + "min_score_word": min_score_word, + "relevant_words_array": relevant_words_array, + "final_splited_text": final_splited_text, + } + position, new_expression = self._process_relevant_terms_helper( + text_tokens, position, terms_ctx + ) + + return position, new_expression + ``` + + + + + + _update_kw_list(position, text_tokens, relevant_words_array, kw_dict) + + + ```python + def _update_kw_list(self, position, text_tokens, relevant_words_array, kw_dict): + """ + Updates the keyword list and split n-gram keyword list. + + Identifies relevant keywords at a given position and updates + the provided lists with the findings. + + Args: + position: Current position in text tokens + text_tokens: List of tokens from the text + relevant_words_array: Keywords to highlight + kw_dict: Dictionary containing 'kw_list' and 'splited_n_gram_kw_list' + """ + ngram_result = self._find_more_relevant_helper( + position, text_tokens, relevant_words_array + ) + new_kw_list, new_split_list = ngram_result + kw_dict["kw_list"].extend(new_kw_list) + if new_split_list: + kw_dict["splited_n_gram_kw_list"].extend(new_split_list) + ``` + + + + + + _process_relevant_terms_helper(text_tokens, position, ctx) + + + ```python + def _process_relevant_terms_helper(self, text_tokens, position, ctx): + """ + Helper method for processing relevant terms. + + Handles the complex logic of determining which terms to highlight + when multiple options are available. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + splited_n_gram_kw_list = ctx["splited_n_gram_kw_list"] + min_score_word = ctx["min_score_word"] + relevant_words_array = ctx["relevant_words_array"] + final_splited_text = ctx["final_splited_text"] + + if not splited_n_gram_kw_list: + return position + 1, text_tokens[position] + + index_of_more_relevant = splited_n_gram_kw_list[0].index( + min_score_word.split()[0] + ) + temporal_kw = " ".join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + + if temporal_kw.lower() in relevant_words_array: + try: + handle_ctx = { + "temporal_kw": temporal_kw, + "relevant_words_array": relevant_words_array, + "final_splited_text": final_splited_text, + } + return self._handle_temporal_keyword(text_tokens, position, handle_ctx) + except ValueError as e: + print(f"Error: {e}") + term_list = [temporal_kw] + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + else: + nonrelevant_ctx = { + "splited_n_gram_kw_list": splited_n_gram_kw_list, + "index_of_more_relevant": index_of_more_relevant, + "relevant_words_array": relevant_words_array, + } + position, new_expression = self._handle_nonrelevant_temporal_keyword( + text_tokens, position, nonrelevant_ctx + ) + + return position, new_expression + ``` + + + + + + _handle_temporal_keyword(text_tokens, position, ctx) + + + ```python + def _handle_temporal_keyword(self, text_tokens, position, ctx): + """ + Helper method for handling temporal keywords. + + Determines how to highlight keywords that may span across + multiple tokens or have temporal relationships. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + temporal_kw = ctx["temporal_kw"] + relevant_words_array = ctx["relevant_words_array"] + final_splited_text = ctx["final_splited_text"] + + if not final_splited_text: + term_list = [temporal_kw] + return self.replace_token(text_tokens, position, term_list) + + last_item = final_splited_text[-1] + combined_kw = f"{last_item} {temporal_kw}" + + if ( + combined_kw.lower() in relevant_words_array + and relevant_words_array.index(temporal_kw.lower()) + > relevant_words_array.index(combined_kw.lower()) + and not re.findall(self.highlight_pre, last_item) + ): + term_list = [combined_kw] + del final_splited_text[-1] + position -= 1 + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + else: + term_list = [temporal_kw] + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + + return position, new_expression + ``` + + + + + + _handle_nonrelevant_temporal_keyword(text_tokens, position, ctx) + + + ```python + def _handle_nonrelevant_temporal_keyword(self, text_tokens, position, ctx): + """ + Helper method for handling non-relevant temporal keywords. + + Processes keywords that are part of larger phrases but not + relevant on their own. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + splited_n_gram_kw_list = ctx["splited_n_gram_kw_list"] + index_of_more_relevant = ctx["index_of_more_relevant"] + relevant_words_array = ctx["relevant_words_array"] + + if not splited_n_gram_kw_list: + return position + 1, text_tokens[position] + + for tmp_kw in splited_n_gram_kw_list[0][:index_of_more_relevant]: + if tmp_kw.lower() in relevant_words_array: + term_list = [tmp_kw] + return self.replace_token(text_tokens, position, term_list) + + return position + 1, text_tokens[position] + ``` + + ## Usage Example diff --git a/docs-site/content/docs/Documentation/data/composedword.mdx b/docs-site/content/docs/Documentation/data/composedword.mdx index 400d763b..cee48999 100644 --- a/docs-site/content/docs/Documentation/data/composedword.mdx +++ b/docs-site/content/docs/Documentation/data/composedword.mdx @@ -10,8 +10,17 @@ The `ComposedWord` class represents multi-word terms in YAKE (Yet Another Keywor ```python class ComposedWord: - def __init__(self, terms): - # Initialize a composed word from term tuples [(tag, word, term_obj)] + """ + Representation of a multi-word term in the document. + + This class stores and aggregates information about multi-word keyword candidates, + calculating combined scores from the properties of their constituent terms. + It tracks statistics like term frequency, integrity, and provides methods to + validate whether a phrase is likely to be a good keyword. + + Attributes: + See property accessors below for available attributes. + """ ``` The `ComposedWord` class stores and aggregates information about multi-word keyword candidates, calculating combined scores from the properties of their constituent terms. It tracks statistics like term frequency, integrity, and provides methods to validate whether a phrase is likely to be a good keyword. @@ -31,8 +40,8 @@ The `ComposedWord` class stores and aggregates information about multi-word keyw Args: terms (list): List of tuples (tag, word, term_obj) representing - the individual words in this phrase. Can be None to - initialize an invalid candidate. + the individual words in this phrase. Can be None to + initialize an invalid candidate. """ # If terms is None, initialize an invalid candidate if terms is None: @@ -82,7 +91,7 @@ The `ComposedWord` class stores and aggregates information about multi-word keyw **Example:** ```python -from yake.datarepresentation import ComposedWord +from yake.data import ComposedWord # Create a composed word from term tuples terms = [('n', 'natural', term_obj1), ('n', 'language', term_obj2)] @@ -194,7 +203,7 @@ invalid_composed = ComposedWord(None) # Check that at least one tag sequence has no unusual characters or digits for tag in self.tags: is_valid = is_valid or ("u" not in tag and "d" not in tag) - + # A valid keyword cannot start or end with a stopword return is_valid and not self.start_or_end_stopwords ``` @@ -249,11 +258,11 @@ invalid_composed = ComposedWord(None) for term in self.terms if (discart_stopword and not term.stopword) or not discart_stopword ] - + # Calculate aggregate statistics sum_f = sum(list_of_features) prod_f = np.prod(list_of_features) - + # Return the three aggregated values return (sum_f, prod_f, prod_f / (sum_f + 1)) ``` @@ -291,18 +300,18 @@ invalid_composed = ComposedWord(None) "features", ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] ) _stopword = params.get("_stopword", [True, False]) - + # Use defaults if not provided if features is None: features = ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] if _stopword is None: _stopword = [True, False] - + # Initialize feature collection columns = [] features_cand = [] seen = set() - + # Add document identifier if provided if params.get("doc_id") is not None: columns.append("doc_id") @@ -345,7 +354,7 @@ invalid_composed = ComposedWord(None) columns.append("is_virtual") columns.append("is_virtual") features_cand.append(int(params.get("is_virtual", False))) - + # Add all requested features with different stopword handling for feature_name in features: for discart_stopword in _stopword: @@ -353,7 +362,7 @@ invalid_composed = ComposedWord(None) (f_sum, f_prod, f_sum_prod) = self.get_composed_feature( feature_name, discart_stopword=discart_stopword ) - + # Add sum feature columns.append( f"{'n' if discart_stopword else ''}s_sum_K{feature_name}" @@ -429,16 +438,16 @@ invalid_composed = ComposedWord(None) # Handle normal words directly sum_h += term_base.h prod_h *= term_base.h - + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf - + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) - + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) ``` @@ -496,58 +505,12 @@ Candidates are considered valid if: 1. They contain no undefined ("u") or discarded ("d") POS tags 2. They do not start or end with stopwords -```python -def is_valid(self): - """ - Check if this candidate is a valid keyword phrase. - - A valid keyword phrase doesn't contain unusual characters or digits, - and doesn't start or end with stopwords. - - Returns: - bool: True if this is a valid keyword candidate, False otherwise - """ - is_valid = False - # Check that at least one tag sequence has no unusual characters or digits - for tag in self.tags: - is_valid = is_valid or ("u" not in tag and "d" not in tag) - - # A valid keyword cannot start or end with a stopword - return is_valid and not self.start_or_end_stopwords -``` - ### Feature Composition -When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms: - -```python -def get_composed_feature(self, feature_name, discart_stopword=True): - """ - Get composed features from constituent terms. - - Calculates combined metrics for the phrase based on individual term metrics. - - Args: - feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") - discart_stopword (bool): Whether to ignore stopwords in calculation - - Returns: - tuple: (sum, prod, prod_over_sum) of the feature values - """ - # Get feature values from each term, filtering stopwords if requested - list_of_features = [ - getattr(term, feature_name) - for term in self.terms - if (discart_stopword and not term.stopword) or not discart_stopword - ] - - # Calculate aggregate statistics - sum_f = sum(list_of_features) - prod_f = np.prod(list_of_features) - - # Return the three aggregated values - return (sum_f, prod_f, prod_f / (sum_f + 1)) -``` +When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms, calculating: +- Sum of feature values +- Product of feature values +- Product divided by sum+1 ### Score Calculation @@ -575,20 +538,12 @@ The `ComposedWord` class handles stopwords differently based on the `STOPWORD_WE ## Complete Usage Example ```python -from yake.datarepresentation import DataCore, ComposedWord -from yake.stopwordremover import StopwordRemover - -# Initialize stopwords -stopword_remover = StopwordRemover("en") -stopword_set = stopword_remover.get_stopword_set() +from yake.data import ComposedWord +from yake.data.utils import STOPWORD_WEIGHT -# Create DataCore instance -text = "Natural language processing is a field of artificial intelligence." -data = DataCore(text, stopword_set) - -# Get a candidate from the DataCore -candidate_string = "natural language processing" -composed_word = data.build_candidate(candidate_string) +# Create a sample composed word +terms = [("n", "natural", term_obj1), ("n", "language", term_obj2)] +composed_word = ComposedWord(terms) # Update the candidate's score composed_word.update_h() diff --git a/docs-site/content/docs/Documentation/data/datacore.mdx b/docs-site/content/docs/Documentation/data/datacore.mdx index 4c9fe476..4d19b898 100644 --- a/docs-site/content/docs/Documentation/data/datacore.mdx +++ b/docs-site/content/docs/Documentation/data/datacore.mdx @@ -10,8 +10,14 @@ The `DataCore` class is the foundation of YAKE (Yet Another Keyword Extractor), ```python class DataCore: - def __init__(self, text, stopword_set, config=None): - # Initialize the data core with text and configuration + """ + Core data representation for document analysis and keyword extraction. + + This class processes text documents to identify potential keywords based on + statistical features and contextual relationships between terms. It maintains + the document's structure, processes individual terms, and generates candidate + keywords. + """ ``` The `DataCore` class processes text documents to identify potential keywords based on statistical features and contextual relationships. @@ -98,8 +104,13 @@ The `DataCore` class processes text documents to identify potential keywords bas **Example:** ```python -from yake.datarepresentation import DataCore +from yake.data import DataCore import string +from yake.stopword_remover import StopwordRemover + +# Get stopwords +stopword_remover = StopwordRemover("en") +stopword_set = stopword_remover.get_stopword_set() # Initialize with default configuration data = DataCore("Sample text for analysis", stopword_set) @@ -668,8 +679,8 @@ ngram_frequencies = data.freq_ns ## Complete Usage Example ```python -from yake.datarepresentation import DataCore -from yake.stopwordremover import StopwordRemover +from yake.data import DataCore +from yake.stopword_remover import StopwordRemover # Initialize stopwords stopword_remover = StopwordRemover("en") From dac77812452ce47bff03055f5b1c4cec7e6bd2ad Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 17:54:26 +0100 Subject: [PATCH 116/118] changed to uv --- .github/workflows/resultados.yml | 13 +-- Makefile | 24 ++--- .../content/docs/Documentation/core/yake.mdx | 33 ++++-- .../docs/Documentation/data/composedword.mdx | 51 +++++++--- .../docs/Documentation/data/datacore.mdx | 31 ++++-- .../content/docs/Documentation/data/utils.mdx | 46 ++++++--- pyproject.toml | 53 ++++++++++ requirements.txt | 28 ----- setup.cfg | 28 ----- setup.py | 96 ------------------ .../__pycache__/Levenshtein.cpython-310.pyc | Bin 2215 -> 4123 bytes yake/core/__pycache__/yake.cpython-310.pyc | Bin 8237 -> 9045 bytes yake/core/yake.py | 33 ++++-- .../__pycache__/composed_word.cpython-310.pyc | Bin 11292 -> 11664 bytes yake/data/__pycache__/core.cpython-310.pyc | Bin 15883 -> 16521 bytes yake/data/__pycache__/utils.cpython-310.pyc | Bin 4415 -> 4900 bytes yake/data/composed_word.py | 22 ++-- yake/data/core.py | 30 +++--- yake/data/utils.py | 25 +++-- 19 files changed, 260 insertions(+), 253 deletions(-) create mode 100644 pyproject.toml delete mode 100644 requirements.txt delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index dda897db..28e2acb9 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -9,7 +9,6 @@ on: - master workflow_dispatch: - jobs: test: runs-on: ubuntu-latest @@ -18,6 +17,9 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Install uv + run: pip install uv + - name: Set up Python uses: actions/setup-python@v4 with: @@ -25,14 +27,13 @@ jobs: - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - pip install pytest + uv pip install . + uv pip install pytest - name: Run tests id: run-tests run: | - pytest -v tests/test_yake.py | tee test_output.log + uv pip run pytest -v tests/test_yake.py | tee test_output.log - name: Verify test results run: | @@ -49,4 +50,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: test-logs - path: test_output.log + path: test_output.log \ No newline at end of file diff --git a/Makefile b/Makefile index 6e78d428..6a25f0ec 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,21 @@ install: - pip install --upgrade pip &&\ - pip install -r requirements.txt - # uv pip install -r requirements.txt + uv pip install --upgrade pip + uv pip install . test: - # python -m pytest --nbval *.ipynb - python -m pytest -vv --cov= test_*. - + uv pip install pytest + uv pip run pytest -vv --cov= test_*. format: - black . + uv pip install black + uv pip run black . lint: - ruff check --fix . - ruff check . + uv pip install ruff + uv pip run ruff check --fix . + uv pip run ruff check . deploy: - # no rules for now - -all: install lint test format + # no rules for now + +all: install lint test format \ No newline at end of file diff --git a/docs-site/content/docs/Documentation/core/yake.mdx b/docs-site/content/docs/Documentation/core/yake.mdx index 4188c551..2dc6cbb2 100644 --- a/docs-site/content/docs/Documentation/core/yake.mdx +++ b/docs-site/content/docs/Documentation/core/yake.mdx @@ -90,20 +90,33 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra ```python def extract_keywords(self, text): """ - Extract keywords from text. + Extract keywords from the given text. - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords + This function implements the complete YAKE keyword extraction pipeline: + 1. Preprocesses the input text by normalizing whitespace + 2. Builds a data representation using DataCore, which: + - Tokenizes the text into sentences and words + - Identifies candidate n-grams (1 to n words) + - Creates a graph of term co-occurrences + 3. Extracts statistical features for single terms and n-grams + - For single terms: frequency, position, case, etc. + - For n-grams: combines features from constituent terms + 4. Filters candidates based on validity criteria (e.g., no stopwords at boundaries) + 5. Sorts candidates by their importance score (H), where lower is better + 6. Performs deduplication to remove similar candidates based on string similarity + 7. Returns the top k keywords with their scores + + The algorithm favors keywords that are statistically important but not common + stopwords, with scores reflecting their estimated relevance to the document. + Lower scores indicate more important keywords. + Args: - text (str): The input text to extract keywords from - + text: Input text + Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) + List of (keyword, score) tuples sorted by score (lower is better) + """ # Handle empty input if not text: diff --git a/docs-site/content/docs/Documentation/data/composedword.mdx b/docs-site/content/docs/Documentation/data/composedword.mdx index cee48999..870e913f 100644 --- a/docs-site/content/docs/Documentation/data/composedword.mdx +++ b/docs-site/content/docs/Documentation/data/composedword.mdx @@ -241,16 +241,21 @@ invalid_composed = ComposedWord(None) ```python def get_composed_feature(self, feature_name, discart_stopword=True): """ - Get composed features from constituent terms. - - Calculates combined metrics for the phrase based on individual term metrics. - + Get composed feature values for the n-gram. + + This function aggregates a specific feature across all terms in the n-gram. + It computes the sum, product, and ratio of the feature values, optionally + excluding stopwords from the calculation. + Args: - feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") - discart_stopword (bool): Whether to ignore stopwords in calculation - + feature_name: Name of feature to get (must be an attribute of the term objects) + discard_stopword: Whether to exclude stopwords from calculation (True by default) + Returns: - tuple: (sum, prod, prod_over_sum) of the feature values + Tuple of (sum, product, ratio) for the feature where: + - sum: Sum of the feature values across all relevant terms + - product: Product of the feature values across all relevant terms + - ratio: Product divided by (sum + 1), a measure of feature consistency """ # Get feature values from each term, filtering stopwords if requested list_of_features = [ @@ -507,10 +512,32 @@ Candidates are considered valid if: ### Feature Composition -When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms, calculating: -- Sum of feature values -- Product of feature values -- Product divided by sum+1 +When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms: + +```python +def get_composed_feature(self, feature_name, discart_stopword=True): + """ + Get composed feature values for the n-gram. + """ + # Get feature values from each term, filtering stopwords if requested + list_of_features = [ + getattr(term, feature_name) + for term in self.terms + if (discart_stopword and not term.stopword) or not discart_stopword + ] + + # Calculate aggregate statistics + sum_f = sum(list_of_features) + prod_f = np.prod(list_of_features) + + # Return the three aggregated values: sum, product, and product/(sum+1) + return (sum_f, prod_f, prod_f / (sum_f + 1)) +``` + +For each feature, this method calculates: +- Sum of feature values across terms +- Product of feature values across terms +- A ratio metric: product/(sum+1) measuring feature consistency ### Score Calculation diff --git a/docs-site/content/docs/Documentation/data/datacore.mdx b/docs-site/content/docs/Documentation/data/datacore.mdx index 4d19b898..197a9c73 100644 --- a/docs-site/content/docs/Documentation/data/datacore.mdx +++ b/docs-site/content/docs/Documentation/data/datacore.mdx @@ -17,6 +17,9 @@ class DataCore: statistical features and contextual relationships between terms. It maintains the document's structure, processes individual terms, and generates candidate keywords. + + Attributes: + See property accessors below for available attributes. """ ``` @@ -402,8 +405,9 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Build a candidate ComposedWord from a string. - This method allows creating candidate keywords from external input - strings rather than from the document's own text. + This function processes a candidate string by tokenizing it, tagging each word, + and creating a ComposedWord object from the resulting terms. It's used to + convert external strings into the internal candidate representation. Args: candidate_string (str): String to convert to a keyword candidate @@ -451,10 +455,10 @@ data = DataCore("Sample text for analysis", stopword_set, config) ```python def build_single_terms_features(self, features=None): """ - Build statistical features for single terms. - - Calculates term frequency statistics and updates the scoring metrics - for each individual term. + Calculates and updates statistical features for all single terms in the text. + This includes term frequency statistics and other features specified in the + features parameter. Only non-stopword terms are considered for statistics + calculation. Args: features (list, optional): Specific features to calculate @@ -496,10 +500,11 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Build features for multi-word terms. - Updates the scoring metrics for valid candidate keywords. + Updates the features for all valid multi-word candidate terms (n-grams). + Only candidates that pass the validity check will have their features updated. Args: - features (list, optional): Specific features to calculate + features (list, optional): List of features to build. If None, all available features will be built. """ # Update only valid candidates (filter then apply update_h) list( @@ -582,7 +587,9 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Add a co-occurrence relationship between two terms. - Creates or updates an edge in the co-occurrence graph between terms. + Updates the co-occurrence graph by adding or incrementing an edge between + two terms. This information is used to calculate term relatedness and + importance in the text. Args: left_term (SingleWord): Source term in the relationship @@ -609,10 +616,12 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Add or update a composed word in the candidates collection. - Handles the registration and frequency counting of keyword candidates. + Adds a new candidate composed word (n-gram) to the candidates dictionary + or updates an existing one by incrementing its frequency. This is used to + track potential keyphrases in the text. Args: - cand (ComposedWord): The candidate keyword to add or update + cand (ComposedWord): ComposedWord instance to add or update in the candidates dictionary """ # Check if this candidate already exists if cand.unique_kw not in self.candidates: diff --git a/docs-site/content/docs/Documentation/data/utils.mdx b/docs-site/content/docs/Documentation/data/utils.mdx index 74e8df1c..8077eca2 100644 --- a/docs-site/content/docs/Documentation/data/utils.mdx +++ b/docs-site/content/docs/Documentation/data/utils.mdx @@ -41,18 +41,27 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def pre_filter(text): - """ - Normalize text by standardizing line breaks and spacing. + """Pre-filter text before processing. + + This function prepares raw text for keyword extraction by normalizing its format. + It performs several transformations: - This function preprocesses raw text to ensure consistent handling of - paragraphs, line breaks, and whitespace. It preserves paragraph structure - by detecting capitalized line beginnings while normalizing other whitespace. + 1. Splits the text into parts based on newline characters + 2. Detects if a part starts with a capital letter (potentially a new paragraph) + 3. Adds appropriate spacing between parts: + - Double newlines for parts starting with capital letters (likely new paragraphs) + - Single spaces for other parts (likely continuing text) + 4. Replaces all tab characters with spaces for consistent formatting + This preprocessing helps maintain paragraph structure while normalizing + whitespace, which improves the accuracy of subsequent text analysis steps + like sentence boundary detection and keyword extraction. + Args: - text (str): The raw input text to be normalized - + text: Raw input text to be pre-filtered + Returns: - str: The normalized text with standardized whitespace and line breaks + Normalized text with consistent spacing and paragraph structure """ # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") @@ -177,22 +186,35 @@ The `utils` module contains functions for text preprocessing, tokenization, and ### pre_filter -Normalizes text by handling line breaks and spacing to prepare for tokenization, preserving paragraph structure by detecting capitalized line beginnings. +Pre-filters text before processing by normalizing its format. It maintains paragraph structure while standardizing spacing and line breaks to improve the accuracy of subsequent text analysis steps. **Parameters:** -- `text` (str): The raw input text to be normalized +- `text` (str): Raw input text to be pre-filtered **Returns:** -- str: Normalized text with standardized whitespace and line breaks +- str: Normalized text with consistent spacing and paragraph structure + +**How it works:** +1. Splits the text into parts based on newline characters +2. Detects if a part starts with a capital letter (potentially a new paragraph) +3. Adds appropriate spacing between parts: + - Double newlines for parts starting with capital letters (likely new paragraphs) + - Single spaces for other parts (likely continuing text) +4. Replaces all tab characters with spaces for consistent formatting **Example:** ```python -from yake.utils import pre_filter +from yake.data.utils import pre_filter raw_text = "This is line one.\nThis is line two.\tAnd this has a tab." normalized_text = pre_filter(raw_text) print(normalized_text) # Output: " This is line one. This is line two. And this has a tab." + +raw_text = "This is line one.\nAnother paragraph.\nThis continues." +normalized_text = pre_filter(raw_text) +print(normalized_text) +# Output: " This is line one.\n\nAnother paragraph. This continues." ``` ### tokenize_sentences diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..f48e808c --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,53 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "yake" +version = "0.6.0" +description = "Keyword extraction Python package" +readme = "README.md" +requires-python = ">=3.8" # Changed from >=3.7 to >=3.8 +license = {text = "LGPLv3"} +authors = [ + {name = "Tiago Vaente", email = "tiago.leando.valente@ubi.com"}, +] +dependencies = [ + "tabulate", + "segtok", + "networkx", + "numpy>=1.23.5", # This version requires Python >=3.8 + "click>=6.0", + "jellyfish", +] +classifiers = [ + "Development Status :: 3 - Alpha", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Programming Language :: Python :: 3", + # Remove Python 3.5, 3.6, 3.7 classifiers + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Scientific/Engineering :: Information Analysis", + "Topic :: Software Development :: Libraries", + "Topic :: Text Processing", + "Topic :: Text Processing :: Linguistic", +] + +[project.optional-dependencies] +dev = [ + "pytest", + "flake8", + "pytest-runner", # Added from setup_requirements +] + +[project.urls] +Documentation = "https://tiagolv.github.io/yakerf/docs/--home" +Source = "https://github.com/LIAAD/yake" + +[project.scripts] +yake = "yake.cli:keywords" + +[tool.hatch.build.targets.wheel] +packages = ["yake", "StopwordsList"] # Explicitly include these packages \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 80e8d12f..00000000 --- a/requirements.txt +++ /dev/null @@ -1,28 +0,0 @@ -#devops -black==22.3.0 -click==8.1.3 -pytest==7.1.3 -pytest-cov==4.0.0 -pylint==2.15.3 - -#web -fastapi==0.85.0 -uvicorn==0.18.3 - - -#docs-site -npm -nextra - -#basic libraries - -ruff==0.0.290 -nbval==0.10.0 -tabulate -pytest -flake8 -segtok -jellyfish -networkx -numpy -click \ No newline at end of file diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 62c06d4d..00000000 --- a/setup.cfg +++ /dev/null @@ -1,28 +0,0 @@ -[bumpversion] -current_version = 0.4.8 -commit = True -tag = True - -[bumpversion:file:setup.py] -search = version='{current_version}' -replace = version='{new_version}' - -[bumpversion:file:yake/__init__.py] -search = __version__ = '{current_version}' -replace = __version__ = '{new_version}' - -[bdist_wheel] -universal = 1 - -[flake8] -exclude = docs - -[aliases] -test = pytest - -[metadata] -description-file = README.rst - -[egg_info] -tag_build = -tag_date = 0 diff --git a/setup.py b/setup.py deleted file mode 100644 index 586ffc64..00000000 --- a/setup.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""The setup script.""" - -from setuptools import setup, find_packages - -README = """ -# Yet Another Keyword Extractor (Yake) - -Unsupervised Approach for Automatic Keyword Extraction using Text Features. - -YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app. - -## Main Features - -* Unsupervised approach -* Corpus-Independent -* Domain and Language Independent -* Single-Document - -## Where can I find YAKE!? -YAKE! is available online [http://yake.inesctec.pt], as an open source Python package [https://github.com/LIAAD/yake] and on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake). - -## References -Please cite the following works when using YAKE - -In-depth journal paper at Information Sciences Journal - -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) - -ECIR'18 Best Short Paper - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) - -## Awards -[ECIR'18](http://ecir2018.org) Best Short Paper -""" -requirements = [ - 'tabulate', - 'click>=6.0', - "numpy", - "segtok", - "networkx", - "jellyfish"] - -setup_requirements = [ - 'pytest-runner' -] - -test_requirements = [ - "pytest", - "flake8" -] - -setup( - name='yake', - version='0.4.8', - description="Keyword extraction Python package", - long_description=README, - long_description_content_type='text/markdown', - url='https://pypi.python.org/pypi/yake', - project_urls={ - 'Documentation': 'https://liaad.github.io/yake/', - 'Source': 'https://github.com/LIAAD/yake', - }, - packages=find_packages(include=['yake','StopwordsList']), - entry_points={ - 'console_scripts': [ - 'yake=yake.cli:keywords' - ] - }, - license="LGPLv3", - include_package_data=True, - install_requires=requirements, - zip_safe=False, - keywords='yake', -classifiers=[ - 'Development Status :: 3 - Alpha', - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Topic :: Scientific/Engineering :: Information Analysis', - 'Topic :: Software Development :: Libraries', - 'Topic :: Text Processing', - 'Topic :: Text Processing :: Linguistic', - ], - test_suite='tests', - tests_require=test_requirements, - setup_requires=setup_requirements, -) diff --git a/yake/core/__pycache__/Levenshtein.cpython-310.pyc b/yake/core/__pycache__/Levenshtein.cpython-310.pyc index 2a6ba6955d3c843d61c5cdc9b70936ce160832f9..9132bea54e757b02403181a04f4132b2f610ccbf 100644 GIT binary patch literal 4123 zcmd5RLnOJTKI*=kUwYU-E>AX;hi8D4U6w4&nONGM+v`-|nnN*UFJ(1>I%AA?=f@wo5 z^qBq0Y_ye{ofIZ!9IBny!rK}SNN>*aLS;NnE~Q{P$&!@g=#{(AAv=$g2r`spOD$*1 z)M^wJ*#fIz4kIs2b+#3k2;4B4t!Q#l7#i@DW!ywD6gtPHm`;;S5dLu}J0g%>5z3zE$nLBsx}x`0=h{Es!OV{Ai#}dAb4Lv9 z%$=>79`@W7Lpw7N_u%l|@@~tw{2%0fhUbHnYhB-ZY3O3Dg^gj!m^bY=wjyj}Lm{%l zTr|NP2p^L~aIlFBfv{-eN7@+K3X96!R@%nh>>w`AVcmSil3Yt=c8Zk!2m(1zy-AgK_LxEsbo8mY1bt6mT_R-Qvb z9h|Yuw#*>4q#LUwa>|?|WYQIdm%yoPw!FMtRa)4%fyED*UdS|M2%_j2jqO1;d>63h zMS_JenGMD!gdK1k=9~&;zrt)efC;Cm%;zR9drF$6%A){bRz1}3;Qauvet<^!##?*W z)cV){FT8yZQ4{dLVWHK=2FnKi&V4tdft_%=WO0KzoG+Qv#py}1YN3uqY>YHmy-gz3 z%{H#P6^pgJ$}>mSt&a)gAQbkPDY;Pa4l$I2G1#mEw_SVGT2hN6GC;VI4=Zk}DdBr= z^S+wvx9iPx(OU6?Sz2&2dYe7H!H@NdO7%A5ZOLk!$_^018(Ge@te9C;rA0oMfQ4mD zkTmH)&!;vBZYXC}avI%qXJxn;bOw26JY53QNiLFzqH(SyJ~*ci$i^D(Kx*l#z~5Xl zWQs42#z%+j@%ZS=$|vI^qJO~lmO~n0-+`*UkzaP5`2rPUtSENB^;939|NLQ+`xICGx_%r$F$@s{2CQ+f}q{VaN#j4zyPA#^74w;(p z@!0{eI*}@d*RAcH_7#Qyxe+@i653T|en9$-YBz#>5S0QFQ>tG!| zr-bbDUvD7|QMV+_!+wp0H(B@x!=(1N#TBehA~Fu@aXf6fzG6CJ`wc#uQ*4s0GQHHb zKoZn4M-$kVK4WC+sL0R2(r~9CKBd$QR&G#*<7#Qd?3**)EnS8u0&jd@uf7c{@&P-5 z@*5D$5~V9(+EinccuN+ABQ`y0Z_*MfBd^)Bw|3Ph|5(^mdCXp_1>{4E12Xtb6&V8* z>LW-q_Z)m5+l)vtpazh))dyTNYD_fhDvDK$iZaajMHzw*%2%c>S8W1!)KPb7=@3mh z#HFVd^H?}pFuCRqt>{|sJwjLa&clVtscKUePT#sNX0tnwC~aGYagf%`9HT%y_G*(hHS9(Be1=} z^Nqrrm~9KDb+uhpyDxw?3ZEofW-MQ3C*XBt6OCw1<)bL(iburtRIq8vJTIul>WJQ| z$wnZ6(`BM;NroE7rh^yMVohAvvM7brcc3~-GqK8fhRPDP(OmHin$KPB&8ZYu$pzz7 zH*u8qfR3Eak|;smPgk{2!db00_tY->Wson*?xj?PCgMQG2N@-K8B&?jZ}Cn~fH%{fp9Hm7S;nFA<3}L}aP$_xMS_iDvk-p}*@7L%jIz;=3R8{7w*rd;XsP zs=xcc;NSZ%T|Q``Yh2OXC!@P%e>z3*$mz5kOsDR@EBeFf^mNJ7%?v65QAG5!`wQcc zrs)5gdX<`&(3BxGRrhIVE0RWO+anUR%zO_W{W6-q*YShlz8~!2eeg@)&VrK}=E^Q$ fw^-5tdbg`(gIZkKf5$2OJ2Jc_<&M|Cvlsp!<#wyB delta 244 zcmbQOuw0NYpO=@50SF4taAZ_+OyqN5s{(985kxv zv$#wy;FX@dgLTK`cWl+%oIriWOh7_}dvXbTHdEEj$#2<>fJ)3Kn{jGSHf6J(%*&O< zEe2A?1|)d6H#cz^GjdlwbWY4kF3m|SNuAulAvO6Kw<{2}U+X7A7VpAx0raF-E?>Our;}ChPKdi-YVb761|)3@nUHOcIPt QJV4Ah`8>ZTGm{WA0N{x;%K!iX diff --git a/yake/core/__pycache__/yake.cpython-310.pyc b/yake/core/__pycache__/yake.cpython-310.pyc index 8c5c5d27cc6c7f164e607d5f06e312208de086aa..c5d843e5708ed96a11a97095f7f149ae8bdcb3eb 100644 GIT binary patch delta 1222 zcmZWpy>1gh5XML}mK=mYLdL`ysBB@MWPT;nLcxwov-`WXcD#&BkI$kwtYhi<8|+?Cxl zUXaoz6^T5NYD)81I<}bzxdON!(6d}7ktIQqaDqGIaWL9qJ=i@?<^V^9Bj0$-}S$H4-YKxi*o#*tj2|LQW(qLX=1_U{d|55virlfPkS^ zeckho%RcQHMy+R!;w&aTfnt+VsQWq$b7RW6RnvojUK~3kLTAZ(Y1YY5Bs2j^4!tzd zhP>2-OPm$sHIoXZ6g$#pd7*Sj6T|Ow3|#am(^h)pdJtsc7rQX{um4Qq5OmYARDOO% z#AvTVfuIAX57ML?+a3lqlFI}?p0mu-7{ek$UNdAJNw=WTAZsH9bvT#?J?sI5>#Pic zgrl*}RU{0o-&p%7pm*B9qACm^FZ@zTLo&_qP9RQN+7Qb?otIs|5R9*ho-;~N&JJTM z#gDO{Y+x?(j5x}(1h$upg=h_@ddBcFm5DGHhMvi>&iMUXmq1sEy!6}uB%rs9@YHJS zp^c8{h!-n`bLrwW@sjMu!HU}gPZN01MI#(m(E&hZ^f`n4(YHh+O2!V mZtH99XYr@?5uYD!f2;j2UTq)O{+@o{Zr5r%r@z{-YySWYMw9LU delta 386 zcmY+9&q~8U5XMav53%V%y#yg0s$xSWSgV(U;2%)IoAw2kWYUHvyX)=-+mjFAai2q^ z^bLFi5Bd@wd;l+QYE$SOX5gFO%zX2C{d!(wj$^NwxaB*8_5DfBbt_&)`)*?uM@qN1 zx3sfS)noVaxg9{yXut(>!9tWWp?w?Xaa?po28IwMR0*R%Xaq45l?#NBWjt4;&=(_} z0Im#^L_{GBas0$Y1bw6^mbsGv9zu2_%(>al2&0^*Nw`d%25?X4u!JP0_-}*7pcpR? zNd3FE*HOhIO{s+6h28)mp~fA|RK?0479$V~mg%Ev>mW^}>cRyS6^g~i2uf(q-5-Js nnLuBkc`g0uO{@>STYoY6t^RI(X#peaXZj7EWo=IF#+~&C7p#3G diff --git a/yake/core/yake.py b/yake/core/yake.py index e926d2a4..1d655c3c 100644 --- a/yake/core/yake.py +++ b/yake/core/yake.py @@ -168,20 +168,33 @@ def seqm(self, cand1, cand2): def extract_keywords(self, text): """ - Extract keywords from text. + Extract keywords from the given text. - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords + This function implements the complete YAKE keyword extraction pipeline: + 1. Preprocesses the input text by normalizing whitespace + 2. Builds a data representation using DataCore, which: + - Tokenizes the text into sentences and words + - Identifies candidate n-grams (1 to n words) + - Creates a graph of term co-occurrences + 3. Extracts statistical features for single terms and n-grams + - For single terms: frequency, position, case, etc. + - For n-grams: combines features from constituent terms + 4. Filters candidates based on validity criteria (e.g., no stopwords at boundaries) + 5. Sorts candidates by their importance score (H), where lower is better + 6. Performs deduplication to remove similar candidates based on string similarity + 7. Returns the top k keywords with their scores + + The algorithm favors keywords that are statistically important but not common + stopwords, with scores reflecting their estimated relevance to the document. + Lower scores indicate more important keywords. + Args: - text (str): The input text to extract keywords from - + text: Input text + Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) + List of (keyword, score) tuples sorted by score (lower is better) + """ # Handle empty input if not text: diff --git a/yake/data/__pycache__/composed_word.cpython-310.pyc b/yake/data/__pycache__/composed_word.cpython-310.pyc index 7ce1e8bc2bd9be404ee0b5740c0d6ee63e917748..76071d217b1a1c37e327960ff2fe3cfb0e24a848 100644 GIT binary patch delta 835 zcmbV~Ka12r7{)i8AO!9}@J}6~dC_7BwuS0+S(#NvcRO4g0^djJv57)Nm<)q^ZJ` z825vKE|KyDr@a=TN@_RB^9l^ALIW2A)sE-k8pL`X@2YJPL#ZUQ)Wkpp14W!4$VEFI zvc@1w594fB&~xGm%`M|11#M(`?N}=2xRoqg1xj*ibFV3;Vf|zGPL;r8QlNL})QyDH zH8d`)HZVtr0mK-^=MJ+Y@u@)0Um-O*>b-p|#x*61z4Y$hJb|Yfx@@ji32Qi)^Y2i@ z%@%C~3&t~L5#}pkxF9w+QCPpnW|eEz@*zy0!Qmr{fFMBTpQtBjPWIB?lN5kJ}Vr+y(r#ycUB5_^8(H;1SfTT>t}Gkxpe#MR?yVn SqtoDZlkFb`!HxR!0sRA>uo7(m delta 337 zcmXwzJxc>Y5QekFC+5Vj5C zAFz;X#7YanE;e?S{ss#x*RLsFhMAX#=kj=ZRHQ;7pD}|6HUFb`TkMu{_biji>%G#_ zd<>qXP(NlX`h2z0b0{2$2wezKN#U3;Nl-q*$d^1u7?^N@A`p=)#==c_019RJ*VmgH z?VcU+5TPC`+1P>p_fFmq!$YnTiJ%DZR7vhAsAFf?0c+w(Jh56}DbLam<;7iP$BIT1 zk}lK-M1dh4`e;Oq4S^U&WH|qo*w}!>11AZ%5)|e2ba}fPCt(XllHA|4X^he~$A)I* zvi2%h>`v#ZGgeGrtDg((DScU)%`vI3*WTGydba+YWjDItykL{`t+~%wO}E?57yl@9 AF8}}l diff --git a/yake/data/__pycache__/core.cpython-310.pyc b/yake/data/__pycache__/core.cpython-310.pyc index 9a3852b964e119e7fb32aa9edb68ea33981a82db..4ca9cd219746eda097e7a6a2c1c4c9a3e6de3f0b 100644 GIT binary patch delta 1374 zcmZuxJ!}+581)zd#yAe16frb>z^6cG(Xwk)L&5xtQJEux@EnLY*I?4I|G#8$i7+4sHozW4TryASTM z{bp)ve1xvg9@diSuQ&GBW=E$+!}-}O{Z_7pS4Kl-jX>wn0SCdgRFZoH=dIFhX!gLH zRn+R+_@sOdJa4z-J#vvi*H~E_hrvZ3gRsbbe9vLobTZ>m-k?KZnzvARXj#(%pCCw! zE>DY-9&N`pV8tJIkkfgZSV0P-*U);vJ9J9(bim7j(%uw6bW^?=a<`ZfI%*%*51-gP zHg}P+??Zax8T%zHocxy^2uEsf`dv0MQjJ;WsmN2(O(u|tJc}MU8b(^2SAqt&NLNm< z&@vWyN=!&)icqj8It3X|JR242SBZ*5MVd?cE*>QPcsoZedI9SP`i7jaLu8ksP%T9c zlyDVLH9O;$caV@8a7Cv*&_>stH(A`nfC;w<#6%^$ROs z(3-%shF(%Snz>3P<*EgjjmBEBG`_}F%A2&eN=Y%GiN$f>2wQVAVSV8O+Y0|JJYvto z&x=1!{7v%RB-LniVsr7#ce~g>VdLX<_D5)*y|(vy8J4hh_Je*8xRf#d0Z&7g=EOCyi zS?p-X@}w$$Bi!~X8YF(ZL7a5oi4}^TXwu(%*B9m8#bGHLP?}H)uOPkUl!eUr=qI&t z6?<7?dHidYT?zlsHp11V>E(C+I!aUaqZ`DVHWSxUGTXN2y+XqMr7tIrM6brktI5gD XH%m9!zLVo0jUOCaoID&>K7INYGG^B& delta 692 zcmZXSKWLLd7{+s{)-*{gwupb);Z=#PwQaObp=n|j#Yv0QKZ6v9^S(>+;g|2?-F=M} zMLKj4!9w3fQA-EGK?Ef@3Q~|RqJs_&QVHnb?%?SArA-CB?cnZte$Vs1cjwr>TOF#s zJszR+_)DxbdFfThKwtC`!+hVlJ7sB0$^q_qs%k)J$*t=bL2%!39d0FDle1N&9Rmfe z${=r8seSH&>sJCBhmB*bre6j$wirE{ed52T`Ur5zJrs2>p5U7;Th`+A}A1Qpe2DR4TkJJN!q$> zu%7CQo#LJdJZ`Z*xGx`6!YGEgBp9JWR-oY86=u^QRFPbiD4FBVxK2P8p&Y5DaCxK~ zSBK`=bDT^s;n{Q>{z_kAukrkm&+IMs9{t9aaog}>^yV5a4WHTbk4J-WhI_7qZ+gZy z#4@-ybAo-q>C7|s5nDzV5-XI~Bxy>~cA996CSrt fTuAH=F=B*~jMv1(G;8aR?~m_@jU+p9_4vvk;GynI diff --git a/yake/data/__pycache__/utils.cpython-310.pyc b/yake/data/__pycache__/utils.cpython-310.pyc index ddb2312bd5f7195c510c718bea4b7952ef3ffe26..4040721629d72721b73d9e756f29cf659f4daaab 100644 GIT binary patch delta 1026 zcmZuwF>4e-6u!+FFo(GWK@bFaq>w1dff^7}2!S*f#&EF`o7vfSx5LfNOlD@Y*%WSP zFI!sbACMGwDt21<7yK)}nceduxUgHyzVE&7``$NSw?5t*>h<+OkDl)zcJk9(pN93y z*0+AIcWiNYBBVzP9?w0bIMEitSk2M7=I093%%TI!%C>-h!wjoZ+YAU`8TUdfNGnj< z&Y2V!LQO$<2UIy{el!4jo_R26!-)fjXK0xO!YbDmQ3tml3*+bE2u_R)J$#OJJ69;L z!7xjQDRYxoEhPXgG3*sZyW7V zdBLQt=r8pRAU3tk{L99{wiGiYCXomE-x6^xk=Xf!u+%vapyh;}XtK(7-4}SSNs}tVoUq&$ zzc+$08X1A47d%U^7}yfJ(wEn?8{vXI-A1Y9bh)dSxo{L0>=F}ZXG%2%0-V9YWxu_2v$jI(z_1OlVX(V~TI4@|?73c}LB6WCL1X?k;Ofgvz zQ5u4#%|URH(x!+zM@V&{GG;5tVm3l(naci?<vvoQ18Q-E`U&`=*CeP z({N1|w+FKpHAd362y;mOQKyj-8+o=1UwXR8P~h@6b4#Zpm5XM6?MHI^^2sXiC&$hE y>veL}+*vD6p06fl^Lwb1^XA3IG^v`;8?TbL&CShO^16Am`KABh#@#=1JYa+X delta 480 zcmYk3ze@u#6vvwuf3>!Hij$&G5kV+!j)IGbqJq}REzLdeLThp)xmF8ug8zY89o-y? zbl1h*KS1!`a5Z-=_1=)-CEw5YeP3R-J~nEyS}hk`C5`3qaq+E|6!*SKp-=`_XHwnJ zHt!)Ayfx6g18u1Asq%S`ivZeOAT$-ymIl`c9Z_ccMM#uns5NR(v^&%q2`F@|5SSF2 zYlFf-=tPbYfV_sxFrtbEibkQX=i&8?-VM3I)B<Zak!d+=_=r)2F#my!%A*!@Lvb3+$+iPhWE~40sGd2HJ=-Z## z=Kf`vZw()Ixe0TtLq7-3qU9E8PbR;}++byjmB^ueC@19LsS=ajL8o#$L4^IBmow7+ hm#VwN_Pr&0?j4iJK6_W>-u`+m(y(mdy|g~N`Uji@rZ4~i diff --git a/yake/data/composed_word.py b/yake/data/composed_word.py index e90d4c2d..0ecabb85 100644 --- a/yake/data/composed_word.py +++ b/yake/data/composed_word.py @@ -169,16 +169,22 @@ def is_valid(self): def get_composed_feature(self, feature_name, discart_stopword=True): """ - Get composed features from constituent terms. - - Calculates combined metrics for the phrase based on individual term metrics. - + Get composed feature values for the n-gram. + + This function aggregates a specific feature across all terms in the n-gram. + It computes the sum, product, and ratio of the feature values, optionally + excluding stopwords from the calculation. + Args: - feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") - discart_stopword (bool): Whether to ignore stopwords in calculation - + feature_name: Name of feature to get (must be an attribute of the term objects) + discard_stopword: Whether to exclude stopwords from calculation (True by default) + Returns: - tuple: (sum, prod, prod_over_sum) of the feature values + Tuple of (sum, product, ratio) for the feature where: + - sum: Sum of the feature values across all relevant terms + - product: Product of the feature values across all relevant terms + - ratio: Product divided by (sum + 1), a measure of feature consistency + """ # Get feature values from each term, filtering stopwords if requested list_of_features = [ diff --git a/yake/data/core.py b/yake/data/core.py index d5aeec6f..9eb72f70 100644 --- a/yake/data/core.py +++ b/yake/data/core.py @@ -375,8 +375,9 @@ def build_candidate(self, candidate_string): """ Build a candidate ComposedWord from a string. - This method allows creating candidate keywords from external input - strings rather than from the document's own text. + This function processes a candidate string by tokenizing it, tagging each word, + and creating a ComposedWord object from the resulting terms. It's used to + convert external strings into the internal candidate representation. Args: candidate_string (str): String to convert to a keyword candidate @@ -415,10 +416,10 @@ def build_candidate(self, candidate_string): def build_single_terms_features(self, features=None): """ - Build statistical features for single terms. - - Calculates term frequency statistics and updates the scoring metrics - for each individual term. + Calculates and updates statistical features for all single terms in the text. + This includes term frequency statistics and other features specified in the + features parameter. Only non-stopword terms are considered for statistics + calculation. Args: features (list, optional): Specific features to calculate @@ -451,10 +452,11 @@ def build_mult_terms_features(self, features=None): """ Build features for multi-word terms. - Updates the scoring metrics for valid candidate keywords. + Updates the features for all valid multi-word candidate terms (n-grams). + Only candidates that pass the validity check will have their features updated. Args: - features (list, optional): Specific features to calculate + features (list, optional): List of features to build. If None, all available features will be built. """ # Update only valid candidates (filter then apply update_h) list( @@ -508,7 +510,7 @@ def get_term(self, str_word, save_non_seen=True): term_obj = SingleWord(unique_term, term_id, self.g) term_obj.stopword = isstopword - # Save the term to the collection if requested + # Save the term to the collection if requestedComposedWord instance to add or update in the candidates dictionary if save_non_seen: self.g.add_node(term_id) self.terms[unique_term] = term_obj @@ -519,7 +521,9 @@ def add_cooccur(self, left_term, right_term): """ Add a co-occurrence relationship between two terms. - Creates or updates an edge in the co-occurrence graph between terms. + Updates the co-occurrence graph by adding or incrementing an edge between + two terms. This information is used to calculate term relatedness and + importance in the text. Args: left_term (SingleWord): Source term in the relationship @@ -537,10 +541,12 @@ def add_or_update_composedword(self, cand): """ Add or update a composed word in the candidates collection. - Handles the registration and frequency counting of keyword candidates. + Adds a new candidate composed word (n-gram) to the candidates dictionary + or updates an existing one by incrementing its frequency. This is used to + track potential keyphrases in the text. Args: - cand (ComposedWord): The candidate keyword to add or update + cand (ComposedWord): ComposedWord instance to add or update in the candidates dictionary """ # Check if this candidate already exists if cand.unique_kw not in self.candidates: diff --git a/yake/data/utils.py b/yake/data/utils.py index 761b1b22..bcb08379 100644 --- a/yake/data/utils.py +++ b/yake/data/utils.py @@ -18,18 +18,27 @@ STOPWORD_WEIGHT = "bi" def pre_filter(text): - """ - Normalize text by standardizing line breaks and spacing. + """Pre-filter text before processing. + + This function prepares raw text for keyword extraction by normalizing its format. + It performs several transformations: - This function preprocesses raw text to ensure consistent handling of - paragraphs, line breaks, and whitespace. It preserves paragraph structure - by detecting capitalized line beginnings while normalizing other whitespace. + 1. Splits the text into parts based on newline characters + 2. Detects if a part starts with a capital letter (potentially a new paragraph) + 3. Adds appropriate spacing between parts: + - Double newlines for parts starting with capital letters (likely new paragraphs) + - Single spaces for other parts (likely continuing text) + 4. Replaces all tab characters with spaces for consistent formatting + This preprocessing helps maintain paragraph structure while normalizing + whitespace, which improves the accuracy of subsequent text analysis steps + like sentence boundary detection and keyword extraction. + Args: - text (str): The raw input text to be normalized - + text: Raw input text to be pre-filtered + Returns: - str: The normalized text with standardized whitespace and line breaks + Normalized text with consistent spacing and paragraph structure """ # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") From a4f7027f67884da241f99b288776d49a5ae5dad6 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 22 May 2025 21:50:39 +0100 Subject: [PATCH 117/118] finishing touches --- .gitignore | 37 ++- .python-version | 1 + Makefile | 41 ++- README.md | 4 +- docs-site/content/docs/--home.mdx | 3 + docs-site/public/1YAKE.ipynb | 21 +- pyproject.toml | 8 +- uv.lock | 437 ++++++++++++++++++++++++++++++ 8 files changed, 522 insertions(+), 30 deletions(-) create mode 100644 .python-version create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore index 2e295bc2..21c8b059 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,39 @@ node_modules/ .npm # Don't ignore these files !.next/ -!out/ \ No newline at end of file +!out/ + +# Python +__pycache__/ +*.py[cod] +*.pyo +*.pyd +*.so + +# Virtual environments +.venv/ +venv/ +ENV/ +env/ +*.env + +# Hatch/uv/pytest +.uv/ +.uv.lock +.pytest_cache/ +.coverage +htmlcov/ +.cache/ +dist/ +build/ +*.egg-info/ + +# VSCode +.vscode/ + +# Logs +*.log + +# OS files +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 00000000..c8cfe395 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.10 diff --git a/Makefile b/Makefile index 6a25f0ec..03b45367 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,36 @@ install: - uv pip install --upgrade pip - uv pip install . + uv pip install --upgrade pip + uv pip install -e . + +install-dev: + uv pip install --upgrade pip + uv pip install -e ".[dev]" test: - uv pip install pytest - uv pip run pytest -vv --cov= test_*. + uv run pytest -vv --cov=yake test_*.py -format: - uv pip install black - uv pip run black . +format: + uv run black . lint: - uv pip install ruff - uv pip run ruff check --fix . - uv pip run ruff check . + uv run ruff check --fix . + uv run ruff check . + uv run flake8 yake/ + +clean: + rm -rf build/ + rm -rf dist/ + rm -rf *.egg-info/ + find . -type d -name __pycache__ -delete + find . -type f -name "*.pyc" -delete + +build: + uv build deploy: - # no rules for now - -all: install lint test format \ No newline at end of file + uv build + uv publish + +all: install-dev lint test format + +.PHONY: install install-dev test format lint clean build deploy all \ No newline at end of file diff --git a/README.md b/README.md index 54816784..acd27348 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,13 @@ YAKE! is a lightweight unsupervised automatic keyword extraction method that use ## Quick Installation ```bash -pip install git+https://github.com/LIAAD/yake +uv pip install git+https://github.com/LIAAD/yake ``` or ```bash -pip install yake +uv pip install yake ``` ## Basic Usage diff --git a/docs-site/content/docs/--home.mdx b/docs-site/content/docs/--home.mdx index 3247457d..5bbadd9f 100644 --- a/docs-site/content/docs/--home.mdx +++ b/docs-site/content/docs/--home.mdx @@ -46,6 +46,9 @@ When contributing to this repository, please first discuss the change you wish t rncampos + + tiagolv + silvae86 diff --git a/docs-site/public/1YAKE.ipynb b/docs-site/public/1YAKE.ipynb index 614d977c..6dbc3f50 100644 --- a/docs-site/public/1YAKE.ipynb +++ b/docs-site/public/1YAKE.ipynb @@ -128,7 +128,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords)." + "YAKE! is available online [http://yake.inesctec.pt]and as an open source Python package [https://github.com/LIAAD/yake]." ] }, { @@ -156,7 +156,7 @@ "outputs": [], "source": [ "#!pip install git+http://github.com/LIAAD/yake\n", - "!pip install yake\n", + "uv pip install yake\n", "\n", "#no caso de já ter instalado o package previamente e quiser fazer um update\n", "#!pip install git+http://github.com/LIAAD/yake --upgrade" @@ -456,7 +456,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -511,7 +511,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." + "the following code is a normalizing fuction of the data. The results vary betweent [0,1] where the upper bound isn't necessarly 1 (it can be lower than 1)." ] }, { @@ -541,7 +541,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." + "Later, its possible to build a word cloud using `matplotlib`. If, during installation, you receive an error message stating that Microsoft Visual C++ 14.0 (or higher) is required, you should proceed with its installation. See how to do it on this [web page](https://www.scivision.dev/python-windows-visual-c-14-required/) or in this [video](https://www.youtube.com/watch?v=_keTL9ymGjw)." ] }, { @@ -550,13 +550,13 @@ "metadata": {}, "outputs": [], "source": [ - "!pip install matplotlib\n", - "!pip install wordcloud" + "!uv pip install matplotlib\n", + "!uv pip install wordcloud" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -596,7 +596,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Suponha agora que necessita passar esta imagem a partir de uma API. Com vista a esse objetivo deverá converter a imagem em base64. O código abaixo permite guardar a imagem em buffer e mostra a sua conversão em base64." + "Now suppose you need to send this image through an API. To achieve this, you should convert the image to base64. The code below allows you to store the image in a buffer and shows its conversion to base64." ] }, { @@ -619,7 +619,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A partir dos b64 seria depois possível voltar a mostrar a imagem." + "From the base64 string, it would then be possible to display the image again." ] }, { @@ -759,7 +759,6 @@ "source": [ "- [INESC TEC technology used to create a database of keywords obtained from more than 100 million scientific articles](https://bip.inesctec.pt/en/noticias/inesc-tec-technology-used-to-create-a-database-of-keywords-obtained-from-more-than-100-million-scientific-articles/)\n", "- [This tool can extract keywords from texts in every language about any topic](https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276?returnurl=https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276)\n", - "- [Apps do YAKE! e Conta-me Histórias já estão disponíveis no Google Play](https://bip.inesctec.pt/noticias/apps-do-yake-e-conta-me-historias-ja-estao-disponiveis-no-google-play/)\n", "- [INESC TEC team wins another Best Paper Award](https://www.inesctec.pt/en/news/inesc-tec-team-wins-another-best-paper-award#about)" ] } diff --git a/pyproject.toml b/pyproject.toml index f48e808c..ee14e214 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,16 +7,18 @@ name = "yake" version = "0.6.0" description = "Keyword extraction Python package" readme = "README.md" -requires-python = ">=3.8" # Changed from >=3.7 to >=3.8 +requires-python = ">=3.10" license = {text = "LGPLv3"} authors = [ + {name = "Arian Pasquali", email = "arianpasquali@gmail.com"}, + {name = "Ricadro Campos", email = "ricardo.campos@ubi.pt"}, {name = "Tiago Vaente", email = "tiago.leando.valente@ubi.com"}, ] dependencies = [ "tabulate", "segtok", "networkx", - "numpy>=1.23.5", # This version requires Python >=3.8 + "numpy>=1.23.5", # This version requires Python >=3.8 "click>=6.0", "jellyfish", ] @@ -50,4 +52,4 @@ Source = "https://github.com/LIAAD/yake" yake = "yake.cli:keywords" [tool.hatch.build.targets.wheel] -packages = ["yake", "StopwordsList"] # Explicitly include these packages \ No newline at end of file +packages = ["yake", "StopwordsList"] # Explicitly include these packages diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..6ce6984b --- /dev/null +++ b/uv.lock @@ -0,0 +1,437 @@ +version = 1 +revision = 2 +requires-python = ">=3.10" + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, +] + +[[package]] +name = "flake8" +version = "7.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mccabe" }, + { name = "pycodestyle" }, + { name = "pyflakes" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/c4/5842fc9fc94584c455543540af62fd9900faade32511fab650e9891ec225/flake8-7.2.0.tar.gz", hash = "sha256:fa558ae3f6f7dbf2b4f22663e5343b6b6023620461f8d4ff2019ef4b5ee70426", size = 48177, upload-time = "2025-03-29T20:08:39.329Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/5c/0627be4c9976d56b1217cb5187b7504e7fd7d3503f8bfd312a04077bd4f7/flake8-7.2.0-py2.py3-none-any.whl", hash = "sha256:93b92ba5bdb60754a6da14fa3b93a9361fd00a59632ada61fd7b130436c40343", size = 57786, upload-time = "2025-03-29T20:08:37.902Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "jellyfish" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/29/c0d39be806b5d5c201e9bf5265e43cf0e88bd63fb4e38edfc7a212ca38a7/jellyfish-1.2.0.tar.gz", hash = "sha256:5c7d73db4045dcc53b6efbfea21f3d3da432d3e052dc51827574d1a447fc23b4", size = 364693, upload-time = "2025-03-31T15:43:18.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/9c/1d3102a61776d44e8028af5a38a2638a6d4ad8ad719cf48a6bfe6b8ce894/jellyfish-1.2.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:50b6d2a123d3e0929cf136c6c26a6774338be7eb9d140a94223f56e3339b2f80", size = 328461, upload-time = "2025-03-31T15:41:38.783Z" }, + { url = "https://files.pythonhosted.org/packages/04/77/5a4d5367eaabff85977fb3f322616f24d29d70d567fc0ea4f927317e81bd/jellyfish-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:baa1e44244cba9da6d67a50d3076dd7567e3b91caa9887bb68e20f321e0d2500", size = 325248, upload-time = "2025-03-31T15:41:42.344Z" }, + { url = "https://files.pythonhosted.org/packages/51/3d/c27b3ee999063caba206cf2f21542fe19d85e2d4ebe739e76a02b621a084/jellyfish-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65082288f76b3821e5cfeae6c2290621f9e8eff75e3fe2d90817dcd068c5bf36", size = 355959, upload-time = "2025-03-31T15:41:44.424Z" }, + { url = "https://files.pythonhosted.org/packages/51/de/874bb9fa8f1daf4723bdc9c8718951a4e0e1ca6361ff5c1a09b1ee76b55b/jellyfish-1.2.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4309d536a5427c008bab096fd38cb2d44c7e475c494b23f2554cfdcf8a19f7fb", size = 363956, upload-time = "2025-03-31T15:41:45.834Z" }, + { url = "https://files.pythonhosted.org/packages/48/08/fc3fd641dc09754a6986f3f00e625fd1aac89b1f012a1d4087c53391de64/jellyfish-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa0ac18693162b751bdd010a2c35136500a326b6a0bd0b18e6d973c524048ac7", size = 357026, upload-time = "2025-03-31T15:41:47.062Z" }, + { url = "https://files.pythonhosted.org/packages/7f/16/5466c0319a36f0b96f909e928e25f7ae311660903af57f382bf81a76bd45/jellyfish-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c19d70cfbfe4eb9c7c6a1df848cfa48f6e5166a3f23362a2c1d7a2e763674113", size = 533905, upload-time = "2025-03-31T15:41:48.188Z" }, + { url = "https://files.pythonhosted.org/packages/b3/70/0852e2b85b8114c564ad2d4d2d9e332feb84cef6719b7c197b74c0580a1c/jellyfish-1.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5616698941afc730aa6cc162a4686bda29aa8127d70bcb939321143b1170238a", size = 555397, upload-time = "2025-03-31T15:41:49.725Z" }, + { url = "https://files.pythonhosted.org/packages/39/f2/c54b7670ae67bb24fa87b34aa106385415a26a28c66731bbf4db520aea09/jellyfish-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b28ad8da20561f07ca4bf1297bd5519d8cd947b8b5593e00cc7ceb255b2a1d84", size = 527740, upload-time = "2025-03-31T15:41:51.875Z" }, + { url = "https://files.pythonhosted.org/packages/c7/bf/b0d88b6dab19789e5893064f83eb6a0b15498f46a887fcfa3a614f962d0a/jellyfish-1.2.0-cp310-cp310-win32.whl", hash = "sha256:6ec6db8301bf91de85ee5084a44f0b5d399cc030c86910730d5ae69f1e712438", size = 212500, upload-time = "2025-03-31T15:41:53.454Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b9/a252acda71bd81314d43397f084eec6c2a58c69ca5afcb71ffe6941b6c66/jellyfish-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:8ed2393f6d0c7e8ec53ab0627dc81e1613bc2e76a9c30332197d0a1df5e39356", size = 217140, upload-time = "2025-03-31T15:41:54.662Z" }, + { url = "https://files.pythonhosted.org/packages/30/eb/17ca88570c3ac4144101d614cddbccd1effc25f812cbc4ab8ad15b75730e/jellyfish-1.2.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b4f8ff3cda0e00f6f62fe98ffce28bd7f21d1d55875470f8275a2fdbd84cfb6a", size = 328511, upload-time = "2025-03-31T15:41:55.791Z" }, + { url = "https://files.pythonhosted.org/packages/1e/9a/521cbf0b77e86b2b3cda2b42b1afaf3498d4cc16b4240c6ff5b8941d8966/jellyfish-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:792cb481816626396892bccf53643ccc55a7f7c2b129de61360d01044a539afd", size = 325221, upload-time = "2025-03-31T15:41:57.064Z" }, + { url = "https://files.pythonhosted.org/packages/74/a0/344f432fc8a730dd896446164ed0843e388ed676c632536f6d1b1746c0af/jellyfish-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca2c84d3aaeea4bd7c9bdb174229789e69c7dd58916b47813f52db3a1b62495", size = 355848, upload-time = "2025-03-31T15:41:58.554Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8c/0fadfebdab24b7095531828e2757753525fa835a415c2a6694de9dae2339/jellyfish-1.2.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3ebc962fd90b2dcb33eb308e70c3a356a931c4b10c76d8d9d63df1d5dac42be4", size = 364054, upload-time = "2025-03-31T15:41:59.654Z" }, + { url = "https://files.pythonhosted.org/packages/ba/2b/e6ce825f2ae5638b7c6f8dfa675051424fcb45960a2759b332fd6be6dcb2/jellyfish-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0d765888bf186b75bf16b3d9a1b7f088f5f5ccbf62b414c25d92b404aad9c2a", size = 356926, upload-time = "2025-03-31T15:42:00.808Z" }, + { url = "https://files.pythonhosted.org/packages/45/4a/64e9f022df383651adb0b80a3473d31bf34f8ae79c9c27cea0a964ea008e/jellyfish-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:85c5eca0d56241d07a0a89f2896bc7d1ec66ee72ffa801847c70f404b0214fad", size = 533845, upload-time = "2025-03-31T15:42:02.264Z" }, + { url = "https://files.pythonhosted.org/packages/0a/d6/11178c93e59fad2ac9d1dbc750bc4f8d637a5e780ae8b4fd53b3d740b599/jellyfish-1.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:13d7d925760bd8c3fd8831fcc0ad5a32ceae82c66e8aa19df45082afe5c4be2a", size = 555528, upload-time = "2025-03-31T15:42:04.192Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/5be368336b901f792d137e1771e8446b102e6b6dbb5f82a2a92ef9467f0d/jellyfish-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ccc330b6104c87e22dbb22c2578abcf0e36d1346c1810eec3f67571089b36874", size = 527595, upload-time = "2025-03-31T15:42:05.361Z" }, + { url = "https://files.pythonhosted.org/packages/67/b2/6df2229e03f273f9b24cedea3174f5cb58b7d2856b8778913f4d44423f3d/jellyfish-1.2.0-cp311-cp311-win32.whl", hash = "sha256:75d131a51202e679b653507f99634bc13c4aa6a4afabe06a1c3d200f72e18b9b", size = 212604, upload-time = "2025-03-31T15:42:06.485Z" }, + { url = "https://files.pythonhosted.org/packages/9a/54/f1dca498a808e427374d3bd81832045f9cfbbecafbc7f49461a6425dfd0a/jellyfish-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:63f58a0a7c9c0bb9a69562d2b9dd1a3f6729e94b0dcb6adf54b45b4da853eb94", size = 217095, upload-time = "2025-03-31T15:42:07.627Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d5/89424092e3d1e6948eb215fb1f58126fc8090989475f6cbc6545a0eae72c/jellyfish-1.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:088c9b7e7077802ce2254b876486ae3b49d81f4f07f6c692c612ba40e1a42177", size = 326154, upload-time = "2025-03-31T15:42:08.819Z" }, + { url = "https://files.pythonhosted.org/packages/91/af/881ef6fb6e2e534b7383c6ace369485e1c285dc70b9bab54e35796d4f1fd/jellyfish-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:393664438fbb98886f9c97675179d4b552b68c3d0099d4df3cdec6412deaeea0", size = 322983, upload-time = "2025-03-31T15:42:09.942Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ee/d73ac46c3ad0f1d8b28de452b117080bab7d7a3565a05f1b34a5b6085f4e/jellyfish-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a54a83905596dd712948b6af7fccc2b28d37624bfc9eab4868518c3f8106c739", size = 355339, upload-time = "2025-03-31T15:42:11.04Z" }, + { url = "https://files.pythonhosted.org/packages/e4/1a/8952b21f9b52931c5997dc2d24b2a1660d76bb34aa69460b0d4e126501a9/jellyfish-1.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2f68cdb689b59653fa70345c8fcb09bfee12d34c0f7ae223ce70fa5175cb2ee", size = 363903, upload-time = "2025-03-31T15:42:12.164Z" }, + { url = "https://files.pythonhosted.org/packages/25/df/bdeb876920dc26405e90a6abf014eff5a1892652a7875733ed0e91a0e424/jellyfish-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:019542af342973c537275b289c1e891fb2b62b011bfdb68c816da4527477b74d", size = 355931, upload-time = "2025-03-31T15:42:14.108Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c3/cb05e3d092eb929d2043e4945d172f30781321d90b198a05316b8dfb97df/jellyfish-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:079ec6fceb5336e7c2f99b43ee035f85b39022db897c70e736439ed1d4fc8462", size = 533430, upload-time = "2025-03-31T15:42:15.559Z" }, + { url = "https://files.pythonhosted.org/packages/34/a0/af60a3d7ec0d7f537dd32efb485ed7969c0d8b3856cd3cc7445fa7b0bc3d/jellyfish-1.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a5ddd20e6d87c7dc173717ffe0df0bba50aa0b0c51e3d57d6cce1706ea6a1167", size = 554656, upload-time = "2025-03-31T15:42:16.733Z" }, + { url = "https://files.pythonhosted.org/packages/8f/db/92026263a56dea6751d9935a4c41c78f5561aa49c6b20e068389b25e6bfb/jellyfish-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:08a1a3f6adc033eb3735a8ba121188a5d3fdc6630eec6a946c30260c1ac680ac", size = 526659, upload-time = "2025-03-31T15:42:17.864Z" }, + { url = "https://files.pythonhosted.org/packages/e6/4e/c8c546a422090eb75c232454465aefb49e1030fad043a99a73ba12f80fee/jellyfish-1.2.0-cp312-cp312-win32.whl", hash = "sha256:65ec39cfed29e475df33c9d7fc70d76eb39ce6dfb7fedf19599caff497a9b3c7", size = 212397, upload-time = "2025-03-31T15:42:19.056Z" }, + { url = "https://files.pythonhosted.org/packages/90/6d/5770b7fb1767c12559aabe2bf5f629bee8d738dbe110301c14aa276d2c8a/jellyfish-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:199baa59412723ef76126303fc236728b2613a4723fba83eede942c89e1dad1c", size = 216558, upload-time = "2025-03-31T15:42:20.173Z" }, + { url = "https://files.pythonhosted.org/packages/f0/4e/2f10011b5a80c56bb0f2775ee7283a3290fb9ec4e67c48c0342671a6d6e0/jellyfish-1.2.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:8b995bdf97d43cdca1e6bd5375f351bcb85c7f5e8760fe4a28c63eb0e6104075", size = 325372, upload-time = "2025-03-31T15:42:21.563Z" }, + { url = "https://files.pythonhosted.org/packages/f8/7e/e15034422abf21e28b43155d21f4e34ae7349fad6c682be12c739d79119b/jellyfish-1.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:559c1d6f17ba51639843b958a0d57ece5c4155e6b820c4acb3f3437437625ef3", size = 322333, upload-time = "2025-03-31T15:42:23.015Z" }, + { url = "https://files.pythonhosted.org/packages/0b/62/cdb56ed6641c5a23bb00c775ea54108423b40d2376bed186455cc39f4a0b/jellyfish-1.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4439f4066ccc5dd6a7a15cb06941f5150bab646201e9e014a7d34d65cbe89fe", size = 354567, upload-time = "2025-03-31T15:42:24.22Z" }, + { url = "https://files.pythonhosted.org/packages/e0/97/47830ff857307936313e345010cf7626e7b3a233549cfc258c7342553de4/jellyfish-1.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dbf866d2b967fd2d5380134fdcb47d4f113e24d659b46c38e55da80c215d2042", size = 363379, upload-time = "2025-03-31T15:42:25.407Z" }, + { url = "https://files.pythonhosted.org/packages/8e/95/4e3d5bac918aa7b0e1cebff39822add0844dbfc433870949dccc3df8aae3/jellyfish-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9290b82276bba1941ad0f98226f51b43aeef7bdedb927b9266516b4519b9012", size = 355215, upload-time = "2025-03-31T15:42:26.695Z" }, + { url = "https://files.pythonhosted.org/packages/6e/2f/1d7aa3b7dc3d7e6a7f9e832a98440d14641670394c11718f7584dab434b2/jellyfish-1.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:052345ded2b00104a50acbab35c671efe06f40790202f6a2fc279ad645f31ab2", size = 532669, upload-time = "2025-03-31T15:42:27.806Z" }, + { url = "https://files.pythonhosted.org/packages/f6/0e/d527f9425e9462463e3b0ae748ec39ec5a2ebaa829725ca8c09f8753e364/jellyfish-1.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:465dcf8b17162e3dae2cae0072b22ea9637e6ce8ddd8294181758437cd9c0673", size = 554223, upload-time = "2025-03-31T15:42:29.362Z" }, + { url = "https://files.pythonhosted.org/packages/04/71/533b48054f1ddab7d9b7ad3833a87963200c7aef7ce81e082379da6d1264/jellyfish-1.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ae5f2e3c5ef14cb5b86afe7ed4078e504f75dd61ca9d9560bef597f9d2237c63", size = 526103, upload-time = "2025-03-31T15:42:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/f4/d7/6c5ce80088495b7bb002931d7d0a313143b45fa10e826f11aadd4a97ccdb/jellyfish-1.2.0-cp313-cp313-win32.whl", hash = "sha256:13ee212b6fa294a1b6306693a1553b760d876780e757b9f016010748fe811b4d", size = 212179, upload-time = "2025-03-31T15:42:31.628Z" }, + { url = "https://files.pythonhosted.org/packages/40/aa/332fd282668a353570bdad56d65f526bc28ab73da1a3dd99e670af687186/jellyfish-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:c8089e918ddb1abae946e92d053f646a7f686d0d051ef69cdfaa28b37352bbdf", size = 216066, upload-time = "2025-03-31T15:42:32.75Z" }, + { url = "https://files.pythonhosted.org/packages/a3/a3/ac72cdab59f0eb52eecda5f739ef69fa61ed6d5f7b0129043219e9ce8b58/jellyfish-1.2.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0d9d4136341c34ed0fb3fb406801d7a2724a1fa4996577822bc5e5b27870b4", size = 330579, upload-time = "2025-03-31T15:42:46.677Z" }, + { url = "https://files.pythonhosted.org/packages/3d/77/9a7734d7afb5ee349be7a627821d2bf5e84f2469010c9628d4bb21c813ec/jellyfish-1.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36e53729ac0bd387c8f7fd60c8727e6784113976058d8aa2f62398fcdfe209f1", size = 326878, upload-time = "2025-03-31T15:42:48.154Z" }, + { url = "https://files.pythonhosted.org/packages/ba/38/9d1d0c7288a35ed7a9bef87fab745df2740222bed67677c270bae65ce21f/jellyfish-1.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10b178b8351e90e463d937e53c8b5525627a0bb2ca6f7e49ac7452b0608a1020", size = 357373, upload-time = "2025-03-31T15:42:49.453Z" }, + { url = "https://files.pythonhosted.org/packages/93/90/987343f6e43757731fbd62e5e74cfa0c519ad07faef2ff9c31c45386a42c/jellyfish-1.2.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e79225fba34bb082d2f21fa5cd7dc015c856ff04b8340e98ce122ab71a445cad", size = 365456, upload-time = "2025-03-31T15:42:51.136Z" }, + { url = "https://files.pythonhosted.org/packages/6d/12/0834bedcbc107bc17582787d8cd6b6ef21b0290e2847212d1997ec3353bc/jellyfish-1.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18a1ea2d395a4c9c00224b3abd57b73bd2cb4ca17fc6e2024c8433b31e1b1061", size = 358547, upload-time = "2025-03-31T15:42:52.478Z" }, + { url = "https://files.pythonhosted.org/packages/99/5a/5518f6f8c57c75fffba0163f06e3c0ce5df7ef6f40a1a0affb78de767881/jellyfish-1.2.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b27ff486175b9c8fecdc9147c7dde1d835675bd76df12c1521f378a2fab70493", size = 535731, upload-time = "2025-03-31T15:42:53.667Z" }, + { url = "https://files.pythonhosted.org/packages/25/87/21376b582989cc9103fea496690ce8651fc3587c0c9a546a99cced2d9d0f/jellyfish-1.2.0-pp310-pypy310_pp73-musllinux_1_1_i686.whl", hash = "sha256:4b6b1109174e6ae780f6c2b8454b2fcfc7efeb8fae767f757c481ccca16fb842", size = 557248, upload-time = "2025-03-31T15:42:54.862Z" }, + { url = "https://files.pythonhosted.org/packages/81/ff/8f6d536cb1afda322f989d294cbfb9fa22aa2493e0bbe8b62a35f87e7f0e/jellyfish-1.2.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfb4e76c2b6c3e94ea3778510c94609893ddc7172255838b3221eba1ec9aa5cc", size = 529209, upload-time = "2025-03-31T15:42:56.062Z" }, + { url = "https://files.pythonhosted.org/packages/1a/39/99494ab43d6127d7e2bd415c34b37e89fe16fb796a872b9c272558729ca0/jellyfish-1.2.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:07384e33e5f9bfd3d1356cf73d94388af295ed8f196a1d9f09bc381c5ea79be8", size = 330535, upload-time = "2025-03-31T15:42:57.222Z" }, + { url = "https://files.pythonhosted.org/packages/eb/5f/7b3bcb94a3fef83b4119608e40ecc70a1dd97cebc7a0122847b85593b9f8/jellyfish-1.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:03754194fc2f5cf65136f2b5f2aeacf48a805ddf21f4ff9f1a6cffc67756d937", size = 326847, upload-time = "2025-03-31T15:42:58.338Z" }, + { url = "https://files.pythonhosted.org/packages/28/96/9aed3d95e50d41d2fa9fe64d88e4d87927cdd56a1a399cbd0d31cc2ef870/jellyfish-1.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57a0c408c588c4477bdcd82c0c1c33f08900aca5c2dfc9d5e78f2e0919294a68", size = 357277, upload-time = "2025-03-31T15:42:59.975Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ac/e91fe4f5742902d4ce2b39c18553c2939c3d0b713b8aa5a43127e371cdc2/jellyfish-1.2.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72062c9772ff672535463954828e9921fb1bf1d63c66602db2956567e9e50aa8", size = 365524, upload-time = "2025-03-31T15:43:01.595Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/a94fbc02e7f9781e354ddf8eab01cb9acdf437933cf83c7c7cb5a49f9a96/jellyfish-1.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb3b464faeb8e4f4f6f7987fbd3f5de759fc0d460bbe4768b446e3f1c003026a", size = 358459, upload-time = "2025-03-31T15:43:02.917Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d7/05a8608e26f62c2ea2e33bba9670d39995231f307b12eb0692d6e091a607/jellyfish-1.2.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33c5d80209b278807a770a463f39d0b6a3f95dacf9a64fd322ad4add63a52516", size = 535658, upload-time = "2025-03-31T15:43:04.039Z" }, + { url = "https://files.pythonhosted.org/packages/71/ac/bb1c3b58f7882b0c26e3f0cc2d2333fe5ed283f95ea0bc0e767cc31bf9d8/jellyfish-1.2.0-pp311-pypy311_pp73-musllinux_1_1_i686.whl", hash = "sha256:0787a5fef60aa838732f325064cc4401425e450023bb8fc8d3b2bd2ee75df57d", size = 557211, upload-time = "2025-03-31T15:43:05.268Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/28437297b00e64edb74a7c2dd05b50e905a5a8bb1ec72b519a70507a7762/jellyfish-1.2.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dee4cc60f2b342f3f62784787f1ba811e505b9a8d8f68cc7505d496c563143b5", size = 529113, upload-time = "2025-03-31T15:43:06.478Z" }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pycodestyle" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/6e/1f4a62078e4d95d82367f24e685aef3a672abfd27d1a868068fed4ed2254/pycodestyle-2.13.0.tar.gz", hash = "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae", size = 39312, upload-time = "2025-03-29T17:33:30.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/be/b00116df1bfb3e0bb5b45e29d604799f7b91dd861637e4d448b4e09e6a3e/pycodestyle-2.13.0-py2.py3-none-any.whl", hash = "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9", size = 31424, upload-time = "2025-03-29T17:33:29.405Z" }, +] + +[[package]] +name = "pyflakes" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/cc/1df338bd7ed1fa7c317081dcf29bf2f01266603b301e6858856d346a12b3/pyflakes-3.3.2.tar.gz", hash = "sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b", size = 64175, upload-time = "2025-03-31T13:21:20.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/40/b293a4fa769f3b02ab9e387c707c4cbdc34f073f945de0386107d4e669e6/pyflakes-3.3.2-py2.py3-none-any.whl", hash = "sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a", size = 63164, upload-time = "2025-03-31T13:21:18.503Z" }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, +] + +[[package]] +name = "pytest-runner" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/7d/60976d532519c3a0b41e06a59ad60949e2be1af937cf02738fec91bfd808/pytest-runner-6.0.1.tar.gz", hash = "sha256:70d4739585a7008f37bf4933c013fdb327b8878a5a69fcbb3316c88882f0f49b", size = 16056, upload-time = "2023-12-04T01:03:30.835Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/2b/73982c02d28538b6a1182c0a2faf764ca6a76a6dbe89a69288184051a67b/pytest_runner-6.0.1-py3-none-any.whl", hash = "sha256:ea326ed6f6613992746062362efab70212089a4209c08d67177b3df1c52cd9f2", size = 7186, upload-time = "2023-12-04T01:03:28.706Z" }, +] + +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494, upload-time = "2024-11-06T20:12:31.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674, upload-time = "2024-11-06T20:08:57.575Z" }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684, upload-time = "2024-11-06T20:08:59.787Z" }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589, upload-time = "2024-11-06T20:09:01.896Z" }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511, upload-time = "2024-11-06T20:09:04.062Z" }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149, upload-time = "2024-11-06T20:09:06.237Z" }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707, upload-time = "2024-11-06T20:09:07.715Z" }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702, upload-time = "2024-11-06T20:09:10.101Z" }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976, upload-time = "2024-11-06T20:09:11.566Z" }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397, upload-time = "2024-11-06T20:09:13.119Z" }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726, upload-time = "2024-11-06T20:09:14.85Z" }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098, upload-time = "2024-11-06T20:09:16.504Z" }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325, upload-time = "2024-11-06T20:09:18.698Z" }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277, upload-time = "2024-11-06T20:09:21.725Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197, upload-time = "2024-11-06T20:09:24.092Z" }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714, upload-time = "2024-11-06T20:09:26.36Z" }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042, upload-time = "2024-11-06T20:09:28.762Z" }, + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669, upload-time = "2024-11-06T20:09:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684, upload-time = "2024-11-06T20:09:32.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589, upload-time = "2024-11-06T20:09:35.504Z" }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121, upload-time = "2024-11-06T20:09:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275, upload-time = "2024-11-06T20:09:40.371Z" }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257, upload-time = "2024-11-06T20:09:43.059Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727, upload-time = "2024-11-06T20:09:48.19Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667, upload-time = "2024-11-06T20:09:49.828Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963, upload-time = "2024-11-06T20:09:51.819Z" }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700, upload-time = "2024-11-06T20:09:53.982Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592, upload-time = "2024-11-06T20:09:56.222Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929, upload-time = "2024-11-06T20:09:58.642Z" }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213, upload-time = "2024-11-06T20:10:00.867Z" }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734, upload-time = "2024-11-06T20:10:03.361Z" }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052, upload-time = "2024-11-06T20:10:05.179Z" }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781, upload-time = "2024-11-06T20:10:07.07Z" }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455, upload-time = "2024-11-06T20:10:09.117Z" }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759, upload-time = "2024-11-06T20:10:11.155Z" }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976, upload-time = "2024-11-06T20:10:13.24Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077, upload-time = "2024-11-06T20:10:15.37Z" }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160, upload-time = "2024-11-06T20:10:19.027Z" }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896, upload-time = "2024-11-06T20:10:21.85Z" }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997, upload-time = "2024-11-06T20:10:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725, upload-time = "2024-11-06T20:10:28.067Z" }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481, upload-time = "2024-11-06T20:10:31.612Z" }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896, upload-time = "2024-11-06T20:10:34.054Z" }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138, upload-time = "2024-11-06T20:10:36.142Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692, upload-time = "2024-11-06T20:10:38.394Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135, upload-time = "2024-11-06T20:10:40.367Z" }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567, upload-time = "2024-11-06T20:10:43.467Z" }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525, upload-time = "2024-11-06T20:10:45.19Z" }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324, upload-time = "2024-11-06T20:10:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617, upload-time = "2024-11-06T20:10:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023, upload-time = "2024-11-06T20:10:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072, upload-time = "2024-11-06T20:10:52.926Z" }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130, upload-time = "2024-11-06T20:10:54.828Z" }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857, upload-time = "2024-11-06T20:10:56.634Z" }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006, upload-time = "2024-11-06T20:10:59.369Z" }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650, upload-time = "2024-11-06T20:11:02.042Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545, upload-time = "2024-11-06T20:11:03.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045, upload-time = "2024-11-06T20:11:06.497Z" }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182, upload-time = "2024-11-06T20:11:09.06Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733, upload-time = "2024-11-06T20:11:11.256Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122, upload-time = "2024-11-06T20:11:13.161Z" }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545, upload-time = "2024-11-06T20:11:15Z" }, +] + +[[package]] +name = "segtok" +version = "1.5.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "regex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/8a/1ae8e3deb805831933b63d58851ab41ff2472099e15511fc62039421ad70/segtok-1.5.11.tar.gz", hash = "sha256:8ab2dd44245bcbfec25b575dc4618473bbdf2af8c2649698cd5a370f42f3db23", size = 25244, upload-time = "2021-12-15T21:56:14.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/60/d384dbae5d4756e33f1750fa3472303de2c827011907a64e213e114d0556/segtok-1.5.11-py3-none-any.whl", hash = "sha256:910616b76198c3141b2772df530270d3b706e42ae69a5b30ef115c7bd5d1501a", size = 24332, upload-time = "2021-12-15T21:56:12.508Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, +] + +[[package]] +name = "yake" +version = "0.6.0" +source = { editable = "." } +dependencies = [ + { name = "click" }, + { name = "jellyfish" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "segtok" }, + { name = "tabulate" }, +] + +[package.optional-dependencies] +dev = [ + { name = "flake8" }, + { name = "pytest" }, + { name = "pytest-runner" }, +] + +[package.metadata] +requires-dist = [ + { name = "click", specifier = ">=6.0" }, + { name = "flake8", marker = "extra == 'dev'" }, + { name = "jellyfish" }, + { name = "networkx" }, + { name = "numpy", specifier = ">=1.23.5" }, + { name = "pytest", marker = "extra == 'dev'" }, + { name = "pytest-runner", marker = "extra == 'dev'" }, + { name = "segtok" }, + { name = "tabulate" }, +] +provides-extras = ["dev"] From 2e2fa6ccb77f409c048d29e06dbb7bbe9fb220fd Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 22 May 2025 22:04:27 +0100 Subject: [PATCH 118/118] updated workflows for uv --- .github/workflows/format.yml | 16 ++++++++++------ .github/workflows/install.yml | 16 +++++++++++----- .github/workflows/lint.yml | 17 +++++++++++++---- .github/workflows/resultados.yml | 10 +++++----- .github/workflows/test.yml | 14 ++++++++++---- 5 files changed, 49 insertions(+), 24 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index c7b970f4..60f4319a 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -1,7 +1,5 @@ name: Format -on: [push] - on: push: branches: [ "master" ] @@ -13,8 +11,14 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies + run: uv pip install -e ".[dev]" - name: format - run: make format \ No newline at end of file + run: uv run black . \ No newline at end of file diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml index 09bbc4b9..bf395d7a 100644 --- a/.github/workflows/install.yml +++ b/.github/workflows/install.yml @@ -1,15 +1,21 @@ name: Install on: push: - branches: [ "main" ] + branches: [ "master" ] pull_request: - branches: [ "main" ] + branches: [ "master" ] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install \ No newline at end of file + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install package + run: uv pip install -e . \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d7f85529..9cec4cea 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -10,8 +10,17 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies + run: uv pip install -e ".[dev]" - name: lint - run: make lint \ No newline at end of file + run: | + uv run ruff check --fix . + uv run ruff check . + uv run flake8 yake/ \ No newline at end of file diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index 28e2acb9..8db4b825 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -17,23 +17,23 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Install uv - run: pip install uv - - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies run: | - uv pip install . + uv pip install -e ".[dev]" uv pip install pytest - name: Run tests id: run-tests run: | - uv pip run pytest -v tests/test_yake.py | tee test_output.log + uv run pytest -v tests/test_yake.py | tee test_output.log - name: Verify test results run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c02da66b..91a8fe86 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,8 +10,14 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies + run: uv pip install -e ".[dev]" - name: test - run: make test \ No newline at end of file + run: uv run pytest -vv --cov=yake tests/ \ No newline at end of file
    YAKE!