
    Xip                       d Z ddlmZ ddlZddlZddlmZ ddlm	Z	m
Z
mZmZmZmZ ddlT g dZdZd	Zd
ZdZdZdZdZdddddddZeez
  eez
  eez   ez   eez   ez   eez   ez   eez   ez   eeez   ez   eez   ez   eez   ez   eez   eez   dj        ZdZd
ZdZd	ZdZdZ dZ!dZ"dddddd d!d"d#Z#d$Z$g d%Z%g d&Z&g d'Z'g d(Z(g d)Z)e%e%e&e'e'e(e(e)d*Z*g d+Z+i dd,dd-d	d.dd/d
d0dd1d2d3d4d5dd6d7d8d9d:d;d<d=d>d?d@dAdBdCdDddEi dFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddddedfi dgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddÓddœddǓddɓdd˓i dd͓ddϓddѓddӓddՓddדddٓddۓddݓddߓddddddddddddddi ddddddddddddddddddd ddddddddd	d
dddddi ddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1i d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSi dTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdui dvdwdxdydzd{d|d}d~dddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddÓdĐdœdƐdǓdȐdɓdʐd˓d̐d͓dΐdϓdАdѓdҐdӓdԐdՓd֐dדdؐdٓdڐdۓi dܐdݓdސdߓddddddddddddddddddddddddddddddi ddd ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%Z,d&d'd(d)d*d+d,d-d.d/	Z- e.g d0          Z/e0e1e0e1e0e1fZ2e1e0e1e0e1e0fZ3d1 Z4djd2Z5	 djd3Z6djd4Z7djd5Z8dkd6Z9	 dkd7Z: G d8 d9e;          Z< G d: d;e=          Z> G d< d=e?          Z@dZAd
ZBdZCd2ZDd4ZEdZF eGd7dC          \  ZHZIZJZKZLZMd> ZNd? ZOd@ ZPdA ZQdB ZRdC ZSdD ZTdE ZUdF ZVeeNe!eWiZXeeNe!eNiZYeeVe!eNiZZeAeXeej[        d`dGfeBeXeej\        d`dHfeCeXeej]        dsdIfeDeXeej^        dsdJfeEeXeeOddKfeFeZe!ej[        dLdLfeHeYeePd9dMfeIeYeeQd9dNfeJeYeeRd9dOfeKeYeeSd9dPfeLeYeeTd9dQfeMeYeeUd9dRfiZ_dS ddHdTfdU ddGdTfdV ddTdWfdXZ`dYZadYZbdZcd9ZddldZZe	 	 dmd[Zfdld\Zgdnd]Zhdnd^Zid_ Zjdkd`ZkdodaZldb ZmdkdcZndoddZode ZpdodfZqdg Zrdh Zsdi ZtdS (p  z9
Module for parsing/evaluating Microsoft Excel formulas.
    )print_functionN)unpack   )
BaseObject	XLRDErrorerror_text_from_codehex_char_dumpunpack_string_update_posunpack_unicode_update_pos)*)oBOOLoERRoNUMoREFoRELoSTRGoUNKdecompile_formuladump_formulaevaluate_name_formula
okind_dictrangename3drangename3drelcellnamecellnameabscolnameFMLA_TYPE_CELLFMLA_TYPE_SHAREDFMLA_TYPE_ARRAYFMLA_TYPE_COND_FMTFMLA_TYPE_DATA_VALFMLA_TYPE_NAMEOperandRef3D                ?   CELLSHAREDARRAYzCOND-FMTzDATA-VALNAME)r   r%   r&   r'   r(   r)   )r   r%      r(      r)   #   9   :   ;   ,   -         r   r   r   r   r   r   r   oMSNG)r:   r9   r   r   r%   r7   r&   r8   ,)@r:   r&   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r:   r9   r'   r&   r%   r%   r7   	   r'   r%   r7   r'   r&      r8   r8   r8   r%   r&   r>   r&   r>   r%   r%   r:   r:   r:   r:   r:   r:   r:   r:   r7   r:   r:   r:   r:   r:   r:   r:   )@r:   r8   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r:   r9      r8   r%   r%   r7   r=   r=   r%   r7   r?   r&   r>   r>   r>   r>   r7   r&   r>   r&   r>   r7   r7   r:   r:   r:   r:   r:   r:   r:   r:   r7   r:   r:   r:   r:   r:   r:   r:   )@r:   r8   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r:   r9   r?   r8   r%   r%   r7   r=   r=   r7   r&   r?   r&   r>   r>   r>   r>   r7   r&   r>   r&   r>   r7   r7   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   )@r:   r8   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r:   r9   r:   r:   r%   r%   r7   r=   r=   r7   r&   r/   r&   r>   r>   r>   r>   r7   r&   r>   r&   r>   r7   r7   r:   r:   r:   r:   r:   r:   r:   r:   r:            rA   rB   r:   r:   )@r:   r8   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r9   r9   r:   r:   r%   r%   r7   r=   r=   r7   r&   r8   r8   r=   r>   r>   r>   r7   r8   r=   r8   r=   r7   r7   r:   r:   r:   r:   r:   r:   r:   r:   r:   r>   r>   r?   r>   r?   r:   r:   )   rB      (   r6   2   F   P   )@Unk00ExpTblAddSubMulDivPowerConcatLTLEEQGEGTNEIsectListRangeUplusUminusPercentParenMissArgStrExtendedAttrSheetEndSheetErrBoolIntNumArrayFuncFuncVarNameRefAreaMemAreaMemErrMemNoMemMemFuncRefErrAreaErrRefNAreaNMemAreaN	MemNoMemN ry   ry   ry   ry   ry   ry   ry   FuncCENameXRef3dArea3dRefErr3d	AreaErr3dry   ry   )COUNTr   rD   r&   r   VR)IFr%   r7   r&   r7   r   VRR)ISNAr   r   r%   r   r   r   )ISERRORr   r   r%   r   r   r   )SUMr   rD   r&   r   r   r   )AVERAGEr   rD   r&   r   r   r      )MINr   rD   r&   r   r   r   r>   )MAXr   rD   r&   r   r   r   )ROWr   r   r&   r   r   r   r=   )COLUMNr   r   r&   r   r   r   
   )NAr   r   r%   r   r   ry   r?   )NPVr%   rD   r&   r%   r   VR   )STDEVr   rD   r&   r   r   r      )DOLLARr   r%   r&   r   r   r      )FIXEDr%   r7   r&   r7   r   VVVr/   )SINr   r   r%   r   r   r   )COSr   r   r%   r   r   r   r0   )TANr   r   r%   r   r   r   rA   )ATANr   r   r%   r   r   r      )PIr   r   r%   r   r   ry   rC   )SQRTr   r   r%   r   r   r   rB   )EXPr   r   r%   r   r   r      )LNr   r   r%   r   r   r      )LOG10r   r   r%   r   r   r      )ABSr   r   r%   r   r   r   r@   )INTr   r   r%   r   r   r      )SIGNr   r   r%   r   r   r      )ROUNDr%   r%   r%   r%   r   VV   )LOOKUPr%   r7   r&   r%   r   r      )INDEXr%   r&   r   r&   r   RVVVrD   )REPTr%   r%   r%   r%   r   r      )MIDr7   r7   r%   r7   r   r   )LENr   r   r%   r   r   r   !   )VALUEr   r   r%   r   r   r   "   )TRUEr   r   r%   r   r   ry   r1   )FALSEr   r   r%   r   r   ry   $   )ANDr   rD   r&   r   r   r   %   )ORr   rD   r&   r   r   r   &   )NOTr   r   r%   r   r   r   '   )MODr%   r%   r%   r%   r   r   rE   )DCOUNTr7   r7   r%   r7   r   RRR)   )DSUMr7   r7   r%   r7   r   r   *   )DAVERAGEr7   r7   r%   r7   r   r   +   )DMINr7   r7   r%   r7   r   r   r5   )DMAXr7   r7   r%   r7   r   r   r6   )DSTDEVr7   r7   r%   r7   r   r   .   )VARr   rD   r&   r   r   r   /   )DVARr7   r7   r%   r7   r   r   0   )TEXTr%   r%   r%   r%   r   r   1   )LINESTr   r&   r&   r&   ARRVVrF   )TRENDr   r&   r&   r&   r   RRRV3   )LOGESTr   r&   r&   r&   r   r   4   )GROWTHr   r&   r&   r&   r   r   8   )PVr7   r8   r&   r8   r   VVVVVr2   )FVr7   r8   r&   r8   r   r   r3   )NPERr7   r8   r&   r8   r   r   r4   )PMTr7   r8   r&   r8   r   r   <   )RATEr7   r   r&   r   r   VVVVVV=   )MIRRr7   r7   r%   r7   r   RVV>   )IRRr   r%   r&   r%   r   RV)RANDr   r   r   r   r   ry   @   )MATCHr%   r7   r&   r7   r   r   A   )DATEr7   r7   r%   r7   r   r   B   )TIMEr7   r7   r%   r7   r   r   C   )DAYr   r   r%   r   r   r   D   )MONTHr   r   r%   r   r   r   E   )YEARr   r   r%   r   r   r   rG   )WEEKDAYr   r%   r&   r%   r   r   G   )HOURr   r   r%   r   r   r   H   )MINUTEr   r   r%   r   r   r   I   )SECONDr   r   r%   r   r   r   J   )NOWr   r   r   r   r   ry   K   )AREASr   r   r%   r   r   r   L   )ROWSr   r   r%   r   r   r   M   )COLUMNSr   r   r%   r   r   r   N   )OFFSETr7   r8   r&   r8   r   RVVVVR   )SEARCHr%   r7   r&   r7   r   r   S   )	TRANSPOSEr   r   r%   r   r   r   V   )TYPEr   r   r%   r   r   r   \   )	SERIESSUMr&   r&   r%   r&   r   VVVAa   )ATAN2r%   r%   r%   r%   r   r   b   )ASINr   r   r%   r   r   r   c   )ACOSr   r   r%   r   r   r   d   )CHOOSEr%   rD   r&   r%   r   r   e   )HLOOKUPr7   r&   r&   r&   r   VRRVf   )VLOOKUPr7   r&   r&   r&   r   r  i   )ISREFr   r   r%   r   r   r   m   )LOGr   r%   r&   r%   r   r   o   )CHARr   r   r%   r   r   r   p   )LOWERr   r   r%   r   r   r   q   )UPPERr   r   r%   r   r   r   r   )PROPERr   r   r%   r   r   r   s   )LEFTr   r%   r&   r%   r   r   t   )RIGHTr   r%   r&   r%   r   r   u   )EXACTr%   r%   r%   r%   r   r   v   )TRIMr   r   r%   r   r   r   w   )REPLACEr&   r&   r%   r&   r   VVVVx   )
SUBSTITUTEr7   r&   r&   r&   r   r7  y   )CODEr   r   r%   r   r   r   |   )FINDr%   r7   r&   r7   r   r   }   )r+   r   r%   r   r%   r   r   ~   )ISERRr   r   r%   r   r   r      )ISTEXTr   r   r%   r   r   r      )ISNUMBERr   r   r%   r   r   r      )ISBLANKr   r   r%   r   r   r      )Tr   r   r%   r   r   r      )Nr   r   r%   r   r   r      )	DATEVALUEr   r   r%   r   r   r      )	TIMEVALUEr   r   r%   r   r   r      )SLNr7   r7   r%   r7   r   r      )SYDr&   r&   r%   r&   r   r7     )DDBr&   r8   r&   r8   r   r      )INDIRECTr   r%   r   r%   r   r      )CLEANr   r   r%   r   r   r      )MDETERMr   r   r%   r   r   r      )MINVERSEr   r   r%   r   r   r      )MMULTr%   r%   r%   r%   r   AA   )IPMTr&   r   r&   r   r   r      )PPMTr&   r   r&   r   r   r      )COUNTAr   rD   r&   r   r   r      )PRODUCTr   rD   r&   r   r   r      )FACTr   r   r%   r   r   r      )DPRODUCTr7   r7   r%   r7   r   r      )	ISNONTEXTr   r   r%   r   r   r      )STDEVPr   rD   r&   r   r   r      )VARPr   rD   r&   r   r   r      )DSTDEVPr7   r7   r%   r7   r   r      )DVARPr7   r7   r%   r7   r   r      )TRUNCr   r%   r&   r%   r   r      )	ISLOGICALr   r   r%   r   r   r      )DCOUNTAr7   r7   r%   r7   r   r      )USDOLLARr   r%   r&   r%   r   r      )FINDBr%   r7   r&   r7   r   r      )SEARCHBr%   r7   r&   r7   r   r      )REPLACEBr&   r&   r%   r&   r   r7     )LEFTBr   r%   r&   r%   r   r      )RIGHTBr   r%   r&   r%   r   r      )MIDBr7   r7   r%   r7   r   r      )LENBr   r   r%   r   r   r      )ROUNDUPr%   r%   r%   r%   r   r      )	ROUNDDOWNr%   r%   r%   r%   r   r      )ASCr   r   r%   r   r   r      )DBCSr   r   r%   r   r   r      )RANKr%   r7   r&   r7   r   VRV   )ADDRESSr%   r8   r&   r8   r   r      )DAYS360r%   r7   r&   r7   r   r      )TODAYr   r   r   r   r   ry      )VDBr8   r>   r&   r>   r   VVVVVVV   )MEDIANr   rD   r&   r   r   r      )
SUMPRODUCTr   rD   r&   r   r   r      )SINHr   r   r%   r   r   r      )COSHr   r   r%   r   r   r      )TANHr   r   r%   r   r   r      )ASINHr   r   r%   r   r   r      )ACOSHr   r   r%   r   r   r      )ATANHr   r   r%   r   r   r      )DGETr7   r7   r%   r7   r   r      )INFOr   r   r%   r   r   r      )DBr&   r8   r&   r8   r   r      )	FREQUENCYr%   r%   r%   r%   r   RRi  )z
ERROR.TYPEr   r   r%   r   r   r   i  )AVEDEVr   rD   r&   r   r   r   i  )BETADISTr7   r8   r&   r   r   r   i  )GAMMALNr   r   r%   r   r   r   i  )BETAINVr7   r8   r&   r   r   r   i  )	BINOMDISTr&   r&   r%   r&   r   r7  i  )CHIDISTr%   r%   r%   r%   r   r   i  )CHIINVr%   r%   r%   r%   r   r   i  )COMBINr%   r%   r%   r%   r   r   i  )
CONFIDENCEr7   r7   r%   r7   r   r   i  )	CRITBINOMr7   r7   r%   r7   r   r   i  )EVENr   r   r%   r   r   r   i  )	EXPONDISTr7   r7   r%   r7   r   r   i  )FDISTr7   r7   r%   r7   r   r   i  )FINVr7   r7   r%   r7   r   r   i  )FISHERr   r   r%   r   r   r   i  )	FISHERINVr   r   r%   r   r   r   i  )FLOORr%   r%   r%   r%   r   r   i  )	GAMMADISTr&   r&   r%   r&   r   r7  i  )GAMMAINVr7   r7   r%   r7   r   r   i   )CEILINGr%   r%   r%   r%   r   r   i!  )HYPGEOMDISTr&   r&   r%   r&   r   r7  i"  )LOGNORMDISTr7   r7   r%   r7   r   r   i#  )LOGINVr7   r7   r%   r7   r   r   i$  )NEGBINOMDISTr7   r7   r%   r7   r   r   i%  )NORMDISTr&   r&   r%   r&   r   r7  i&  )	NORMSDISTr   r   r%   r   r   r   i'  )NORMINVr7   r7   r%   r7   r   r   i(  )NORMSINVr   r   r%   r   r   r   i)  )STANDARDIZEr7   r7   r%   r7   r   r   i*  )ODDr   r   r%   r   r   r   i+  )PERMUTr%   r%   r%   r%   r   r   i,  )POISSONr7   r7   r%   r7   r   r   i-  )TDISTr7   r7   r%   r7   r   r   i.  )WEIBULLr&   r&   r%   r&   r   r7  i/  )SUMXMY2r%   r%   r%   r%   r   r_  i0  )SUMX2MY2r%   r%   r%   r%   r   r_  i1  )SUMX2PY2r%   r%   r%   r%   r   r_  i2  )CHITESTr%   r%   r%   r%   r   r_  i3  )CORRELr%   r%   r%   r%   r   r_  i4  )COVARr%   r%   r%   r%   r   r_  i5  )FORECASTr7   r7   r%   r7   r   VAAi6  )FTESTr%   r%   r%   r%   r   r_  i7  )	INTERCEPTr%   r%   r%   r%   r   r_  i8  )PEARSONr%   r%   r%   r%   r   r_  i9  )RSQr%   r%   r%   r%   r   r_  i:  )STEYXr%   r%   r%   r%   r   r_  i;  )SLOPEr%   r%   r%   r%   r   r_  i<  )TTESTr&   r&   r%   r&   r   AAVVi=  )PROBr7   r&   r&   r7   r   AAVi>  )DEVSQr   rD   r&   r   r   r   i?  )GEOMEANr   rD   r&   r   r   r   i@  )HARMEANr   rD   r&   r   r   r   iA  )SUMSQr   rD   r&   r   r   r   iB  )KURTr   rD   r&   r   r   r   iC  )SKEWr   rD   r&   r   r   r   iD  )ZTESTr%   r7   r&   r%   r   r   iE  )LARGEr%   r%   r%   r%   r   r   iF  )SMALLr%   r%   r%   r%   r   r   iG  )QUARTILEr%   r%   r%   r%   r   r   iH  )
PERCENTILEr%   r%   r%   r%   r   r   iI  )PERCENTRANKr%   r7   r&   r%   r   r   iJ  )MODEr   rD   r&   r   r   r   iK  )TRIMMEANr%   r%   r%   r%   r   r   iL  )TINVr%   r%   r%   r%   r   r   iP  )CONCATENATEr   rD   r&   r   r   r   iQ  )POWERr%   r%   r%   r%   r   r   iV  )RADIANSr   r   r%   r   r   r   iW  )DEGREESr   r   r%   r   r   r   iX  )SUBTOTALr%   rD   r&   r%   r   r   iY  )SUMIFr%   r7   r&   r7   r   RVRiZ  )COUNTIFr%   r%   r%   r%   r   r   i[  )
COUNTBLANKr   r   r%   r   r   r   i^  )ISPMTr&   r&   r%   r&   r   r7  i_  )DATEDIFr7   r7   r%   r7   r   r   i`  )
DATESTRINGr   r   r%   r   r   r   ia  )NUMBERSTRINGr%   r%   r%   r%   r   r   ib  )ROMANr   r%   r&   r%   r   r   if  )GETPIVOTDATAr%   r%   r%   r%   r   r   ig  )	HYPERLINKr   r%   r&   r%   r   r   ih  )PHONETICr   r   r%   r   r   r   ii  )AVERAGEAr   rD   r&   r   r   r   ij  )MAXAr   rD   r&   r   r   r   ik  )MINAr   rD   r&   r   r   r   il  )STDEVPAr   rD   r&   r   r   r   im  )VARPAr   rD   r&   r   r   r   in  )STDEVAr   rD   r&   r   r   r   io  )VARAr   rD   r&   r   r   r   ip  )BAHTTEXTr   r   r%   r   r   r   iq  )THAIDAYOFWEEKr   r   r%   r   r   r   ir  )	THAIDIGITr   r   r%   r   r   r   is  )THAIMONTHOFYEARr   r   r%   r   r   r   it  )THAINUMSOUNDr   r   r%   r   r   r   iu  )THAINUMSTRINGr   r   r%   r   r   r   iv  )THAISTRINGLENGTHr   r   r%   r   r   r   )ISTHAIDIGITr   r   r%   r   r   r   )ROUNDBAHTDOWNr   r   r%   r   r   r   )ROUNDBAHTUPr   r   r%   r   r   r   )THAIYEARr   r   r%   r   r   r   )RTDr%   r8   r&   r   r   r   )iw  ix  iy  iz  i{  zSkip??VolatileIfChooseSkipSumAssignSpaceSpaceVolatile)	r   r   r%   r&   r'   r(   r)   r   r   )r>   r'   r   r?   r   r   r   c                 f    t          d t          | |j        |j                  D                       S )Nc              3   6   K   | ]\  }}} |||          V  d S N ).0funcnumanumbs       7/usr/local/lib/python3.11/dist-packages/xlrd/formula.py	<genexpr>zdo_box_funcs.<locals>.<genexpr>  sH        D$ 	T4         )tuplezipcoords)	box_funcsboxaboxbs      r0  do_box_funcsr9    s@       #It{DK H H     r2  c                     |dz	  dz  }|dz	  dz  }| }|dz  }|r|r|dk    r|dz  }|r|dk    r|dz  }n|r||z  }|r||z  }||||fS )	Nr/   r   r            rC     r+  	rowvalcolvalreldeltabrowxbcolxrow_relcol_relrowxcolxs	            r0  adjust_cell_addr_biff8rI    s    |q G|q GDD=D 	 	tu}}EMD 	ts{{CKD 	EMD 	EMDw''r2  c                     | dz	  dz  }| dz	  dz  }| dz  }|}|r|r|dk    r|dz  }|r|dk    r|dz  }n|r||z  }|r||z  }||||fS )	Nr/   r   r   i?  i    i @  rC  r>  r+  r?  s	            r0  adjust_cell_addr_biff_le7rK    s    |q G|q GF?DD 	 	tt||EMD 	ts{{CKD 	EMD 	EMDw''r2  c                     |dk    r1t          d| ||dz                      \  }}t          |||||          S t          d| ||dz                      \  }}t          |||||          S )NrH   <HHr&   z<HBr7   r   rI  rK  )dataposbvrB  rC  rD  r@  rA  s           r0  get_cell_addrrR    s|    	RxxtCAI77%ffhuMMMtCAI77(FHeU< < 	<r2  c                 6   |dk    rJt          d| ||dz                      \  }}}}	t          |||||          }
t          ||	|||          }|
|fS t          d| ||dz                      \  }}}}	t          |||||          }
t          ||	|||          }|
|fS )NrH   z<HHHHr'   z<HHBBr   rN  )rO  rP  rQ  rB  rC  rD  row1valrow2valcol1valcol2valres1res2s               r0  get_cell_range_addrrZ    s    	Rxx-3GT#c!e)_-M-M*'7 &gw%OO%gw%OOTz-3GT#c!e)_-M-M*'7 )Whu> >(Whu> >Tzr2  c                 N   	 | j         |         }n># t          $ r1 t          d|t          | j                   fz  | j                   Y dS w xY w|\  }}}|| j        k    r0|rt          d||fz  | j                   |dcxk    r|k    sn J dS || j        k    r|rt          d||fz  | j                   dS |dcxk    r|k    r"n n|rt          d	||fz  | j                   d
S |dcxk    r|k    r!n n|rt          d|fz  | j                   dS t          | j                  }d|cxk    r|cxk    r|k     s:n |r4t          d||fz  | j                   t          d|z  | j                   dS | j        |         }| j        |         }	d|cxk    r|	k    sn dS ||	fS )Nz:!!! get_externsheet_local_range: refx=%d, not in range(%d)file)r^  z5/// get_externsheet_local_range(refx=%d) -> addins %ri  )r_  z7/// get_externsheet_local_range(refx=%d) -> external %rra  z@/// get_externsheet_local_range(refx=%d) -> unspecified sheet %rr9   r9   i  z</// get_externsheet_local_range(refx=%d) -> deleted sheet(s)r:   r:   r   z./// get_externsheet_local_range(refx=%d) -> %r%--- first/last sheet not in range(%d))re  rg  )_externsheet_info
IndexErrorprintlenlogfile_supbook_addins_inx_supbook_locals_inx_all_sheets_map)
bkrefxblahinforef_recordxref_first_sheetxref_last_sheetxnsheetsxlrd_sheetx1xlrd_sheetx2s
             r0  get_externsheet_local_rangerz    s   #D)   JS-../068j	B 	B 	B 	B|| 6:2K!?b,,, 	kITSWLX_a_ijjjj6<<<<_<<<<<<xb,,, 	mKtUYlZacakllllx64444_44444 	vTX\^bWccjljtuuuux64444_44444 	nPTXS[[bdblmmmmx"$%%G ====O====g==== 	VBdD\QXZXbcccc9GC"*UUUU|%&67L%o6L,,,,,,,,x%%s    7A
Ac                    |dk    r|rt          d|z  | j                   dS |dk    r|dk    rdS t          | j                  }d|cxk    r|cxk    r|k     s;n |r5t          d|||fz  | j                   t          d|z  | j                   d	S | j        |         }| j        |         }d|cxk    r|k    sn d
S ||fS )Nr   z?/// get_externsheet_local_range_b57(raw_extshtx=%d) -> externalr\  r`  r9   rc  z6/// get_externsheet_local_range_b57(%d, %d, %d) -> ???rd  )r|  rf  )rj  rl  rk  ro  )rp  raw_extshtxru  rv  rr  rw  rx  ry  s           r0  get_externsheet_local_range_b57r~    s6   Q 	tSVaahjhrssssx2/R"7"7x"$%%G ====O====g==== 	VJ 0/BCIKU U U U9GC"*UUUU|%&67L%o6L,,,,,,,,x%%r2  c                       e Zd ZdS )FormulaErrorN)__name__
__module____qualname__r+  r2  r0  r  r    s        Dr2  r  c                   ,    e Zd ZdZdZeZdZddZd Z	dS )r#   a  
    Used in evaluating formulas.
    The following table describes the kinds and how their values
    are represented.

    .. raw:: html

        <table border="1" cellpadding="7">
        <tr>
        <th>Kind symbol</th>
        <th>Kind number</th>
        <th>Value representation</th>
        </tr>
        <tr>
        <td>oBOOL</td>
        <td align="center">3</td>
        <td>integer: 0 => False; 1 => True</td>
        </tr>
        <tr>
        <td>oERR</td>
        <td align="center">4</td>
        <td>None, or an int error code (same as XL_CELL_ERROR in the Cell class).
        </td>
        </tr>
        <tr>
        <td>oMSNG</td>
        <td align="center">5</td>
        <td>Used by Excel as a placeholder for a missing (not supplied) function
        argument. Should *not* appear as a final formula result. Value is None.</td>
        </tr>
        <tr>
        <td>oNUM</td>
        <td align="center">2</td>
        <td>A float. Note that there is no way of distinguishing dates.</td>
        </tr>
        <tr>
        <td>oREF</td>
        <td align="center">-1</td>
        <td>The value is either None or a non-empty list of
        absolute Ref3D instances.<br>
        </td>
        </tr>
        <tr>
        <td>oREL</td>
        <td align="center">-2</td>
        <td>The value is None or a non-empty list of
        fully or partially relative Ref3D instances.
        </td>
        </tr>
        <tr>
        <td>oSTRG</td>
        <td align="center">1</td>
        <td>A Unicode string.</td>
        </tr>
        <tr>
        <td>oUNK</td>
        <td align="center">0</td>
        <td>The kind is unknown or ambiguous. The value is None</td>
        </tr>
        </table>
    N?r   c                 F    ||| _         ||| _        || _        || _        d S r*  )kindvalueranktext)selfakindavaluearankatexts        r0  __init__zOperand.__init__b  s0    DIDJ	 			r2  c                 n    t                               | j        d          }d|d| j        d| j        dS )Nz?Unknown kind?zOperand(kind=z, value=z, text=))r   getr  r  r  )r  	kind_texts     r0  __repr__zOperand.__repr__l  s;    NN49.>??		yy$***diii1 	1r2  )NNr   r  )
r  r  r  __doc__r  r   r  r  r  r  r+  r2  r0  r#   r#     sW        < <@ E D D   1 1 1 1 1r2  r#   c                       e Zd ZdZd Zd ZdS )r$   a  
    Represents an absolute or relative 3-dimensional reference to a box
    of one or more cells.

    The ``coords`` attribute is a tuple of the form::

      (shtxlo, shtxhi, rowxlo, rowxhi, colxlo, colxhi)

    where ``0 <= thingxlo <= thingx < thingxhi``.

    .. note::
      It is quite possible to have ``thingx > nthings``; for example
      ``Print_Titles`` could have ``colxhi == 256`` and/or ``rowxhi == 65536``
      irrespective of how many columns/rows are actually used in the worksheet.
      The caller will need to decide how to handle this situation.
      Keyword: :class:`IndexError` :-)

    The components of the coords attribute are also available as individual
    attributes: ``shtxlo``, ``shtxhi``, ``rowxlo``, ``rowxhi``, ``colxlo``, and
    ``colxhi``.

    The ``relflags`` attribute is a 6-tuple of flags which indicate whether
    the corresponding (sheet|row|col)(lo|hi) is relative (1) or absolute (0).

    .. note::
      There is necessarily no information available as to what cell(s)
      the reference could possibly be relative to. The caller must decide what
      if any use to make of ``oREL`` operands.

    .. note:
      A partially relative reference may well be a typo.
      For example, define name ``A1Z10`` as ``$a$1:$z10`` (missing ``$`` after
      ``z``) while the cursor is on cell ``Sheet3!A27``.

      The resulting :class:`Ref3D` instance will have
      ``coords = (2, 3, 0, -16, 0, 26)``
      and ``relflags = (0, 0, 0, 1, 0, 0).<br>

      So far, only one possibility of a sheet-relative component in
      a reference has been noticed: a 2D reference located in the
      "current sheet".

      This will appear as ``coords = (0, 1, ...)`` and
      ``relflags = (1, 1, ...)``.

    .. versionadded:: 0.6.0
    c                     |dd         | _         |dd         | _        | j        sd| _        | j         \  | _        | _        | _        | _        | _        | _        d S )Nr   r   r   r   r   r   r   r   r   )r5  relflagsshtxloshtxhirowxlorowxhicolxlocolxhi)r  atuples     r0  r  zRef3D.__init__  s[    QqSkqt} 	/.DM %)K	"dkT[T[[[r2  c                 b    | j         r| j         dk    rd| j        dS d| j        d| j         dS )Nr  zRef3D(coords=r  z, relflags=)r  r5  )r  s    r0  r  zRef3D.__repr__  sL    } 	/1C C C)-77 !D ;;;/ /r2  N)r  r  r  r  r  r  r+  r2  r0  r$   r$   r  s=        . .`0 0 0/ / / / /r2  r$   c                     | S r*  r+  xs    r0  nopr    s    Hr2  c                     | |z  S r*  r+  r  ys     r0  _opr_powr    s
    16Mr2  c                     | |k     S r*  r+  r  s     r0  _opr_ltr    
    !q&=r2  c                     | |k    S r*  r+  r  s     r0  _opr_ler    r  r2  c                     | |k    S r*  r+  r  s     r0  _opr_eqr    r  r2  c                     | |k    S r*  r+  r  s     r0  _opr_ger    r  r2  c                     | |k    S r*  r+  r  s     r0  _opr_gtr    r  r2  c                     | |k    S r*  r+  r  s     r0  _opr_ner    r  r2  c                 b    t          |           }|                    d          r
|dd         }|S )zN
    Attempt to emulate Excel's default conversion from number to string.
    z.0Nr:   )strendswith)numss     r0  num2strgr    s5     	CAzz$ crcFHr2  +-r   /^&<z<==z>=>z<>c                     |  S r*  r+  r  s    r0  <lambda>r    s    aR r2  ry   c                     | S r*  r+  r  s    r0  r  r    s    Q r2  c                     | dz  S )Ng      Y@r+  r  s    r0  r  r    s
    QY r2  %)r   rA   rC   Z   c                 r7   |t           k    rd}|j        }|j        }| j        }d}|r<t	          d||j        ||||fz  | j                   t          |d|| j                   |t          k    rt          d          t          |         }	d}
g }d}d}d}t          t          d           }t          t          d           }|j        }d }d }d	 }|dk    r|g}d|
cxk    r|k     r(n n$t          ||
                   }|d
z  }|dz  dz	  }|r|dz   }n|}t           |         }|	|         }|r6t	          d|
|||||fz  | j                   t	          d|| j                   |dk    rd|||fz  }t#          |          |
sd|cxk    rdk    rn n |||           
nd|cxk    rdk    rn n |||           
n|dk    r|rt	          d|| j                   t%          |          dk    sJ |                                }|                                }d}d}d                    dd |j        |k              |j        dd |j        |k              |dd |j        |k              |j        dd |j        |k              g          } t          t.                    }!| |!_        |j        t          k    s|j        t          k    rt          |!_        n|j        t          k    s|j        t          k    rn|j        t.          cxk    r|j        k    rn n|j        ||j        ut%          |j                  dk    sJ t%          |j                  dk    sJ t5          t6          |j        d         |j        d                   }"t9          |"          g|!_        n|j        t:          cxk    r|j        k    rn nt:          |!_        |j        |j        t%          |j                  dk    sJ t%          |j                  dk    sJ t5          t6          |j        d         |j        d                   }"|j        d         j        }#|j        d         j        }$|#|$k    rt9          |"|#z             g|!_        n	  ||!           |rt	          d|| j                   n|dk    r|rt	          d|| j                   t%          |          dk    sJ |                                }|                                }d}d}d                    dd |j        |k              |j        dd |j        |k              |dd |j        |k              |j        dd |j        |k              g          } t          t.          d ||           }!|j        t          k    s|j        t          k    rt          |!_        n|j        t.          t:          fv r|j        t.          t:          fv rt.          |!_        |j        t:          k    s|j        t:          k    rt:          |!_        |j        O|j        Ht%          |j                  dk    sJ t%          |j                  dk    sJ |j        |j        z   |!_        n	  ||!           |rt	          d || j                   n|d!k    r|rt	          d"|| j                   t%          |          dk    sJ |                                }|                                }d#}d}d                    dd |j        |k              |j        dd |j        |k              |dd |j        |k              |j        dd |j        |k              g          } t          t.          d ||           }!|j        t          k    s|j        t          k    rt          |!_        n|j        t.          cxk    r|j        k    rn n|j        ||j        ut%          |j                  dk    sJ t%          |j                  dk    sJ t5          t>          |j        d         |j        d                   }"t9          |"          g|!_        n|j        t:          cxk    r|j        k    rn nt:          |!_        |j        |j        t%          |j                  dk    sJ t%          |j                  dk    sJ t5          t>          |j        d         |j        d                   }"|j        d         j        }#|j        d         j        }$|#|$k    rt9          |"|#z             g|!_        n	  ||!           |rt	          d$|| j                   nd%|cxk    rd&k    rn n ||t@          |           n|d'k    rn|d(k    r' |t          tB          d tD          d                     n|d)k    r|d*k    rtG          ||
dz   | j$        d+          \  }%}&ntK          ||
dz   d+          \  }%}&|&|
z
  }|rt	          d,||%fz  | j                   d-|%&                    d-d.          z   d-z   }' |t          tN          |%tD          |'                     n|d/k    r|dk    sJ t#          d0          |d1k    rtQ          d2||
dz   |
d3z                      \  }(})tR          *                    |(d4          }*|(d3k    r	|)dz  d5z   }nj|(dk    rbd3}|rt	          d6|| j                   t%          |          dk    sJ |d7         }d8|j        z  } t          t@          d tV          |           |d7<   nd3}|rt	          d9|(|*||)fz  | j                   n"d:|cxk    rd;k    rn n|d<k     sJ t#          d=          d>|cxk    rd
k    rn n|d>z
  }+g d?|+         },t          tX          t@          t@          g|+         }-tQ          d@dA|+         z   ||
dz   |
dz   |,z                      \  }.|+dk    rt[          |.          }.t]          |.          }'n8|+dk    rt]          |.          }'n"|+dk    r	dB|.         }'nd-t^          |.         z   d-z   }' |t          |-|.tD          |'                     nt#          dC|z            |dk    rt#          dD|z            |
|z  }
|dk    r ||           nV|dk    r5dta          |dEk              z   },tQ          d@dF|,         z   ||
dz   |
dz   |,z                      d         }/tb          *                    |/d           }0|0s&t	          dG|/z  | j                    ||           n|0d d         \  }1}2|rt	          dH|/|1|2fz  | j                   t%          |          |2k    sJ |2r<td                              dI ||2 d          D                       }3|1d|3d} ||2 d = n|1dJz   } t          t          d tV          |           }! ||!           n|dk    r;dta          |dEk              z   },tQ          dKdF|,         z   ||
dz   |
dz   |,z                      \  }2}/tg          |2dL          \  }4}2tg          |/dM          \  }5}/|rt	          dN|/|2|5|4fz  | j                   tb          *                    |/d           }0|0s&t	          dO|/z  | j                    ||           nH|0d d         \  }1}6}7|rt	          dP|1|6|7fz  | j                   |6|2cxk    r|7k    sn J t%          |          |2k    sJ t%          |          |2k    sJ td                              dQ ||2 d          D                       }3|1d|3d} t          t          d tV          |           }!|/dk    r||2          }8|8j        t@          tX          fvr*|r&|8j        t          k    rt	          dR| j                   nV|8j        dSvr!|r|8j        t	          dT| j                   n,|2dk    r|8j        stX          dc|!_        |!_        na|2 dz   ta          |8j                  z
  }9||9         }:|:j        tB          k    rt@          dc|!_        |!_        n|:j        |:j        c|!_        |!_        |rt	          dU| j                   n|/dVk    r||2          }8|8j        t@          k    rqd|8j        cxk    r|2k     r_n n\||2 ta          |8j                  z            }:|:j        tB          k    rt@          dc|!_        |!_        n|:j        |:j        c|!_        |!_        ||2 d =  ||!           	n|dk    rtQ          dW||
dz   |
dz                      d         dz
  };|rt	          dX|;z  | j                   | j4        |;         }<|<j5        stm          | |<|;||dz              |<j7        s|<j8        s|<j9        rU|r|<:                    | j        dYdZ[           t          t          d           }!|p|<j7        p|<j8        p|<j9        }|p|<j;        }n9t%          |<j<                  dk    sJ t{          j>        |<j<        d                   }!tD          |!_        |<j?        d7k    r|<j        |!_        n!| j@        |<j?                 d\|<j        |!_        |r)t	          d]t          |!j                  | j                    ||!           nE|d3k    rt          ||
dz   ||          }!|rt	          d^|!| j                   |!\  }=}>}?}@dx}A}Bd}|A|Bdz   |=|=dz   |>|>dz   f}"|rt	          d_|"| j                   t          t          d           }!|dk    r.dd|?|?|@|@f}Ct          t:          t9          |"|Cz             g          }! ||!           n|dk    rt          ||
dz   ||          \  }D}E|rt	          d^|D|E| j                   |D\  }F}G}H}I|E\  }J}K}L}Mdx}A}Bd}|A|Bdz   |F|Jdz   |G|Kdz   f}"|rt	          d_|"| j                   t          t          d           }!|dk    r.dd|H|L|I|Mf}Ct          t:          t9          |"|Cz             g          }! ||!           n|d5k    r |||           n|d`k    rAtQ          dW||
dz   |
dz                      d         },|rt	          da|,z  | j                   n]|dbk    r |||           nI|dck    r |||           n5|d:k    r|dk    rNt          ||
dz   ||          }!tQ          dW||
dz   |
dz                      d         }Nt          | |N|          \  }A}Bnht          ||
dz   ||          }!tQ          dd||
dz   |
dz                      \  }O}P}Q|rt	          de|O|P|Q| j                   t          | |O|P|Q|          \  }A}B|!\  }=}>}?}@|?p|@}R|p|R}|A|Bdz   |=|=dz   |>|>dz   f}"||Ad7k     z  }|rt	          d_|"| j                   t          t          d           }!|Rr>dd|?|?|@|@f}Ct9          |"|Cz             }St:          |!_        t          | |Sdf          |!_        n0t9          |"          }St.          |!_        t          | |S          |!_        tD          |!_        |dk    r|Sg|!_         ||!           n|d;k    r|dk    rQt          ||
dz   ||          \  }D}EtQ          dW||
dz   |
dz                      d         }Nt          | |N|          \  }A}Bnkt          ||
dz   ||          \  }D}EtQ          dd||
dz   |
dz                      \  }O}P}Q|rt	          dg|O|P|Q| j                   t          | |O|P|Q|          \  }A}B||Ad7k     z  }|D\  }F}G}H}I|E\  }J}K}L}M|Hp|Ip|Lp|M}R|p|R}|A|Bdz   |F|Jdz   |G|Kdz   f}"|rt	          d_|"| j                   t          t          d           }!|Rr>dd|H|L|I|Mf}Ct9          |"|Cz             }St:          |!_        t          | |Sdf          |!_        n0t9          |"          }St.          |!_        t          | |S          |!_        tD          |!_        |dk    r|Sg|!_         ||!           n|d1k    rd}Tt          t          d           }!|dk    r)tQ          dh||
dz   |
dz                      \  }N};|;dz  };|N}UnCtQ          di||
dz   |
dcz                      \  }N};|;dz  };|N}U|Ndk    r|Ndz  }Nn|Ndk     r|N dz
  }Nnd}T|rt	          dj|U|N|;|Tfz  | j                   |;|k    r|rt	          dk| j                   dx}T}|TsE|dk    rt          | |N|          \  }A}Bn*|Udk    rdl\  }A}Bn| jH        |N         }V|Vd3k    rdm\  }A}Bndn\  }A}B|Ts|Ad7k     r%do|;|Ufz  } t          t          d tD          |           }!n=| j4        |;         }<|<j5        stm          | |<|;||dz              |<j7        s|<j8        s|<j9        rU|r|<:                    | j        dpdq[           t          t          d           }!|p|<j7        p|<j8        p|<j9        }|p|<j;        }n9t%          |<j<                  dk    sJ t{          j>        |<j<        d                   }!tD          |!_        |<j?        d7k    r|<j        |!_        n!| j@        |<j?                 d\|<j        |!_        |r)t	          drt          |!j                  | j                    ||!           n4|t          v rd} ||           n|rt	          ds|z   | j                   d}|dk    rt#          dt          |
|z  }
d|
cxk    r|k     "n |  }|rYt          | j        du||  ||           t%          |          dk    rt	          dv| j                   t	          | j                   ||_<        t%          |          dk    rd |_K        n|d         |_K        ||_;        ||_9        ||_L        d|_5        d S )wNr   z1::: evaluate_name_formula %r %r %d %d %r level=%dr\  r   foutz-Excessive indirect references in NAME formulac                    t          |          dk    sJ |                                }|                                }t          |          \  }}}}}d                    dd |j        |k              |j        dd |j        |k              |dd |j        |k              |j        dd |j        |k              g          }	t          |d ||	          }
	 ||j                 }||j                 }n&# t          $ r |	                    |
           Y d S w xY w|j
        |j
        |	                    |
           d S  ||j
                  } ||j
                  } |||          }|t          k    r|rdnd}||
_
        |	                    |
           d S )Nr%   ry   (r  r   r   )rk  popbinop_rulesjoinr  r  r#   r  KeyErrorappendr  r   )opcdstkbopaopargdictresult_kindr-  r  symotextresopbconvaconvbvalavalresults                   r0  do_binopz'evaluate_name_formula.<locals>.do_binop  s   3xx1}}}}ggiiggii0;D0A-dD# D !H D ! D !H D !
   T477	CH%ECH%EE 	 	 	JJuFF	 9	 1JJuFuSYuSYdD!!% 'QQaF

5s   C) )DDc           	      p   t          |          dk    sJ |                                }|j        }t          |          \  }}}}d                    |dd |j        |k              |j        dd |j        |k              |g          }	| ||          }|                    t          ||||	                     d S Nr   ry   r  r  )	rk  r  r  
unop_rulesr  r  r  r  r#   )
opcoder  r  r  valr-  r  sym1sym2r  s
             r0  
do_unaryopz)evaluate_name_formula.<locals>.do_unaryop'  s    3xx1}}}}ggiii!+F!3dD$ D !H D !
   ?$s))C

7;T599:::::r2  c                 .    d| |fz  }t          |          )Nz1ERROR *** Token 0x%02x (%s) found in NAME formula)r  )op_arg	oname_argmsgs      r0  not_in_name_formulaz2evaluate_name_formula.<locals>.not_in_name_formula7  s"    A#$3r2  r   `   r8   r)   9Pos:%d Op:0x%02x Name:t%s Sz:%d opcode:%02xh optype:%02xhStack =r:   9ERROR *** Unexpected token 0x%02x ("%s"); biff_version=%dr%   r7   r   r/   
tIsect pre rH   ry   r  r  tIsect postr(   	tList prer<   
tList postr0   
tRange pre:tRange postrA   rC   rB   r   r   rG   lenlen   sz=%d strg=%r"""r   tExtended token not implementedr@   <BHr&   ??Unknown??r   tAttrSumr9   SUM(%s))   subop=%02xh subname=t%s sz=%d nc=%02xhr   r   rF   )tSheet & tEndsheet tokens not implementedr   r   r   r%   r'   r  BBHdr   r   Unhandled opcode: 0x%02xSize not set for opcode 0x%02xrE    BH#*** formula/tFunc unknown FuncID:%d    FuncID=%d name=%s nargs=%dc              3   $   K   | ]}|j         V  d S r*  r  r,  args     r0  r1  z(evaluate_name_formula.<locals>.<genexpr>$  $      *N*N38*N*N*N*N*N*Nr2  ()<BrC  r<  (   FuncID=%d nargs=%d macro=%d prompt=%d&*** formula/tFuncVar unknown FuncID:%d!    name: %r, min~max args: %d~%dc              3   $   K   | ]}|j         V  d S r*  r  r  s     r0  r1  z(evaluate_name_formula.<locals>.<genexpr>@  $      &J&JCsx&J&J&J&J&J&Jr2  zIF testarg kind?)r   r   zIF testarg value?z$$$$$$ IF => constantr  <H   tgtnamex=%dz!!! tgtobj has problems!!!z-----------       --------)headerfooter!    tName: setting text to     r=     %d bytes of cell ref formular   r   <hxxxxxxxxhhtRef3d)r1c1tArea3drM  <hxxxxxxxxH+   origrefx=%d refx=%d tgtnamex=%d dodgy=%dz!!!! Self-referential !!!!r`  rb  fr.  $<<Name #%d in external(?) file #%d>>z!!! bad tgtobj !!!z------------------    tNameX: setting text toFORMULA: /// Not handled yet: t!Fatal: token size is not positivez8End of formula. level=%d any_rel=%d any_err=%d stack=%r
*** Stack has unprocessed args)MSTACK_ALARM_LEVELraw_formulabasic_formula_lenbiff_versionrj  namerl  r	   STACK_PANIC_LEVELr   szdictr#   r   r   r  	BYTES_ORDonamesr  rk  r  r  r  r  r   r  r  r9  tIsectFuncsr$   r   r  tRangeFuncsr   r;   	LEAF_RANKr
   encodingr   replacer   r   
tAttrNamesr  	FUNC_RANKr   floatr  r   int	func_defslistsepdivmodname_obj_list	evaluatedr   macrobinaryany_errdumpany_relstackcopydeepcopyscope_sheet_namesreprrR  rZ  rz  r~  r   r   _externsheet_type_b57error_opcodesfprintfr  any_external)Wrp  nobjnamexrr  levelrO  fmlalenrQ  rB  sztabrP  rP  rO  rM  rY  unk_opnd
error_opndspushr  r  r  opr  optypeopxonameszr  r  r  r  r  r  resr5  relfarelfbstrgnewposr  subopncsubnameinxnbr  r  funcx
func_attrs	func_namenargsargtextpromptrK  minargsmaxargstestargresposchosentgtnamextgtobjrG  rH  rE  rF  shx1shx2r  rX  rY  rowx1colx1row_rel1col_rel1rowx2colx2row_rel2col_rel2rq  r}  raw_shx1raw_shx2is_relref3ddodgyorigrefxextysW                                                                                          r0  r   r     s      D$G	BH 9Adi"dE:;AC	M 	M 	M 	MdAwRZ8888   GHHH2JE
CEGGLtT""Ht$$JLE  @; ; ;      
 !||

s



W




tCy!!dt)! 	2+CCCs3Z 	5ME2vv67=?ZI I I I)U444488Mub/"Cs### A	v%%%%%%%%%##B....''''4''''' ''''4D|UDDDD5zzQiikkiikk(D()H(D()(D()H(D()!   dmm 8t##sx4'7'7#CHHX%%T)9)9 X111111111y,1F"39~~2222"39~~2222!-'1sy|"E "E%*6]]O	X111111111#CHy,1F"39~~2222"39~~2222!-'1sy|"E "E #	! 5 #	! 5 E>>).v~)>)>(?CIc


E}e"*EEEE4C{E
CCCC5zzQiikkiikk(D()H(D()(D()H(D()!   dD$668t##sx4'7'7#CHHX$--#(tTl2J2J#CHx4''38t+;+;#'y,1F"39~~2222"39~~2222$'I	$9	c


D|UDDDD4D|UDDDD5zzQiikkiikk(D()H(D()(D()H(D()!   dD$668t##sx4'7'7#CHHX111111111y,1F"39~~2222"39~~2222!-'1sy|"E "E%*6]]O	X111111111#CHy,1F"39~~2222"39~~2222!-'1sy|"E "E #	! 5 #	! 5 E>>).v~)>)>(?CIc


E}e"*EEEE''''4'''''
64////44geT9b99::::488#;(,c!eR[$L $L $LLD&& $=(,c!eA$? $? $?LD&c\P1RJ>RZPPPPT\\#t444s:geT9d;;<<<<4Rxxxx"#DEEE4"5$s1uSU{*;<<	r$..>>D==a!BBd]]BFU:u2:FFFFu::????)C%0E 'dIu E EE"IIB EE '2r239;E E E E''''4'''''Bwwww"#NOOO''''4'''''tm!\\#&eT405fSk 14Ac!eBh3GHH!88!%LLEu::DDAXXu::DDAXX,U3DD 4U ;;cADgdE9d;;<<<<"#=#FGGGQww"#Cf#LMMM2ICT>>E(OOOOt^^Sr]]"B3r?DQs1uRx,@AA!DE"ud33J ;$&J0 0 0 0h#-bqb> 	5 H:"Iu56<>JH H H H5zzU**** -%ll*N*NueVWW~*N*N*NNNG(1		777;Eufgg%,EdD)U;;c



t^^Sr]]"B!$r"2DQs1uRx4HIILE5"5#..MFE!%//LE5 H@uf56<>JH H H H"ud33J .>$&J0 0 0 0h.8!n+	7G J=$gw78>@jJ J J J%222272222225zzU****5zzU****!,,&J&J5%>&J&J&JJJ$-IIwww7dD)U;;A::#UFmG|D%=88 GGLD$8$8!"42:FFFF f44 HGM$=!"5BJGGGG A::gm:27/CHcii&+VaZ#gm2D2D%DF%*6]F%{e336:A 3#))6<k6< 3#) L!"9
KKKKc\\#UFmG|t++555555555%*E6C4F4F+F%GF%{e336:A 3#))6<k6< 3#)5&''Nc



t^^dDQs1u$566q9A=HHU+h6RZHHHH%h/F# K%b&(D%'JJJ| 5v} 5 5 KK
;;     
 dD))!TV\TV]Tfn!3V^6<((A----mFLO44 CH|r!!!; !ofl;;;V[[J U2DNNTTTTE#JJJJt^^c!eR::C6U42:6666+.(D$OD4GDFD$q&$Q?F:U5&rz::::$%%C{{q'7GWEdU6H+<%=%=$>??E#JJJJt^^,T3q5"hGGJD$=U4t"*====/3,E5(H/3,E5(HOD4GDFE57E57CF:U5&rz::::$%%C{{q(HhIdU6H+<%=%=$>??E#JJJJt^^E****t^^d3q5Q;/003BRU;b@rzRRRRt^^E**** t^^E****
 t^^Rxx#D#a%X>>dDQs1u$566q98T4HH
dd#D#b&"h??28cRSeTWXZTZlI[2\2\/Xx V(K8"*UUUU< "K8TK K
d+.(D$'F'GDFD$q&$Q?Ftby G:U5&rz::::$%%C 2q'7GWEfx/00)"e!<<<f&r511 CH{{"G	E#JJJJt^^Rxx0s1ub(KK
ddDQs1u$566q98T4HH
dd0s2vr8LL
d28cRSeTWXZTZlI[2\2\/Xx W)[(H2:VVVV< "K8TK K
dtby G/3,E5(H/3,E5(HAAXAF'GDFE57E57CF:U5&rz::::$%%C 2q(HhIfx/00)"e!<<<f&r511 CH{{"G	E#JJJJt^^E$%%CRxx!'tCE#a%K/@!A!AhA!'tCE#b&L7I!J!JhA!88AIDDAXX 519DDE JCx78>@jJ J J J5  M;"*MMMM"## 
288!<Rt!L!LJD$$\\!)JD$$3D9Dqyy%-
dd%1
d Zr		>#X./dD)U;;)(3' O)"fheAgNNN< 96= 9FN 9 J#7#7 $   
 "$--C%XXX&.G%7GGv|,,1111-Q88C$<2%%%{CHH #%/&,"?"?"? NCH Z7chbjYYYYE#JJJJ}$$GE* R7%?bjQQQQG77BCCCr	} s



W



~ +oG 
W7{?GU	4 	4 	4u::??2DDDD2:DJ
5zzQAhDLDL$DDNNNr2  c	                 .    |t           k    rd}t          t          t          t          fv }	|}
 j        }|r8t          d||||	|
|fz   j                   t          |
d| j                   |t          k    rt          d          t          |         }d}g }d}d}t          t          d           }t          t          d           }|j        }d }d } fd	}|dk    r|g}d|cxk    r|k     rn nt!          |
|                   }|d
z  }|dz  dz	  }|r|dz   }n|}t"          |         }||         }|r6t          d||||||fz   j                   t          d| j                   |dk    rd|||fz  }t%          |          t'          |d          z  r |||           |sj|dk    rz|dk    rd}nd}|dk    r||k    r|rJ t)          ||
          \  }} d|| fz  }! |t          t          d t*          |!                     t,          t.          z  z  s |||           nd|cxk    rdk    rn n |||           n|dk    r|rt          d| j                   t1          |          dk    sJ |                                }"|                                }#d}$d}%d                    dd |#j        |%k              |#j        dd |#j        |%k              |$dd |"j        |%k              |"j        dd |"j        |%k              g          }&t          t:                    }'|&|'_        |"j        t          k    s|#j        t          k    rt          |'_        nn|"j        t          k    s|#j        t          k    rnM|"j        t:          cxk    r|#j        k    rn nn-|"j        t>          cxk    r|#j        k    rn nt>          |'_        n	  ||'           |rt          d | j                   n|d!k    r|rt          d"| j                   t1          |          dk    sJ |                                }"|                                }#d#}$d}%d                    dd |#j        |%k              |#j        dd |#j        |%k              |$dd |"j        |%k              |"j        dd |"j        |%k              g          }&t          t:          d |%|&          }'|"j        t          k    s|#j        t          k    rt          |'_        nd|"j        t:          t>          fv rN|#j        t:          t>          fv r9t:          |'_        |#j        t>          k    s|"j        t>          k    rt>          |'_        n	  ||'           |rt          d$| j                   nm|d%k    rJ|rt          d&| j                   t1          |          dk    sJ |                                }"|                                }#d'}$d}%d                    dd |#j        |%k              |#j        dd |#j        |%k              |$dd |"j        |%k              |"j        dd |"j        |%k              g          }&t          t:          d |%|&          }'|"j        t          k    s|#j        t          k    rt          }'n!|"j        t:          cxk    r|#j        k    rn nn	  ||'           |rt          d(| j                   nd)|cxk    rd*k    rn n ||t@          |           n|d+k    rn|d,k    r' |t          tB          d t*          d                     n|d-k    r|d.k    rtE          |
|dz    j#        d/          \  }(})ntI          |
|dz   d/          \  }(})|)|z
  }|rt          d0||(fz   j                   d1|(%                    d1d2          z   d1z   }! |t          tL          d t*          |!                     n|d3k    r|dk    sJ t%          d4          |d5k    rt)          d6|
|dz   |d7z                      \  }*}+tN          (                    |*d8          },|*d7k    r	|+dz  d9z   }nj|*d!k    rbd7}|rt          d:| j                   t1          |          dk    sJ |d;         }#d<|#j        z  }&t          t@          d tR          |&          |d;<   nd7}|rt          d=|*|,||+fz   j                   n"d>|cxk    rd?k    rn n|d@k     sJ t%          dA          dB|cxk    rd
k    rn n|dBz
  }-g dC|-         }.t          tT          t@          t@          g|-         }/t)          dDdE|-         z   |
|dz   |dz   |.z                      \  }0|-dk    rtW          |0          }0tY          |0          }!n8|-dk    rtY          |0          }!n"|-dk    r	dF|0         }!nd1tZ          |0         z   d1z   }! |t          |/d t*          |!                     nt%          dG|z            |dk    rt%          dH|z            ||z  }	4|dk    r ||           n&|dk    r5dt]          |dIk              z   }.t)          dDdJ|.         z   |
|dz   |dz   |.z                      d         }1t^          (                    |1d           }2|2s&t          dK|1z   j                    ||           n|2d d         \  }3}4|rt          dL|1|3|4fz   j                   t1          |          |4k    sJ |4r<t`                              dM ||4 d          D                       }5|3d|5d}&||4 d = n|3dNz   }&t          t          d tR          |&          }' ||'           
n|dk    rdt]          |dIk              z   }.t)          dOdJ|.         z   |
|dz   |dz   |.z                      \  }4}1tc          |4dP          \  }6}4tc          |1dQ          \  }7}1|rt          dR|1|4|7|6fz   j                   |1dSk    rdT}2nt^          (                    |1d           }2|2s&t          dU|1z   j                    ||           
n|2d d         \  }3}8}9|rt          dV|3|8|9fz   j                   |8|4cxk    r|9k    sn J t1          |          |4k    sJ t1          |          |4k    sJ t`                              dW ||4 d          D                       }5|3d|5d}&t          t          d tR          |&          }'||4 d =  ||'           	nD|dk    rt)          dX|
|dz   |dz                      d         dz
  }:|rt          dY|:z   j                    j2        |:         };|;j3        d;k    r|;j4        }&n j5        |;j3                 dZ|;j4        }&|r$t          d[tm          |&           j                   t          t          d t*          |&          }' ||'           nq|d7k    rto          |
|dz   ||	||          }'|rt          d\|' j                   |'\  }} }<}=|<p|=}>|>rt>          }?nt:          }?tq          || |<|=|||          }&t          |?d t*          |&          }' ||'           n|dk    rts          |
|dz   ||	||          \  }@}A|rt          d\|@|A j                   |@\  }B}C}D}E|A\  }F}G}H}I|B|Fdz   |C|Gdz   f}J|D|H|E|If}Ktu          |K          rt>          }?nt:          }?|rt          d]|J|K j                   tw          |J|K|||          }&t          |?d t*          |&          }' ||'           n|d9k    rty          ||           n|d^k    rAt)          dX|
|dz   |dz                      d         }.|rt          d_|.z   j                   n|d`k    rto          |
|dz   ||	||          }'d}|rt          d]|' j                   |'\  }} }<}=|<p|=}>|>rt>          }?nt:          }?tq          || |<|=|||          }&t          |?d t*          |&          }' ||'           n1|dak    rts          |
|dz   ||	||          \  }@}A|rt          d\|@|A j                   |@\  }B}C}D}E|A\  }F}G}H}I|B|Fdz   |C|Gdz   f}J|D|H|E|If}Ktu          |K          rt>          }?nt:          }?|rt          d]|J|K j                   tw          |J|K|||          }&t          |?d t*          |&          }' ||'           nh|d>k    r|dk    rPto          |
|dz   ||	||          }'t)          dX|
|dz   |dz                      d         }Lt{           |L|          \  }M}Nnjto          |
|dz   ||	||          }'t)          db|
|dz   |dz                      \  }O}P}Q|rt          dc|O|P|Q j                   t}           |O|P|Q|          \  }M}N|'\  }} }<}=|<p|=}>|p|>}|M|Ndz   ||dz   | | dz   f}J||Md;k     z  }|rt          d]|J j                   t          t          d           }'|>r?dd|<|<|=|=f}Kt          |J|Kz             }Rt>          |'_        t           |R|||          |'_        n0t          |J          }Rt:          |'_        t           |R          |'_        t*          |'_        d |'_B         ||'           n|d?k    r|dk    rQts          |
|dz   ||	          \  }@}At)          dX|
|dz   |dz                      d         }Lt{           |L|          \  }M}Nnkts          |
|dz   ||	          \  }@}At)          db|
|dz   |dz                      \  }O}P}Q|rt          dd|O|P|Q j                   t}           |O|P|Q|          \  }M}N||Md;k     z  }|@\  }B}C}D}E|A\  }F}G}H}I|Dp|Ep|Hp|I}>|p|>}|M|Ndz   |B|Fdz   |C|Gdz   f}J|rt          d]|J j                   t          t          d           }'|>r?dd|D|H|E|If}Kt          |J|Kz             }Rt>          |'_        t           |R|||          |'_        n0t          |J          }Rt:          |'_        t           |R          |'_        t*          |'_         ||'           n|d5k    rd}St          t          d           }'|dk    r)t)          de|
|dz   |dz                      \  }L}:|:dz  }:|L}TnCt)          df|
|dz   |daz                      \  }L}:|:dz  }:|L}T|Ldk    r|Ldz  }Ln|Ldk     r|L dz
  }Lnd}S|rt          dg|T|L|:|Sfz   j                   |SsE|dk    rt{           |L|          \  }M}Nn*|Tdk    rdh\  }M}Nn jC        |L         }U|Ud7k    rdi\  }M}Nndj\  }M}Nt          }?d }V|Mdkk    r1tL          }? jD        |:         }Vd1|V%                    d1d2          z   d1z   }&nw|Ss|Md;k     rdl|:|Tfz  }&ng j2        |:         };|;j3        d;k    r|;j4        }&n j5        |;j3                 dZ|;j4        }&|r)t          dmtm          |'j                   j                   t          |?|Vt*          |&          }' ||'           n4|t          v rd} ||           n|rt          dn|z    j                   d}|dk    rt%          do          ||z  }d|cxk    r|k     n |  }|r]t          dp||  ||fz   j                   t1          |          dk    rt          dq j                   t           j                   t1          |          dk    rd }Wn|d         j        }W|WS )rNr   zR::: decompile_formula len=%d fmlatype=%r browx=%r bcolx=%r reldelta=%d %r level=%dr\  r   r  z(Excessive indirect references in formulac                    t          |          dk    sJ |                                }|                                }t          |          \  }}}}}d                    dd |j        |k              |j        dd |j        |k              |dd |j        |k              |j        dd |j        |k              g          }	t          |d ||	          }
|                    |
           d S )Nr%   ry   r  r  )rk  r  r  r  r  r  r#   r  )r  r  r  r  r  r  r-  r  r  r  r  s              r0  r  z#decompile_formula.<locals>.do_binopg  s    3xx1}}}}ggiiggii0;D0A-dD# D !H D ! D !H D !
   T477

5r2  c           	      H   t          |          dk    sJ |                                }t          |          \  }}}}d                    |dd |j        |k              |j        dd |j        |k              |g          }|                    t          |d ||                     d S r  )rk  r  r  r  r  r  r  r#   )	r  r  r  r  r-  r  r  r  r  s	            r0  r  z%decompile_formula.<locals>.do_unaryopx  s    3xx1}}}}ggii!+F!3dD$ D !H D !
   	

7;dE::;;;;;r2  c                 Z    d| |t                    fz  }t          |j                   d S )Nz?ERROR *** Unexpected token 0x%02x (%s) found in formula type %sr\  )FMLA_TYPEDESCR_MAPrj  rl  )r  r  r  rp  fmlatypes      r0  unexpected_opcodez,decompile_formula.<locals>.unexpected_opcode  s9    O$6x$@ABc
######r2  r   r  r8   r)   z;Pos:%d Op:0x%02x opname:t%s Sz:%d opcode:%02xh optype:%02xhr  r:   r  rD   z<x2Hz<xHBzSHARED FMLA at rowx=%d colx=%dr7   r   r/   r  r%   r  rH   ry   r  r  r  r(   r  r<   r  r0   r  r  r  rA   rC   rB   r   r   rG   r  r   r  r  r   r  r@   r  r&   r  r   r  r9   r  r  r   r   rF   r	  r   r
  r  r  r  r  r  rE   r  r  r  c              3   $   K   | ]}|j         V  d S r*  r  r  s     r0  r1  z$decompile_formula.<locals>.<genexpr>[  r  r2  r  r  rC  r<  r  r;  )
CALL_ADDINr   rD   r  r  c              3   $   K   | ]}|j         V  d S r*  r  r  s     r0  r1  z$decompile_formula.<locals>.<genexpr>{  r  r2  r  r  r"  r#  r$  r%  r=   r&  r   r   r'  r(  r*  rM  r+  r,  r`  rb  r-  r_  r/  r0  r1  r2  z7End of formula. level=%d any_rel=%d any_err=%d stack=%rr3  )Fr4  r   r"   r    r!   r7  rj  rl  r	   r9  r   r:  r#   r   r   r  r;  r<  r  _TOKEN_NOT_ALLOWEDr   r?  r   r   rk  r  r  r  r  r   r  r   r   r;   r
   r@  r   rA  r   rB  r  rC  r   rD  r  r   rE  rF  rG  rH  rI  rS  r8  rT  rU  rR  cellnamerelrZ  sumrangename2drelr  rz  r~  r$   r   r   r  rV  addin_func_namesrW  )Xrp  fmlar]  r  rC  rD  rr  r\  r)  rB  rO  rQ  r^  rP  rP  rO  rM  r_  r`  ra  r  r  r  rb  r  rc  rd  re  rf  r  fmtrG  rH  r  r  r  r  r  r  rg  rj  rk  rl  rm  rn  ro  rp  r  r  rq  rr  rs  rt  ru  rv  rK  rw  rx  r|  r}  rE  rF  r  okindrX  rY  r  r  r  r  r  r  r  r  r5  r  rq  r~  r  r}  r  r  r  r  r  r  ovaluer  sX   `  `                                                                                    r0  r   r   P  sy       ,n>PRdeeHD	B 9b%$FGMOZ	Y 	Y 	Y 	YdAwRZ8888   BCCC2JE
CEGGtT""Ht$$JLE  "< < <$ $ $ $ $ $ !||

s



W




tCy!!dt)! 	2+CCCs3Z 	5OE2vv67=?ZI I I I)U444488Mub/"Cs###c1%%0 	)b%((( h	~~88 CC CaxxGrMM%MMM#C..
d74,FgdD)T::;;;>O#CD 1%%b%000''''4''''' ''''4D|UDDDD5zzQiikkiikk(D()H(D()(D()H(D()!   dmm 8t##sx4'7'7#CHHX%%T)9)9 X111111111X111111111#CHHc


E}e"*EEEE4C{E
CCCC5zzQiikkiikk(D()H(D()(D()H(D()!   dD$668t##sx4'7'7#CHHX$--#(tTl2J2J#CHx4''38t+;+;#'c


D|UDDDD4D|UDDDD5zzQiikkiikk(D()H(D()(D()H(D()!   dD$668t##sx4'7'7CCX111111111c


E}e"*EEEE''''4'''''
64////44geT9b99::::488#;(,c!eR[$L $L $LLD&& $=(,c!eA$? $? $?LD&c\P1RJ>RZPPPPT\\#t444s:geT9d;;<<<<4Rxxxx"#DEEE4"5$s1uSU{*;<<	r$..>>D==a!BBd]]BFU:u2:FFFFu::????)C%0E 'dIu E EE"IIB EE '2r239;E E E E''''4'''''Bwwww"#NOOO''''4'''''tm!\\#&eT405fSk 14Ac!eBh3GHH!88!%LLEu::DDAXXu::DDAXX,U3DD 4U ;;cADgdD)T::;;;;"#=#FGGGQww"#Cf#LMMM2ICT>>E(OOOOt^^Sr]]"B3r?DQs1uRx,@AA!DE"ud33J ;eC"*UUUUh#-bqb> 	5 H:"Iu56<>JH H H H5zzU**** -%ll*N*NueVWW~*N*N*NNNG(1		777;Eufgg%,EdD)U;;c



t^^Sr]]"B!$r"2DQs1uRx4HIILE5"5#..MFE!%//LE5 H@uf56<>JH H H H ||2

&]]5$77
 >$&J0 0 0 0h.8!n+	7G J=$gw78>@jJ J J J%222272222225zzU****5zzU****!,,&J&J5%>&J&J&JJJ$-IIwww7dD)U;;5&''Nc



t^^dDQs1u$566q9A=HHU+h6RZHHHH%h/F|r!!#%?6<#@#@#@&++N R2DKKbjQQQQ$i77CE#JJJJt^^c!eR5%HHC6U42:6666+.(D$'F dGWeUDQQE%y%88CE#JJJJt^^, #a%XueE EJD$=U4t"*====/3,E5(H/3,E5(HU1WeU1W5F (Hh?H8}} DU5&(DDDD"68UE4HHE%y%88CE#JJJJt^^E****t^^d3q5Q;/003BRU;b@rzRRRRt^^c!eR5%HHCG7U5#BJ7777+.(D$'F dGWeUDQQE%y%88CE#JJJJt^^
 - #a%XueE EJD$=U4t"*====/3,E5(H/3,E5(HU1WeU1W5F (Hh?H8}} DU5&(DDDD"68UE4HHE%y%88CE#JJJJt^^Rxx#D#a%XueLLdDQs1u$566q98T4HH
dd#D#b&"huMM28cRSeTWXZTZlI[2\2\/Xx V(K8"*UUUU< "K8TK K
d+.(D$'F'GDFD$q&$Q?Ftby G:U5&rz::::$%%C 2q'7GWEfx/00)"eUE4HHf&r511 CHCIE#JJJJt^^Rxx0s1ub(KK
ddDQs1u$566q98T4HH
dd0s2vr8LL
d28cRSeTWXZTZlI[2\2\/Xx W)[(H2:VVVV< "K8TK K
dtby G/3,E5(H/3,E5(HAAXAF'GDFE57E57CF:U5&rz::::$%%C 2q(HhIfx/00)"eUE4HHf&r511 CHE#JJJJt^^E$%%CRxx!'tCE#a%K/@!A!AhA!'tCE#b&L7I!J!JhA!88AIDDAXX 519DDE JCx78>@jJ J J J
  
288!<Rt!L!LJD$$\\!)JD$$3D9Dqyy%-
dd%1
dEFrzz,X6fnnS$777#= Z$))>#X./ )(3<2%%"KEE  "v|<<<fkkKE Z7chbjYYYY%E::CE#JJJJ}$$GE* R7%?bjQQQQG77BCCCr	A s



W



B +oG GGOWe45;=:	G 	G 	G 	Gu::??2DDDD2:
5zzQqMr2  c           	      x   |r>t          d||t          |          | j                   t          |d|| j                   |dk    sJ t          |         }d}g }	d}
d}|	j        }d|cxk    r|k     rzn nvt          ||                   }|dz  }|dz  dz	  }|r|d	z   }n|}t          |         }||         }|rt          d
||||||fz  | j                   |sd|cxk    rdk    rAn n>t          d||dz   |dz                      \  }}|rt          d||f| j                   n*|dk    r|rt          d|	| j                   t          |	          dk    sJ |		                                }|		                                } |||z              |rt          d|	| j                   n|dk    r|rt          d|	| j                   t          |	          dk    sJ |		                                }|		                                }t          |          dk    sJ t          |          dk    sJ t          t          |d         |d                   } ||           |rt          d|	| j                   n|dk    r|rt          d|	| j                   t          |	          dk    sJ |		                                }|		                                }t          |          dk    sJ t          |          dk    sJ t          t          |d         |d                   } ||           |rt          d|	| j                   n	|dk    rmt          d||dz   |dz                      \  }}t                              |d          }|dk    r	|dz  dz   }nd}|rt          d||||fz  | j                   n|dk    rr|dk    r1t          ||dz                      }||dz   |dz   |z            }|dz   }nt          ||dz   d           \  }}||z
  }|rt          d!||fz  | j                   n|dk    rt          d"| j                   d S ||z  }|dk    rnW|dk    r]dt!          |d#k              z   }t          d$d%|         z   ||dz   |dz   |z                      }|rt          d&|z  | j                   n|dk    rdt!          |d#k              z   }t          d'd%|         z   ||dz   |dz   |z                      \  }}t#          |d(          \  } }t#          |d)          \  }!}|rt          d*|||!| fz  | j                   nd|d+k    r;t          d,||dz   |d+z                      }"|rt          d-|"z  | j                   n#|dk    r0t%          ||dz   ||          }#|rt          d|#| j                   n|dk    r0t'          ||dz   ||          }#|rt          d|#| j                   n|d.k    rAt          d,||dz   |d+z                      d         }|rt          d/|z  | j                   np|d0k    r3t%          ||dz   |d1          }#d}
|rt          d2|#| j                   n7|d3k    r3t'          ||dz   |d1          }#d}
|rt          d2|#| j                   n|d4k    rt          d,||dz   |d+z                      d         }$t%          ||d+z   ||          }#|rt          d|$|#| j                   |#\  }}}%}&|
p|%p|&}
t)          | |$|          \  }'}(||'d5k     z  }|'|(dz   ||dz   ||dz   f})|rt          d2|)| j                   |dk    r ||)g           n=|d6k    rt          d,||dz   |d+z                      d         }$t'          ||d+z   ||          \  }*}+|rt          d|$|*|+| j                   |*\  },}-}.}/|+\  }0}1}2}3|
p|.p|/p|2p|3}
t)          | |$|          \  }'}(||'d5k     z  }|'|(dz   |,|0dz   |-|1dz   f})|rt          d2|)| j                   |dk    r ||)g           nn|dk    r?t          d||dz   |dz                      \  }$}"|rt          d7|$|"fz  | j                   n)|t*          v rd}n|rt          d8|z   | j                   d}|dk    rt          d"| j                   d S ||z  }d|cxk    r|k     tn |rIt          d9|
  ||	fz  | j                   t          |	          dk    rt          d:| j                   d S d S d S );Nr   r\  r   r  rH   r   r  r8   r)   r  r   r%   rM  r$  r(   r  z
tlist postr0   r  r  r/   r  r  r@   r  r&   r  r   r  r   rG   r  r   z**** Dud size; exiting ****rE   r  r  z   FuncID=%dr  rC  r<  r  r7   r  z   namex=%dr=   r&  r   )rB  r%  r   r   r9   r   z   refx=%d namex=%dr1  z.End of formula. any_rel=%d any_err=%d stack=%rr3  )rj  rk  rl  r	   r:  r  r;  r<  r   r  r9  r>  r=  rB  r  r   rE  rH  rR  rZ  rz  rW  )4rp  rO  r]  rQ  rB  rr  isnamer^  rP  rP  rO  rM  ra  rb  r  rc  rd  re  rf  rG  rH  r  r  r  rl  rm  rn  rj  rk  rp  rq  rt  rv  rK  r[  rg  rq  rE  rF  r~  r  r5  rX  rY  r  r  r  r  r  r  r  r  s4                                                       r0  r   r   ^  s
    9ngr3t992:FFFFdAwRZ888888882JE
CEGGLE
s



W




tCy!!dt)! 	2+CCCs3Z 	IME2vv67=?ZI I I I 6	v%%%%%%%%%#E4Ac!e+<==
dCtdD\
CCCC4C{E
CCCC5zzQiikkiikkcCi   D|UDDDD4D|UDDDD5zzQiikkiikk3xx1}}}}3xx1}}}}%k3q63q6BBfE}e"*EEEE4D|UDDDD5zzQiikkiikk3xx1}}}}3xx1}}}}%k3q63q6BBfE}e"*EEEE4"5$s1uSU{*;<<	r$..>>D==a!BBBwJeU\^`bdMeelnlvwwww488"4A;//BAc!eBh/DaBB#<T3q5QR#S#S#SLD&#BP1RJ>RZPPPP777bjIIIIF2ICT>>t^^Sr]]"B3r?DQs1uRx,@AAECU>E1
CCCCt^^Sr]]"B!$r"2DQs1uRx4HIILE5"5#..MFE!%//LE5wUEPUW\^dHeelnlvwwwwt^^4c!eCEk!233EBU=50rzBBBBt^^c!eR::C6U42:6666t^^%dCE2x@@C6U42:6666t^^d3q5Q;/003BRU;b@rzRRRRt^^c!eR!<<<CG7U5#BJ7777t^^%dCE2BBBCG7U5#BJ7777t^^$SU3q5[ 12215Dc!eR::C<U4s<<<<+.(D$33GG4RtDDJD$tby GDFD$q&$Q?F:U5&rz::::{{EE6(OOOt^^$SU3q5[ 12215D,T3q5"hGGJD$CU4tT
CCCC/3,E5(H/3,E5(HMMXMMXG4RtDDJD$tby GDFE57E57CF:U5&rz::::{{EE6(OOOt^^ SU3q5[(9::KD%RU0D%=@rzRRRR}$$GGVU<uD2:VVVVG77/bjAAAAFr	U s



W



V  E>_gu-.46J	@ 	@ 	@ 	@u::??2DDDDDD	E E ?r2  c                 d    |d}|s|rd| dz   z  S d| dz   z  S |r	| rd| z  S dS d|| z   dz  dz   z  S )	NTzR%dr   z$%dzR[%d]r   z%dr=  r+  )rG  rowxrelrC  r)  s       r0  
rownamerelr    sr    }   	$DF##Q  	"T>!sEDLE)A-..r2  c                     |d}|s|rd| dz   z  S dt          |           z   S |r	| rd| z  S dS t          || z   dz            S )NTzC%dr   $zC[%d]Cr>  r   )rH  colxrelrD  r)  s       r0  
colnamerelr    sr    } # 	&D1H%%WT]]""  	"T>!sEDLC'(((r2  c                 0    dt          |          | dz   fz  S )z(Utility function: ``(5, 7)`` => ``'H6'``z%s%dr   r  )rG  rH  s     r0  r   r     s    WT]]DF+++r2  c                 N    |rd| dz   |dz   fz  S dt          |          | dz   fz  S )z*Utility function: ``(5, 7)`` => ``'$H$6'``zR%dC%dr   z$%s$%dr  )rG  rH  r)  s      r0  r   r   "  s<     +4646***wt}}d1f---r2  c                     |s|st          | ||          S |r||r|d}t          ||||          }t          | |||          }|r||z   S ||z   S )NT)r   r  r  )	rG  rH  r  r  rC  rD  r)  crs	            r0  r  r  (  s|     -7 -4t,,, EMwM5=4%..A4%..A 1uq5Lr2  c                 p    d}| dk    r||          S t          | d          \  }}||dz
           ||         z   S )z6Utility function: ``7`` => ``'H'``, ``27`` => ``'AB'``ABCDEFGHIJKLMNOPQRSTUVWXYZr@   r   r   )rH  )rH  alphabetxdiv26xmod26s       r0  r   r   4  sF    +Hrzz~b))
#hv&666r2  c                     |rdS || dz   k    r||dz   k    rt          | ||          S t          | ||          dt          |dz
  |dz
  |          S )z( ``(5, 20, 7, 10)`` => ``'$H$6:$J$20'`` Nr   r  )r   )rlorhiclochir)  s        r0  rangename2dr  =  sn     
c!e||s1u3T***!#sD1111;s1uc!eT3R3R3RSSr2  c                     | \  }}}}|\  }	}
}}|	s|
r|d}|s|r|d}t          |||	||||          dt          |dz
  |dz
  |
||||          S )NTr  r   )r  )rlo_rhi_clo_chirlorel_rhirel_clorel_chirelrC  rD  r)  r  r  r  r  rlorelrhirelclorelchirels                r0  r  r  E  s    (Cc3%@"FFFF & em & emC3&&%EEEECE3q5&&%EEE r2  c                 b    |j         }t          | g|dd         R  dt          |dd          S )z
    Utility function:
    ``Ref3D(1, 4, 5, 20, 7, 10)`` =>
    ``'Sheet2:Sheet3!$H$6:$J$20'``
    (assuming Excel's default sheetnames)
    Nr%   r"  r   )r5  
sheetranger  )bookr  r5  s      r0  r   r   R  sI     \F4%&!*%%%%%VAaC[!!# #r2  c                     |j         }|j        }t          | |dd         |dd                   }t          |dd         |dd         |||          }|s|S |d|S )z
    Utility function:
    ``Ref3D(coords=(0, 1, -32, -22, -13, 13), relflags=(0, 0, 1, 1, 1, 1))``

    In R1C1 mode => ``'Sheet1!R[-32]C[-13]:R[-23]C[12]'``

    In A1 mode => depends on base cell ``(browx, bcolx)``
    Nr%   r   r"  )r5  r  sheetrangerelr  )	r  r  rC  rD  r)  r5  r  shdescrngdescs	            r0  r   r   ^  sv     \F~H4Xbqb\::FVAaC[(1Q3-tLLG ffgg&&r2  c                     |dk    r	| |         }nddddd                     |d|z            }d|v rd|                    dd	          z   dz   S d
|v rd|z   dz   S |S )Nr   z?internal; any sheet?zinternal; deleted sheetzinternal; macro sheetz<<external>>)r9   r:   rg  ra  z
?error %d?'z''r  )r  rA  )shnamesshxshnames      r0  quotedsheetnamer  o  s    
axx ()'	
 

 #c<#%
&
& 	 f}}V^^C...44
f}}V|c!!Mr2  c                     |                                  }t          ||          }||dz
  k    r|dt          ||dz
            z   z  }|S )Nr   r  )sheet_namesr  )r  sloshir  r  s        r0  r  r    sQ      GWc**F
c!e||#Q7777Mr2  c                 v    |\  }}|\  }}|s|st          | ||          S |dcxk    r	|dz
  k    rn n|r|sJ dS )Nr   r   ry   )r  )r  srange	srangerelr  r  slorelshirels          r0  r  r    sp    HCNFF *& *$S)))1A6f2r2  )NN)r   )r   r   )NNNr   r   r   )Nr   )NNr   )ur  
__future__r   rQ  operatoroprstructr   biffhr   r   r   r	   r
   r   timemachine__all__r   r   r   r    r!   r"   ALL_FMLA_TYPESr  r  r  r   r   r;   r   r   r   r   r   r   rG  sztab0sztab1sztab2sztab3sztab4r:  r<  rF  rB  setrW  minmaxr>  r=  r9  rI  rK  rR  rZ  rz  r~  	Exceptionr  objectr#   r3  r$   tAddtSubtMultDivtPowertConcatrangetLTtLEtEQtGEtGTtNEr  r  r  r  r  r  r  r  r  rD  _arith_argdict_cmp_argdict_strg_argdictaddsubmultruedivr  r  r?  rC  r4  r9  r   r   r   r  r  r   r   r  r   r  r  r   r   r  r  r  r+  r2  r0  <module>r      s    & % % % % %                                      	   ^+^+114FF114FF114FF114FF114FF114FF114FF_,_,     	
							 		 	
  
]  
]  
] 
_  
_  
_ 
`  
`  
` 
a  
a  
a 
]  
]  
] 
								
 	
 
R  
R  
RF	8F 	:F 	8	F
 	8F 	8F 	8F 	8F 	8F 	8F 	8F 	7F 	9F 	8F 	8F  	:!F" 	8#F$ 	8%F F& 	8'F( 	8)F* 	7+F, 	8-F. 	8/F0 	81F2 	83F4 	85F6 	87F8 	89F: 	9;F< 	9=F> 	;?F@ 	9AFB 	:CFD 	8EFF 	8GF F FH 	7IFJ 	7KFL 	8MFN 	8OFP 	8QFR 	9SFT 	:UFV 	:WFX 	:YFZ 	:[F\ 	:]F^ 	:_F` 	8aFb 	:cFd 	9eFf 	;gFh 	;iF F Fj 	;kFl 	;mFn 	<oFp 	<qFr 	<sFt 	<uFv 	=wFx 	:yFz 	9{F| 	7}F~ 	:F@ 	:AFB 	:CFD 	8EFF 	8GFH 	8IFJ 	9KF F FL 	8MFN 	8OFP 	8QFR 	7SFT 	8UFV 	8WFX 	8YFZ 	<[F\ 	:]F^ 	8_F` 	8aFb 	;cFd 	9eFf 	8gFh 	8iFj 	9kFl 	;mF F Fn 	;oFp 	8qFr 	9sFt 	8uFv 	8wFx 	8yFz 	8{F| 	9}F~ 	9F@ 	9AFB 	8CFD 	;EFF 	;GFH 	8IFJ 	:KFL 	9MFN 	8OF F FP 	8QFR 	8SFT 	8UFV 	8WFX 	8YFZ 	8[F\ 	8]F^ 	:_F` 	;aFb 	<cFd 	9eFf 	8gFh 	8iFj 	8kFl 	9mFn 	=oFp 	=qF F Fr 	8sFt 	8uFv 	8wFx 	:yFz 	8{F| 	8}F~ 	8F@ 	:AFB 	:CFD 	9EFF 	8GFH 	:IFJ 	9KFL 	:MFN 	:OFP 	;QFR 	9SF F FT 	9UFV 	:WFX 	8YFZ 	9[F\ 	9]F^ 	8_F` 	8aFb 	:cFd 	<eFf 	:gFh 	7iFj 	>kFl 	8mFn 	8oFp 	8qFr 	8sFt 	8uF F Fv 	8wFx 	8yFz 	8{F| 	:}F~ 	8F@ 	<AFB 	9CFD 	8EFF 	8GFH 	8IFJ 	8KFL 	8MFN 	;OFP 	9QFR 	9SFT 	9UFV 	:WF F FX 	:YFZ 	8[F\ 	:]F^ 	:_F` 	:aFb 	8cFd 	8eFf 	9gFh 	;iFj 	:kFl 	9mFn 	;oFp 	:qFr 	:sFt 	:uFv 	;wFx 	8yF F Fz 	:{F| 	8}F~ 	:F@ 	8AFB 	9CFD 	:EFF 	:GFH 	;IFJ 	9KFL 	9MFN 	9OFP 	9QFR 	9SFT 	9UFV 	:WFX 	9YFZ 	9[F F F\ 	9]F^ 	9_F` 	9aFb 	9cFd 	;eFf 	:gFh 	8iFj 	8kFl 	8mFn 	8oFp 	8qFr 	8sFt 	9uFv 	9wFx 	9yFz 	9{F| 	9}F F F~ 	9F@ 	8AFB 	9CFD 	9EFF 	8GFH 	9IFJ 	8KFL 	8MFN 	9OFP 	:QFR 	9SFT 	8UFV 	;WFX 	:YFZ 	8[F\ 	9]F^ 	9_F F F` 	9aFb 	9cFd 	8eFf 	8gFh 	8iFj 	8kFl 	8mFn 	8oFp 	8qFr 	8sFt 	8uFv 	8wFx 	8yFz 	8{F| 	8}F~ 	8F@ 	8AF FB 
9	8	8	8	8KF F F	R 








 

 >>>??Cc3,Cc3,  ( ( ( ($ 59( ( ( ($	< 	< 	< 	<   $#& #& #& #&L BC& & & &*	 	 	 	 	9 	 	 	Y1 Y1 Y1 Y1 Y1f Y1 Y1 Y1x?/ ?/ ?/ ?/ ?/E ?/ ?/ ?/B 	
$uT400 S#sC   " ! !                                       .,xs+^T37R5^T37R5^T37R5^T3;S9
^T8R6]E37R5\5'R5\5'R6\5'R5\5'R6\5'R5\5'R6  <C
,;C
,B
- 
 		  ]	 ]	 ]	 ]	B 8<,-K K K K\ZE ZE ZE ZEH/ / / /) ) ) ), , ,. . . .
 
 
 
7 7 7T T T T
 
 
 

# 
# 
#' ' ' '"         r2  