§
    éƒtjI  ã                  óÔ  — U d Z ddlmZ ddlZddlmZ ddlmZ ed         Zddd	d
dddddddddddœZ	de
d<    ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d ¦  «        Z ej        d!¦  «        Z ej        d"¦  «        Z ej        d#¦  «        Z ej        d$¦  «        Z ej        d%¦  «        Z ej        d&¦  «        Z ej        d'¦  «        Z ej        d(¦  «        Z ej        d)¦  «        Z ej        d*¦  «        Z ej        d+¦  «        Z  ej        d,¦  «        Z! ej        d-¦  «        Z"h d.£Z#dDd3„Z$dDd4„Z%dDd5„Z&dDd6„Z'dDd7„Z(dDd8„Z)dDd9„Z*dDd:„Z+dDd;„Z,dDd<„Z-dDd=„Z.dDd>„Z/dDd?„Z0dEdA„Z1dFdC„Z2dS )Gz;Classify finance-assistant questions into response intents.é    )ÚannotationsN)ÚLiteral)Úis_pdf_overview_question)Ústatement_summaryÚspending_summaryÚmerchant_analysisÚcategory_spendingÚdate_lookupÚincomeÚtransaction_searchÚ
comparisonÚinsightsÚfinancial_adviceÚdocument_qaÚperiod_coverageÚpayment_countÚgeneralzStatement SummaryzSpending SummaryzMerchant AnalysiszCategory SpendingzDate LookupÚIncomezTransaction SearchÚ
ComparisonÚInsightszFinancial AdvicezDocument Q&AzPeriod CoveragezPayment CountÚGeneralzdict[str, str]ÚFINANCE_INTENT_LABELSzo(?i)\b(grocer(?:y|ies)|food|taxi|cab|uber|ola|bills?|recharge|transfer|zepto|blinkit|swiggy|zomato|instamart)\bzd(?i)\b(merchant|paid\s+to|sent\s+to|who\s+did\s+i\s+pay|payments?\s+to|upi\s+to|money\s+sent\s+to)\bzV(?<![A-Za-z])to\s+([A-Z][a-zA-Z0-9&.'\-]{2,}(?:\s+[A-Z][a-zA-Z0-9&.'\-]{1,30}){0,2})\bzû(?i)\b(\d{1,2}(?:st|nd|rd|th)?\s+(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*|(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*\s+\d{1,2}|each\s+date|per\s+day|by\s+date|daily\s+spend|date[\s-]?wise|day[\s-]?wise|on\s+\d{1,2}\b)\bzŸ(?i)\b(spent|spend|spen|paid|payments?|pay(?:ing)?|debit|outflow|money\s+out|how\s+much|did\s+i\s+(?:make|pay|spend)|any\s+(?:payments?|transactions?|txns?))\bzK(?i)\b(received|receive|income|credited|credit|inflow|money\s+in|deposit)\bzx(?i)\b(summary|overview|tell\s+me\s+about|what\s+is\s+this|bank\s+statement|knowledge\s*base|passbook|upi\s+statement)\bzT(?i)\b(compar(?:e|ison)|versus|vs\.?|difference\s+between|more\s+than|less\s+than)\bzM(?i)\b(insight|pattern|trend|unusual|largest|biggest|top\s+\d+|average|avg)\ba…  (?i)\b(save\s+money|reduce\s+(?:my\s+)?(?:spend(?:ing)?|expenses?)|cut\s+(?:back\s+)?(?:on\s+)?(?:spend(?:ing)?|expenses?)|spending\s+too\s+much|spend(?:ing)?\s+too\s+much|where\s+(?:should|can)\s+i\s+cut|(?:analyze|analyse)\s+(?:my\s+)?(?:habits?|spending)|spending\s+habits?|budget\s+(?:tips?|advice)|how\s+(?:can|do)\s+i\s+(?:save|budget|spend\s+less)|am\s+i\s+(?:over)?spend(?:ing)?)\ba4  (?i)\b((?:biggest|largest|top|highest|major)\s+(?:expenses?|outflows?|payments?|spends?|transactions?)|(?:expenses?|outflows?|payments?)\s+(?:ranked|sorted)|show\s+(?:me\s+)?(?:my\s+)?(?:biggest|largest|top)|what\s+(?:are|were)\s+(?:my\s+)?(?:biggest|largest)|top\s+\d+\s+(?:expenses?|payments?|outflows?))\bz˜(?i)\b(find|show|list|search|transactions?\s+(?:with|for|from)|where\s+did|any\s+(?:payments?|transactions?)|make\s+any\s+(?:payments?|transactions?))\bz›(?i)\b(jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\ba‹  (?i)\b(why\s+.+\b(?:only|not|missing|instead|contain|contains|include|includes|cover|covers)\b|why\s+not\s+\w+|why\s+(?:does|did|is|are)\s+it\b|which\s+months?|what\s+(?:period|date\s*range)|date\s*range|does\s+it\s+(?:include|contain|cover)|only\s+(?:has|have|contains?|includes?|covers?)|not\s+(?:include|contain|have|cover)\s+\w+|period\s+(?:covered|on\s+the\s+statement)|months?\s+covered)\ba’  (?i)\b(which\s+payments?\s+(?:did\s+i|have\s+i|was|were|do\s+i)|what\s+payments?\s+(?:did\s+i|have\s+i|was|were|do\s+i)|list\s+(?:all\s+|every\s+)?(?:my\s+)?payments?|full\s+list\s+of\s+payments?|every\s+payment|all\s+my\s+payments?|show\s+(?:me\s+)?(?:all\s+)?(?:my\s+)?payments?|payments?\s+i\s+made|my\s+payments?|payments?\s+in\s+a\s+paragraph|need\s+(?:the\s+)?(?:full\s+)?list\s+of\s+payments?)\bz(?i)\bwhich payment\b(?!\s*s\b)aª  (?i)\b(how\s+many\s+(?:transactions?|payments?|txns?|credits?|deposits?|debits?|withdrawals?)(?:\s+\w+){0,6}|number\s+of\s+(?:transactions?|payments?|credits?|deposits?|debits?)|payments?\s+(?:were\s+|are\s+)?(?:made|received)|credits?\s+(?:were\s+|are\s+)?(?:made|received|,?\s*ade)|deposits?\s+(?:were\s+|are\s+)?(?:made|received)|transactions?\s+(?:were\s+|are\s+)?made|transaction\s+count|payment\s+count|credit\s+count)\baª  (?i)\b(branch\s*(?:code|number|no\.?|num)?|account\s*(?:branch|number|no\.?|num)|a/?c\s*(?:number|no\.?|num)|ifsc(?:\s*code)?|micr(?:\s*code)?|cust(?:omer)?\s*id|state\s+(?:on\s+)?(?:the\s+)?(?:account|statement)|account\s+state|state\s+account\s+branch|statement\s+account\s+branch|account\s+branch(?:\s+(?:code|number|name))?|(?:my\s+)?bank\s+name|name\s+of\s+(?:the\s+)?bank|which\s+bank|what\s+(?:bank|bank\s+is\s+this))\baµ  (?i)\b(whose\s+statement|account\s+holder|customer\s+name|who(?:se)?\s+(?:is\s+this\s+statement|owns\s+this)|name\s+on\s+(?:the\s+)?statement|statement\s+(?:belongs|for\s+whom)|(?:what(?:'s|\s+is)|guess|infer|think)\s+my\s+name|do\s+you\s+think\s+(?:is\s+)?my\s+name|what\s+do\s+you\s+think\s+(?:is\s+)?my\s+name|my\s+name\s+(?:from|on|per|in)\s+(?:the\s+)?(?:statement|pdf|document|bank|knowledge\s*base)|name\s+(?:from|on|in)\s+(?:the\s+)?(?:statement|pdf|bank\s+statement|knowledge\s*base)|(?:based\s+on|from|using)\s+(?:the\s+)?(?:knowledge\s*base|statement|pdf|document).{0,40}my\s+name|my\s+name.{0,40}(?:based\s+on|from|using)\s+(?:the\s+)?(?:knowledge\s*base|statement|pdf|document))\ba!  (?i)\b(profit\s+or\s+loss|loss\s+or\s+profit|in\s+(?:a\s+)?(?:profit|loss)|am\s+i\s+(?:in\s+)?(?:profit|loss)|(?:making|made)\s+(?:a\s+)?(?:profit|loss)|net\s+cash\s*-?\s*flow|cash\s*-?\s*flow\s+(?:positive|negative)|in\s+the\s+(?:red|black)|did\s+i\s+(?:profit|lose|come\s+out\s+ahead))\bzÑ(?i)\b(statement\s+period|what(?:'s|\s+is|\s+was)\s+the\s+period|period\s+of\s+(?:the\s+)?statement|covering\s+(?:which\s+)?(?:period|dates?)|from\s+when\s+to\s+when|date\s*range\s+of\s+(?:the\s+)?statement)\bzs(?i)\b(i|my|me|mine|our|we|us|this\s+statement|the\s+statement|my\s+statement|uploaded|knowledge\s*base|passbook)\bzZ(?i)\bhow\s+much\s+(?:did|does|has)\s+(?!i\b|we\b|you\b)(.+?)\s+(?:spend|spent|pay|paid)\b>    ÚaÚanÚmyÚcabÚdayÚtheÚupiÚbillÚdateÚfoodÚlastÚtaxiÚthatÚthisÚweekÚyearÚbillsÚmoneyÚmonthÚtotalÚaccountÚaverageÚgroceryÚpaymentÚpaymentsÚrechargeÚtransferÚ	groceriesÚ	statementÚ	transfersÚtransactionÚtransactionsÚquestionÚstrÚreturnÚboolc                óT   — t          t                               | pd¦  «        ¦  «        S ©NÚ )r<   Ú_FINANCIAL_ADVICE_REÚsearch©r9   s    ú3/var/www/html/CA-Chatbot/app/saas/finance_intent.pyÚis_financial_advice_questionrD   ù   s#   € ÝÕ$×+Ò+¨H¨N¸Ñ;Ô;Ñ<Ô<Ð<ó    c                óN  — | pd                      ¦   «         }|sdS t                               |¦  «        rdS t                               |¦  «        }t          |¦  «        dk    rt          j        d|¦  «        rdS t          |¦  «        dk    rt          j        d|¦  «        rdS dS )Nr?   FTé   z4(?i)\b(only|not|why|contain|include|cover|missing)\bé   zL(?i)\b(only\s+contain|only\s+includes?|why\s+only|not\s+august|not\s+july)\b)ÚstripÚ_PERIOD_COVERAGE_RErA   Ú_MONTH_WORD_REÚfindallÚlenÚre)r9   ÚqÚmonthss      rC   Úis_period_coverage_questionrQ   ý   s¯   € Ø	ˆ�R×ÒÑ Ô €AØð ØˆuÝ×!Ò! !Ñ$Ô$ð ØˆtÝ×#Ò# AÑ&Ô&€FÝ
ˆ6�{„{�aÒÐ�BœIÐ&]Ð_`ÑaÔaÐØˆtÝ
ˆ6�{„{�aÒÐ�BœIØWØ	ñô Ðð ˆtØˆ5rE   c                óT   — t          t                               | pd¦  «        ¦  «        S r>   )r<   Ú_PAYMENT_LIST_RErA   rB   s    rC   Úis_payment_list_questionrT     s#   € ÝÕ ×'Ò'¨¨°BÑ7Ô7Ñ8Ô8Ð8rE   c                ó  — | pd                      ¦   «         }t          j        d|¦  «        sdS t          |¦  «        rdS t          j        d|¦  «        rdS t                               |¦  «        rt          j        d|¦  «        sdS dS )uN   True for analyse/summarize the document â€” not spend totals or payment lists.r?   z-(?i)\b(analy[sz]e|overview|summar(?:y|ize))\bFz8(?i)\b(how\s+much|how\s+many|list\s+all|total\s+spent)\bz(?i)\banaly[sz]e\bT)rI   rN   rA   rT   Ú	_SPEND_RE©r9   rO   s     rC   Úis_analyse_overview_askrX     s”   € à	ˆ�R×ÒÑ Ô €AÝŒ9ÐEÀqÑIÔIð ØˆuÝ Ñ"Ô"ð ØˆuÝ	„yÐLÈaÑPÔPð ØˆuÝ×Ò˜ÑÔð ¥2¤9Ð-BÀAÑ#FÔ#Fð ØˆuØˆ4rE   c                óT   — t          t                               | pd¦  «        ¦  «        S r>   )r<   Ú_PAYMENT_SINGULAR_CLARIFY_RErA   rB   s    rC   Ú is_vague_single_payment_questionr[      s#   € ÝÕ,×3Ò3°H°NÀÑCÔCÑDÔDÐDrE   c                óT   — t          t                               | pd¦  «        ¦  «        S r>   )r<   Ú_PAYMENT_COUNT_RErA   rB   s    rC   Úis_payment_count_questionr^   $  s#   € ÝÕ!×(Ò(¨¨°RÑ8Ô8Ñ9Ô9Ð9rE   c                óž   — | pd}t                                |¦  «        rdS t          j        d|¦  «        rt          j        d|¦  «        rdS dS )Nr?   Tz(?i)\b(?:bank\s+)?statement\bz3(?i)\b(?:my\s+name|account\s+holder|who\s+am\s+i)\bF)Ú_STATEMENT_IDENTITY_RErA   rN   rW   s     rC   Úis_statement_identity_questionra   (  s_   € Øˆ�B€AÝ×$Ò$ QÑ'Ô'ð Øˆtå	„yÐ1°1Ñ5Ô5ð ½"¼)Ø>Àñ;ô ;ð ð ˆtØˆ5rE   c                óT   — t          t                               | pd¦  «        ¦  «        S r>   )r<   Ú_PROFIT_LOSS_RErA   rB   s    rC   Úis_profit_loss_questionrd   4  s"   € Ý•×&Ò& x ~°2Ñ6Ô6Ñ7Ô7Ð7rE   c                óT   — t          t                               | pd¦  «        ¦  «        S )uE   True for ranked expense lists â€” not a restatement of header totals.r?   )r<   Ú_BIGGEST_EXPENSES_RErA   rB   s    rC   Úis_biggest_expenses_questionrg   8  s#   € åÕ$×+Ò+¨H¨N¸Ñ;Ô;Ñ<Ô<Ð<rE   c                óT   — t          t                               | pd¦  «        ¦  «        S )zHBranch / IFSC / account number / MICR / state on the uploaded statement.r?   )r<   Ú_STATEMENT_FIELD_RErA   rB   s    rC   Úis_statement_field_questionrj   =  s#   € åÕ#×*Ò*¨8¨>°rÑ:Ô:Ñ;Ô;Ð;rE   c                ó°   — | pd}t                                |¦  «        rdS t          t          j        d|¦  «        pt          j        d|¦  «        ¦  «        S )Nr?   Tz9(?i)\bwhat\s+(?:is|was)\s+the\s+(?:statement\s+)?period\bz(?i)\bstatement\s+period\b)Ú_STATEMENT_PERIOD_RErA   r<   rN   rW   s     rC   Úis_statement_period_questionrm   B  s^   € Øˆ�B€AÝ×"Ò" 1Ñ%Ô%ð ØˆtÝÝ
Œ	ÐNÐPQÑRÔRð 	7ÝŒ9Ð2°AÑ6Ô6ñô ð rE   c                ón  — | pd                      ¦   «         }|sdS t                               |¦  «        rdS t                               |¦  «        }|sdS t	          j        dd|                     d¦  «        ¦  «                              ¦   «                              ¦   «         }|r|dv rdS |t          v rdS dS )zRTrue when the user asks about someone else's spend (not their uploaded statement).r?   Fú\s+Ú rH   >   ÚiÚweÚyouÚanyoneÚanybodyÚsomeoneT)	rI   Ú_FIRST_PERSON_RErA   Ú_THIRD_PARTY_SPEND_RErN   ÚsubÚgroupÚlowerÚ_MERCHANT_STOP)r9   rO   ÚmÚsubjects       rC   Ú!is_unrelated_party_spend_questionr   L  sÁ   € à	ˆ�R×ÒÑ Ô €AØð ØˆuÝ×Ò˜qÑ!Ô!ð ØˆuÝ×$Ò$ QÑ'Ô'€AØð ØˆuÝŒf�V˜S !§'¢'¨!¡*¤*Ñ-Ô-×3Ò3Ñ5Ô5×;Ò;Ñ=Ô=€GØð �gÐ!SÐSÐSØˆuØ•.Ð Ð ØˆuØˆ4rE   c                óZ  — | pd                      ¦   «         }|sdS t          j        d|¦  «        rjt          |                     ¦   «         ¦  «        dk    rEt
                               |¦  «        s+t                               |¦  «        st          |¦  «        sdS t          |¦  «        }|dv S )zUTrue when the question fully specifies its own finance ask (not a pronoun follow-up).r?   Fz6(?i)\b(it|that|this|those|these|them|previous|above)\bé
   >
   r   r   r
   r   r   r   r	   r   r   r   )	rI   rN   rA   rM   ÚsplitÚ_DATE_REÚ_CATEGORY_REÚextract_merchant_queryÚclassify_finance_intent)r9   rO   Úintents      rC   Úis_analytical_self_containedrˆ   ^  s¸   € à	ˆ�R×ÒÑ Ô €AØð Øˆuå	„yÐJÈAÑNÔNð ÕSVÐWX×W^ÒW^ÑW`ÔW`ÑSaÔSaÐegÒSgÐSgÝ�Š˜qÑ!Ô!ð 	­,×*=Ò*=¸aÑ*@Ô*@ð 	ÕI_Ð`aÑIbÔIbð 	Ø�5Ý$ QÑ'Ô'€FØð ð ð rE   ú
str | Nonec                ó   — | pd                      ¦   «         }|sdS g d¢}|D �]k}t          j        ||¦  «        }|sŒ|                     d¦  «                              d¦  «        }t          j        dd|¦  «                              ¦   «         }d„ t          j        d|¦  «        D ¦   «         }|rN|d	                              ¦   «         d
v r2|                     ¦   «          |r|d	                              ¦   «         d
v °2|sŒÝt          d„ |D ¦   «         ¦  «        rŒ÷|d                              ¦   «         t          v rt          |¦  «        dk    r�Œ-d                     |¦  «                              ¦   «         }t          |¦  «        dk     r�Œi|c S dS )zRPull a merchant/payee name from 'spent on X' / 'paid to X' / 'pay Nykaa' phrasing.r?   N)zŒ(?i)spend(?:ing)?\s+(?:this\s+much\s+|so\s+much\s+|too\s+much\s+)?on\s+([A-Za-z0-9][A-Za-z0-9&.'\-]{1,40}(?:\s+[A-Za-z0-9&.'\-]{1,30}){0,3})zq(?i)(?:spent|spend|paid|pay|payment)\s+on\s+([A-Za-z0-9][A-Za-z0-9&.'\-]{1,40}(?:\s+[A-Za-z0-9&.'\-]{1,30}){0,3})z(?i)(?:cut|reduce|trim|save)\s+(?:back\s+)?on\s+(?:my\s+)?([A-Za-z0-9][A-Za-z0-9&.'\-]{1,40}(?:\s+[A-Za-z0-9&.'\-]{1,30}){0,3})z�(?i)(?:how\s+much\s+(?:did\s+i\s+)?)?(?:paid|pay|sent|send)\s+(?:to\s+)?([A-Za-z0-9][A-Za-z0-9&.'\-]{1,40}(?:\s+[A-Za-z0-9&.'\-]{1,30}){0,3})z](?i)money\s+sent\s+to\s+([A-Za-z0-9][A-Za-z0-9&.'\-]{1,40}(?:\s+[A-Za-z0-9&.'\-]{1,30}){0,3})zZ(?i)payments?\s+to\s+([A-Za-z0-9][A-Za-z0-9&.'\-]{1,40}(?:\s+[A-Za-z0-9&.'\-]{1,30}){0,3})z<(?i)\b(?:on|at)\s+([A-Za-z][A-Za-z0-9&.'\-]{2,40})\s*[?.!]*$rH   z	 ?.,!;:"'zT(?i)\s+(last|this|previous|in|on|during|for)\s+(month|year|week|july|august|june).*$c                ó   — g | ]}|¯|‘ŒS © rŒ   ©Ú.0Úts     rC   ú
<listcomp>z*extract_merchant_query.<locals>.<listcomp>“  s   € Ð8Ð8Ð8˜°aÐ8�!Ð8Ð8Ð8rE   ro   éÿÿÿÿ>   r#   r&   r'   r(   r+   r,   Úpleasec              3  óL   K  — | ]}|                      ¦   «         t          v V — Œ d S )N)r{   r|   r�   s     rC   ú	<genexpr>z)extract_merchant_query.<locals>.<genexpr>   s/   è è € Ð;Ð;¨qˆq�wŠw‰yŒy�NÐ*Ð;Ð;Ð;Ð;Ð;Ð;rE   r   rp   rG   )rI   rN   rA   rz   ry   r‚   r{   ÚpopÚallr|   rM   Újoin)r9   rO   ÚpatternsÚpatr}   ÚrawÚtokensÚnames           rC   r…   r…   v  sÃ  € à	ˆ�R×ÒÑ Ô €AØð Øˆtðð ð €Hð ð ñ ˆÝŒI�c˜1ÑÔˆØð 	ØØ�gŠg�a‰jŒj×Ò˜|Ñ,Ô,ˆÝŒfØcØØñ
ô 
÷ Š%‰'Œ'ð	 	ð
 9Ð8�RœX f¨cÑ2Ô2Ð8Ñ8Ô8ˆØð 		˜ œ×)Ò)Ñ+Ô+ð 0
ð 
ð 
ð �JŠJ‰LŒLˆLð ð 		˜ œ×)Ò)Ñ+Ô+ð 0
ð 
ð 
ð ð 	ØÝÐ;Ð;°FÐ;Ñ;Ô;Ñ;Ô;ð 	ØØ�!Œ9�?Š?ÑÔ¥Ð.Ð.µ3°v±;´;À!Ò3CÐ3CÙØ�xŠx˜ÑÔ×%Ò%Ñ'Ô'ˆÝˆt‰9Œ9�qŠ=ˆ=ÙØˆˆˆØˆ4rE   ÚFinanceIntentc                óÞ  — | pd                      ¦   «         }|sdS t          j        dd|¦  «        }t          |¦  «        rdS t                               |¦  «        rdS t          |¦  «        rdS t          |¦  «        rdS t          |¦  «        rdS t          |¦  «        st          |¦  «        rdS t          |¦  «        rdS t          |¦  «        r1t                               |¦  «        st          j        d	|¦  «        rd
S t          |¦  «        rdS t          |¦  «        st          |¦  «        rdS t                                |¦  «        rt          j        d|¦  «        rdS t                               |¦  «        rPt"                               |¦  «        s4t$                               |¦  «        st&                               |¦  «        rd
S t          j        d|¦  «        rt          j        d|¦  «        rd
S t(                               |¦  «        r2t"                               |¦  «        sd|                     ¦   «         v rdS t-          |¦  «        }|rPt"                               |¦  «        s4t.                               |¦  «        st0                               |¦  «        rdS t.                               |¦  «        r6t"                               |¦  «        st2                               |¦  «        rdS t0                               |¦  «        r1t"                               |¦  «        st          j        d|¦  «        rdS t4                               |¦  «        st          j        d|¦  «        rt"                               |¦  «        rd
S t$                               |¦  «        rdS t7          |¦  «        rdS t"                               |¦  «        rdS t8                               |¦  «        rdS t:                               |¦  «        rdS t&                               |¦  «        rdS t          j        d|¦  «        rdS t          j        d|¦  «        rt          j        d|¦  «        sdS dS )Nr?   r   z(?i)\b,\s*ade\bz mader   r   r   r   z[(?i)\b\d{1,2}(?:st|nd|rd|th)?\s+(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*\br
   r   z‡(?i)\b(spend|spent|paid|payment|received|merchant|statement|category|month|july|august|june|total|outflow|inflow|this\s+pdf|uploaded)\br   z¡(?i)\b\d{1,2}(?:st|nd|rd|th)?\s+(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*\b|(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*\s+\d{1,2}\bzN(?i)\b(payments?|transactions?|spent|spend|paid|pay|activity|outflow|inflow)\bzon r	   r   z (?i)\b(paid|pay|sent|send|upi)\bz,(?i)\b(last|previous|this|current)\s+month\br   r   r   z(?i)^\s*what\s+is\s+a\s+pdf\bz5(?i)\b(my\s+)?(pdf|document|statement|invoice|page)\bz(?i)^\s*what\s+is\s+(?:a|an)\s+r   )rI   rN   ry   r   r@   rA   rQ   rd   rg   ra   rm   rj   r^   rƒ   r   rX   Ú_COMPARE_RErV   Ú
_INCOME_REÚ
_SEARCH_REr„   r{   r…   Ú_MERCHANT_REÚ_MERCHANT_PROPER_RErw   rK   rT   Ú_INSIGHT_REÚ_SUMMARY_RE)r9   rO   Úmerchants      rC   r†   r†   «  s¯  € Ø	ˆ�R×ÒÑ Ô €AØð Øˆyå
ŒÐ! 7¨AÑ.Ô.€Aõ )¨Ñ+Ô+ð ØˆyÝ×"Ò" 1Ñ%Ô%ð "Ø!Ð!Ý" 1Ñ%Ô%ð !Ø Ð Ý˜qÑ!Ô!ð ØˆzÝ# AÑ&Ô&ð ØˆzÝ% aÑ(Ô(ð #Õ,HÈÑ,KÔ,Kð #Ø"Ð"Ý" 1Ñ%Ô%ð #Ø"Ð"Ý  Ñ#Ô#ð Ý�Š˜ÑÔðåŒ9ðKàñ
ô 
ðð ˆ}Ý  Ñ#Ô#ð ØˆÝ Ñ"Ô"ð #Õ&=¸aÑ&@Ô&@ð #Ø"Ð"Ý×Ò˜!ÑÔð ¥¤ð	ð 	
ñ"ô "ð ð ˆ|Ý‡‚�qÑÔð �y×/Ò/°Ñ2Ô2ð µj×6GÒ6GÈÑ6JÔ6Jð Íj×N_ÒN_Ð`aÑNbÔNbð Øˆ}å	„yð	Rð 	
ñ	ô ð 	õ
 Œ)ØYØ	ñô ð	ð ˆ}Ý×Ò˜1ÑÔð #¥9×#3Ò#3°AÑ#6Ô#6ð #¸%À1Ç7Â7Á9Ä9Ð:LÐ:LØ"Ð"Ý% aÑ(Ô(€HØð #•Y×%Ò% aÑ(Ô(ð #­L×,?Ò,?ÀÑ,BÔ,Bð #ÕFY×F`ÒF`ÐabÑFcÔFcð #Ø"Ð"å×Ò˜1ÑÔð #¥9×#3Ò#3°AÑ#6Ô#6ð #Õ:J×:QÒ:QÐRSÑ:TÔ:Tð #Ø"Ð"Ý×!Ò! !Ñ$Ô$ð #­)×*:Ò*:¸1Ñ*=Ô*=ð #ÅÄÐKnÐpqÑArÔArð #Ø"Ð"õ 	×Ò˜aÑ Ô ðåŒ9ÐDÀaÑHÔHðõ ×
Ò
˜1Ñ
Ô
ðð ˆ}Ý×Ò˜ÑÔð ØˆxÝ Ñ"Ô"ð $Ø#Ð#Ý×Ò˜ÑÔð "Ø!Ð!Ý×Ò˜!ÑÔð ØˆzÝ×Ò˜!ÑÔð #Ø"Ð"Ý×Ò˜ÑÔð $Ø#Ð#å	„yÐ1°1Ñ5Ô5ð ØˆyÝ	„yÐIÈ1ÑMÔMð ÕVXÔV_Ø*¨AñWô Wð ð ˆ}Øˆ9rE   )r9   r:   r;   r<   )r9   r:   r;   r‰   )r9   r:   r;   r�   )3Ú__doc__Ú
__future__r   rN   Útypingr   Úapp.pdf.calcr   r�   r   Ú__annotations__Úcompiler„   r¢   r£   rƒ   rV   r    r¥   rŸ   r¤   r@   rf   r¡   rK   rJ   rS   rZ   r]   ri   r`   rc   rl   rw   rx   r|   rD   rQ   rT   rX   r[   r^   ra   rd   rg   rj   rm   r   rˆ   r…   r†   rŒ   rE   rC   ú<module>r­      sO  ðØ AÐ AÐ Aà "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð à 1Ð 1Ð 1Ð 1Ð 1Ð 1àðô€ð$ -Ø*Ø,Ø,Ø ØØ.ØØØ*Ø!Ø(Ø$Øð)ð )Ð ð ð ð ñ ð" ˆrŒzð9ñô €ð ˆrŒzðñô €ð !�b”jØ]ñô Ð ð ˆ2Œ:ðñô €ð ˆBŒJðñô €	ð ˆRŒZØRñô €
ð ˆbŒjð4ñô €ð ˆbŒjØ[ñô €ð ˆbŒjØTñô €ð "�r”zð	ñô Ð ð "�r”zðñô Ð ð ˆRŒZðñô €
ð �”ð]ñô €ð !�b”jð	ñô Ð ð �2”:ð	ñô Ð ð  *˜rœzÐ*LÑMÔMÐ Ø�B”Jðñô Ð ð !�b”jðñô Ð ð  $˜œðñô Ð ð �"”*ðñ
ô 
€ð "�r”zðñô Ð ð �2”:ð-ñô Ð ð
 #˜œ
ð"ñô Ð ð
!ð !ð !€ðH=ð =ð =ð =ðð ð ð ð"9ð 9ð 9ð 9ðð ð ð ðEð Eð Eð Eð:ð :ð :ð :ð	ð 	ð 	ð 	ð8ð 8ð 8ð 8ð=ð =ð =ð =ð
<ð <ð <ð <ð
ð ð ð ðð ð ð ð$ð ð ð ð02ð 2ð 2ð 2ðj[ð [ð [ð [ð [ð [rE   