Ë
    Ñ³¸ja�  ã                   ó>  — U d dl mZmZmZmZ d dlmZ d dl mZmZmZ d dlm	Z	 d dl
mZ d dlZd dlmZmZmZmZmZmZmZ d dlmZmZ d d	lmZ d dlZd dlZeeeef   Zeed
<   ddddddœdddd ddœddddddœgZ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œ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ddœd*d dœd ddœd/œdœd0d1ddœd*d dœd ddœd2œdœd3d4d5dœdd!dœd d6dœd7œdœd8d4d9dœdd:dœd d;dœd<œdœd=œZ  G d>„ d?«      Z! G d@„ dA«      Z" G dB„ dC«      Z#dDe$fdE„Z%dDe$fdF„Z& G dG„ dHe«      Z' G dI„ dJe«      Z( G dK„ dLe«      Z) G dM„ dNe«      Z* G dO„ dPe«      Z+ G dQ„ dR«      Z, G dS„ dTe«      Z- G dU„ dVe«      Z. G dW„ dX«      Z/ G dY„ dZe«      Z0 G d[„ d\e«      Z1 G d]„ d^e«      Z2 G d_„ d`e«      Z3 G da„ db«      Z4 G dc„ dd«      Z5 G de„ dfe5«      Z6 G dg„ dhe«      Z7di„ Z8dje9fdk„Z:dldiZ;y)mé    )ÚOptionalÚAnyÚ	TypeAliasÚSelf)Úcached_property)r   r   Ú	Generator)Údefaultdict)ÚsessionN)ÚDebugÚIODateÚmÚiÚsÚfÚgetJSON)ÚModelÚrow)ÚDecimalÚRowsz'Run down building in a bad neighborhoodz¬No heat but there's plenty of holes in the wall so build in air conditioning.  Your employees are not going to like this but it's cheap. - <strong>$5,000 / Quarter</strong>ÚLowiìÿÿÿéˆ  )ÚtitleÚdetailÚvalueÚeffectÚcostz An old house on the edge of townz„Structurally sound building and it even has a kitchen.  It's awfully cramped but could be worse - <strong>$10,000 / Quarter</strong>ÚMediumi'  zLease a brand new buildingzÌPlenty of space and state of the art facilities.  Mass transit right to the front door and a built in gym.  Employees will be beating your door down to get a job here. - <strong>$20,000 / Quarter</strong>ÚHighé   i N  zXYou need a new plant manager for your factory.  Choose from the following top candidates)r   Ú	pr_effect)z¯Expecting Mom - Age:27 - Very talented women with great credentials and job experience. She just found out she is expecting so she will need maternity leave in the near futurezŠThe Pro - Age 57 - Top of his class at the Wharton Business School.  He has short stints at a ton of great companies but they all love himzŽHome Grown - Age 26 - Started at the company straight out of high school.  Steady, on time, very dependable but with no management experience.©ÚdescriptionÚoptionszŽDo you feel your business reflects your ethical beliefs?  Would you have made different decisions if the employees were your family / friends?)z*Yes, I would love to work at this company!zVMiddle of the road.  We tried to do the right thing for our customers and shareholdersz)No, we wanted to win so we were ruthless!u~   <strong>Marketing</strong><br>You need donations for a silent auction but donâ€™t shop downtown or patronize any local stores.é
   éÄ	  iöÿÿÿ)zWrite it in to your budgetz.Give your employees a stipend to spend locallyz0Continue to shop from larger brands saving moneyzvYour company plans to build a new distribution center that promises jobs but would displace a low-income neighborhood.)zDo you proceed for growthzGChoose an alternative site at higher cost but less community disruptionz¶<strong>Marketing</strong><br>A popular but polarizing influencer offers to promote your brand for a significant fee. They have a large following but a history of public controversy.)z.Gamble and accept the partnership for exposurez0Distance your brand to avoid potential backlash?zXYour employees are complaining about substandard working conditions. How do you respond?i¸  )z(Undergo massive updates of your facilityzBPut in the bare minimum repairs to keep employees from complainingú
Do nothingzVYour new line has dropped and you have been informed there was a manufacturing defect.)zYou recall the defective phonesz'You offer free fixes on all your phonesr&   z…<br>Human Resources</strong><br>Your employees are using too many sick days to take care of their children.  Production is suffering.)z(Provide a comprehensive day care packagezProvide a stipend for daycarer&   z¥Congratulations! You have built a brand-new facility for your Company. Unfortunately,you had to remove 300 trees to make space for your building. How do you respond?i@  )z6Plant 300 trees on a different section of the propertyzPlant a portion of the treeszReplant zero treesz‡The train carrying your shipment of batteries has derailed and caught fire.  You have a potential environmental disaster on your hands.iPÃ  é   içÿÿÿ)z*Clean it up and make it better than it wasz7Hire crisis management firm to blame it on someone elsezLPretend it didn't happen.  Looks normal to me, trees always glow in the darkz„A pandemic is spreading the globe.  People are reluctant to leave their houses and there are supply shortages of all your componentsé2   é   iñÿÿÿ)z*Allow your employees to stay home with payz­Take reasonable precautions (Social Distancing, Hand Sanatizer,etc) and add extra shifts to reduce the number of people working at the same time.  Production will take a hitz&It's just a cold.  We can tough it out)ÚManagerÚEthicsÚAuctionÚInfrastructureÚSocialMediaÚ
ConditionsÚ
ProductionÚDaycareÚDeforestationÚEnvironmentalÚPandemicc                   ó   — e Zd Zd„ Zy)ÚAdminc                 ó’   — t        «       j                  «       j                  d«      xs g t        «       j                  «       xs g dœS )Nr#   )ÚOverheadÚDilemas)r8   r#   ÚgetÚDilemmas©Úselfs    ú/var/www/bsim/io/app.pyr#   zAdmin.optionsË   s=   € ä‹j× Ñ Ó"×&Ñ& yÓ1Ò7°RÜ‹Z×ÑÓ!Ò' Rñ
ð ó    N)Ú__name__Ú
__module__Ú__qualname__r#   © r?   r>   r6   r6   Ê   s   „ ór?   r6   c                   ó2   — e Zd Zdedefd„Zdedefd„Zd„ Zy)r8   ÚkeyÚreturnc                 ó~   — t         D ]4  }|j                  dd«      |k(  sŒt        |j                  dd«      «      c S  y)Nr   Ú r   r   ©ÚOVERHEADr:   r   ©r=   rE   Úitems      r>   r   zOverhead.costÓ   s?   € Üò !€dØ
‡h�hˆw�rÓ˜cÓ!ÜˆT�X‰X�f˜QÓÓ Ò ð!ð 
r?   c                 ó~   — t         D ]4  }|j                  dd«      |k(  sŒt        |j                  dd«      «      c S  y)Nr   rH   r   r   rI   rK   s      r>   r   zOverhead.valueÙ   s?   € Üò #€dØ
‡h�hˆw�rÓ˜cÓ!äˆT�X‰X�h˜qÓ!Ó"Ò"ð#ð 
r?   c                 ó   — dt         iS ©Nr#   )rJ   r<   s    r>   r#   zOverhead.optionsà   s   € Ø
”HÐ	Ðr?   N)r@   rA   rB   ÚstrÚintr   r   r#   rC   r?   r>   r8   r8   Ñ   s-   „ ð�3ð ˜3ó ð�Cð ˜Có ór?   r8   c                   óŠ   — e Zd ZU eed<   dedefd„Zdefd„Zdededefd	„Z	dedede
fd
„Zdedefd„Zdefd„Zdefd„Zd„ Zy)r;   ÚerrorÚdatarF   c                 ó8   — t        |«      dkD  rt        |«      S g S ©Nr   )Úlenr   ©r=   rT   s     r>   ÚfromJSONzDilemmas.fromJSONå   s   € ÜˆƒYˆq‚[Ü
�$‹-Ðà	€8r?   Únamec                 óL   — t         j                  |i «      j                  d«      S )Nr"   )ÚDILEMMASr:   ©r=   rZ   s     r>   r"   zDilemmas.descriptionê   s   € Ü	�‰�d˜2Ó	×	"Ñ	" =Ó	1Ð1r?   ÚdilemmaÚactionc           	      ó8  — 	 t        t        j                  |i «      j                  di «      j                  |i «      j                  d«      «      S # t        $ r@}d|› d|› dt	        |«      › �| _        t        d|› d|› �¬«       t        d«      cY d }~S d }~ww xY w)Nr#   r   úTrouble getting Dilemma cost ú -> ú 
©r   r   )r   r\   r:   Ú	ExceptionrP   rS   r   ©r=   r^   r_   Úes       r>   r   zDilemmas.costí   s�   € ðÜ
ŒH�L‰L˜ Ó$×(Ñ(¨°2Ó6×:Ñ:¸6À"ÓE×IÑIÈ&ÓQÓ
RÐRøÜ	ò Ø/°¨y¸¸V¸HÀCÌÈAËÀxÐP€4„:ÜÐ.¨w¨i°t¸F¸8ÐDÕEÜ
ˆA‹$…;ûðúó   ‚AA Á	BÁ5BÂBÂBc           	      ó8  — 	 t        t        j                  |i «      j                  di «      j                  |i «      j                  d«      «      S # t        $ r@}d|› d|› dt	        |«      › �| _        t        d|› d|› �¬«       t        d«      cY d }~S d }~ww xY w)Nr#   r    ra   rb   rc   rd   r   )r   r\   r:   re   rP   rS   r   rf   s       r>   ÚprzDilemmas.prõ   s�   € ðÜ
ŒH�L‰L˜ Ó$×(Ñ(¨°2Ó6×:Ñ:¸6À"ÓE×IÑIÈ+ÓVÓ
WÐWøÜ	ò Ø/°¨y¸¸V¸HÀCÌÈAËÀxÐP€4„:ÜÐ.¨w¨i°t¸F¸8ÐDÕEÜ
ˆA‹$…;ûðúrh   Údilemmasc                 óN  — g }t        |«      xs g D ]‰  }t        j                  |i «      j                  d«      i dœ}t        j                  |i «      j                  di «      j                  «       D ]  \  }}||d   |<   	 |d   |   d= Œ |j	                  |«       Œ‹ |S #  Y Œ3xY w)Nr"   r!   r#   r    )r   r\   r:   ÚitemsÚappend)r=   rk   Úallr^   rT   ÚoptionÚvals          r>   Ú
mk_quarterzDilemmas.mk_quarterý   s·   € Ø
€#Ü˜Ó"Ò( bò €gÜ!Ÿ™ g¨bÓ1×5Ñ5°mÓDÈrÑ
R€4Ü—\‘\ '¨"Ó-×1Ñ1°)¸BÓ?×EÑEÓGò 
�z€vˆcØ!€Dˆ�O�FÑð
Ø	ˆi‰˜Ñ	  Ñ	-ð
ð ‡:�:ˆdÕðð 
€*øð
Ù	ús   Â 	B Â B$c                 óî   — i }t         j                  |i «      j                  di «      j                  «       D ]  \  }}|||<   	 |d= Œ |t         j                  |i «      j                  d«      dœS #  Y Œ=xY w)Nr#   r    r"   )r#   r"   ©r\   r:   rm   ©r=   rZ   rT   Údescrq   s        r>   Úclient_optionzDilemmas.client_option
  s~   € Ø	€$Ü—,‘,˜t BÓ'×+Ñ+¨I°bÓ9×?Ñ?ÓAò 	�h€dˆ3Ø€4ˆ�:ð	ØˆKÑð	ð ¤x§|¡|°D¸Ó'<×'@Ñ'@ÀÓ'OÑ	PÐPøð	Ùús   ÁA0Á0A4c                 óŒ   — i }t         j                  |i «      j                  di «      j                  «       D ]
  \  }}|||<   Œ |S rO   rt   ru   s        r>   rp   zDilemmas.option  sI   € Ø	€$Ü—,‘,˜t BÓ'×+Ñ+¨I°bÓ9×?Ñ?ÓAò �h€dˆ3Ø€4ˆ‚:ðà	€+r?   c                 óˆ   — g }t         j                  «       D ](  \  }}|j                  |j                  d«      |dœ«       Œ* |S )Nr"   ©r   r   )r\   rm   rn   r:   )r=   rT   rZ   r   s       r>   r#   zDilemmas.options  sH   € Ø	€$Ü—^‘^Ó%ò �k€dˆ6Ø‡;�;Ø�J‰J�}Ó%Øñõ ðð
 
€+r?   N)r@   rA   rB   rP   Ú__annotations__ÚlistrY   r"   r   r   rQ   rj   rr   rw   rp   r#   rC   r?   r>   r;   r;   ã   sŒ   … Ø
ƒð˜ð  ó ð
2˜3ó 2ð�sð  #ð ¨'ó ð�Sð  ð ¨ó ð˜cð  dó ð	Q˜Só 	Qð�có ór?   r;   rF   c                  ó˜   — 	 t         d   d   xs dS # t        $ r.} t        d| ¬«       t        dt         d   d   ¬«       Y d } ~ yd } ~ ww xY w)NÚUserÚBusiness_IDéÿÿÿÿúTrouble getting session user©r   rT   zSession Business©r
   re   r   ©rg   s    r>   ÚgetBusIDr…   $  sM   € ðÜ	�‰˜Ñ	'Ò	-¨2Ð-øÜò ÜÐ,°!Õ4ÜÐ ¤g¨f¡o°mÑ&DÕEÜ	ûðús   ‚ ’	A	›$AÁA	c                  óŠ   — 	 t         d   d   S # t        $ r+} t        d| ¬«       t        dt         d   ¬«       Y d } ~ yd } ~ ww xY w)Nr~   ÚIDr�   r‚   zSession Userr€   rƒ   r„   s    r>   Ú	getUserIDrˆ   ,  sB   € ðÜ	�‰˜Ñ	ÐøÜò ÜÐ,°!Õ4Üˆn¤'¨&¡/Õ2Ü	ûðús   ‚ Ž	A—!=½Ac                   ój   ‡ — e Zd ZdZdedefd„Zdedefd„Zd„ Z	de
defd„Zd	efd
„Zdefˆ fd„Zˆ xZS )ÚGlobal_SettingsÚGlobalÚqualityrF   c                 ó²   — i }t        «       }t        |j                  |› d�«      «      }|dz  }dt        |dz  «      › dt        |dz  «      › �|d<   d|d   iS )NÚ_Median_Pricegš™™™™™é?ú$z - $g333333ó?Úprice)rŠ   r   Ú	get_valuer   )r=   rŒ   rT   Úsettingsr�   Úbottoms         r>   ÚsummaryzGlobal_Settings.summary7  sk   € Ø	€$ÜÓ€(Ü
ˆH×Ñ ' ¨-Ð8Ó9Ó
:€%Ø�3‰;€&Ø”a˜ ™“oÐ& d¬1¨U°T©\«?Ð*;Ð<€$€w�-Ø
�$�w‘-Ð	 Ð r?   c                 ó€   — | j                  «       }|j                  |«      x}r|j                  d«      S t        d«      S )Nr   ç        )Úmedian_pricesr:   r   )r=   rŒ   ÚpricesrL   s       r>   Úmedian_pricezGlobal_Settings.median_price?  s=   € Ø×ÑÓ€&à�Z‰Z˜Ó Ð €TÐ Ø
�(‰(�7Ó
Ðä
�$‹-Ðr?   c                 óˆ   — | j                  «       }|j                  d«      |j                  d«      |j                  d«      dœS )NÚLow_Median_PriceÚMedium_Median_PriceÚHigh_Median_Price)r   r   r   )Úcacher:   rX   s     r>   r—   zGlobal_Settings.median_pricesG  s>   € Ø	�‰‹€$à	�‰Ð$Ó	%Ø�H‰HÐ*Ó+Ø
�(‰(Ð&Ó
'ñ
ð r?   r‡   c                 óˆ   — | j                  «       | _        | j                  j                  d|g¬«       | j                  «       S ©NúID=%s©ÚqueryÚparms©Úqb_initÚqbÚfilterÚ
select_one©r=   r‡   s     r>   r:   zGlobal_Settings.getO  ó2   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�w b T€.Ô*Ø	�‰Ó	Ðr?   rE   c                 ó´   — | j                  «       | _        | j                  j                  d|g¬«       | j                  «       xs i }|j	                  dd«      S )Nz`key`=%sr¢   r   rH   )r¦   r§   r¨   r©   r:   )r=   rE   Úds      r>   r‘   zGlobal_Settings.get_valueT  sG   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�z¨¨€.Ô.Ø
‡o�oÓÒ˜2€!Ø	
�‰ˆw�rÓ	Ðr?   c                 ó$   •— t         ‰| �  d¬«      S )NrE   ©Úfield)Úsuperrž   )r=   Ú	__class__s    €r>   rž   zGlobal_Settings.cacheZ  s   ø€ Ü	‰‰˜UˆÓ	#Ð#r?   )r@   rA   rB   ÚtablerP   Údictr”   r   r™   r—   rQ   r:   r‘   rž   Ú__classcell__©r²   s   @r>   rŠ   rŠ   4  sc   ø„ Ø	€ð!˜#ð ! $ó !ð˜sð  wó òð�ð ˜ó ð
˜ó ð$�D÷ $ñ $r?   rŠ   c                   óH   — e Zd Zd	dedefd„Zedefd„«       Zdededefd„Zy)
ÚBusiness_ItemÚ
manuf_coefrF   c                 óJ  — ddl m} t        «       j                  «       }	 t	        |j                  | j                  dd«      i «      j                  d«      xs d«      }|t	        |dz  «      z  } ||dz  «      S # t        $ r}t        d	|¬
«        |d«      cY d }~S d }~ww xY w)Nr   ©r   ÚQualityrH   r   r€   éd   é   zTrouble getting Units Pricer‚   iç  )ÚUtilsr   rŠ   r—   r   r:   re   r   )r=   r¹   r   r˜   r   rg   s         r>   Úcost_per_unitzBusiness_Item.cost_per_unit^  s�   € ÝÜÓ×*Ñ*Ó,€&ðÜ
ˆF�J‰J�t—x‘x 	¨"Ó-¨bÓ1×5Ñ5°gÓ>ÒDÀ"Ó
E€4ØŒ1ˆZ˜‰^ÓÑ€4Ù
ˆD�‰F‹)Ðøä	ò ÜÐ,°&Õ9Ù
ˆC‹&…=ûðús    AA: Á:	B"ÂBÂB"ÂB"c                 ó¨  — 	 | j                  d«      }t        | j                  d«      «      }t        | j                  d«      «      }t        t        «       j	                  |› d�«      «      }t        |dz  «      }t        t        | j                  d«      «      |z  «      }||z   }|S # t        $ r!}t        d|¬«       Y d }~t        d	«      S d }~ww xY w)
Nr¼   ÚCapitalÚLoanrŽ   é   ÚUnitszTrouble with total valuer‚   r€   )	r:   r   r   rŠ   r‘   r   re   r   r   )	r=   rŒ   ÚcapitalÚloanÚmedianÚavg_valÚunit_valÚtotalrg   s	            r>   Útotal_valuezBusiness_Item.total_valuek  s»   € ð2Ø�X‰X�iÓ €7Üˆt�x‰x˜	Ó"Ó#€7Ü
ˆD�H‰H�VÓÓ
€4ÜŒoÓ×)Ñ)¨W¨I°]Ð*CÓDÓE€6Üˆv�a‰x‹[€7Ü”�$—(‘(˜7Ó#Ó$ wÑ.Ó/€8Ø�xÑ€5à
€<øÜ	ò 2ÜÐ)¨q×1Ñ1ä	�‹Ðûð2ús   ‚B$B' Â'	CÂ0CÃCÚrevÚexpensesc                 ój   — t        | j                  dd«      «      }t        ||z   |z
  «      | d<   | d   S )NrÃ   r–   rÂ   )r   r:   )r=   rÍ   rÎ   rÇ   s       r>   Úcalc_capitalzBusiness_Item.calc_capital|  s8   € Ü	
ˆ4�8‰8�F˜4Ó Ó	!€$Ü�s˜4‘x Ñ)Ó*€$€y�/Ø	ˆi‰Ðr?   N)r½   )	r@   rA   rB   rQ   r   rÀ   ÚpropertyrÌ   rÐ   rC   r?   r>   r¸   r¸   ]  sJ   „ ñ 3ð ¨wó ð ð˜'ò ó ðð ˜7ð ¨Gð ¸ô r?   r¸   c                   ó¤   — e Zd ZU dZeed<   d ZdZdedede	fd„Z
dedede	de	fd	„Zdefd
„Zdedefd„Zddedee   defd„Zdefd„Zdedefd„Zy)ÚBusinessé   ÚidÚBusiness_itemÚunitsrŒ   rF   c                 óŒ   — d}t        t        «       j                  |› d�«      «      }t        |dz  «      }||z  }t        |«      S )Nr   rŽ   rÄ   )r   rŠ   r‘   r   )r=   r×   rŒ   rq   rÈ   rÉ   s         r>   Úinventory_valuezBusiness.inventory_value†  sE   € Ø	€#ÜŒ_Ó×(Ñ(¨G¨9°MÐ)BÓCÓD€&Üˆf�Q‰h‹K€'Ø�‰€#Ü	
ˆ3‹€-r?   rÆ   c                 óp   — 	 | j                  ||¬«      }t        ||z   dz  «      S #  t        d«      cY S xY w)N)r×   rŒ   éO  r   )rÙ   r   )r=   r×   rŒ   rÆ   Ú	inv_values        r>   Úcalc_stock_pricezBusiness.calc_stock_price�  sA   € ðØ×#Ñ#¨E¸'Ð#ÓB€9Ü
ˆY˜Ñ  EÑ)Ó
*Ð*øðÜ
ˆA‹$‚;ús   ‚#& ¦5c                 ó  — t        «       }t        |j                  d«      xs d«      }d}| j                  «       D ]C  }||d<   ||d<   d|d<   d|d<   d|d<   | j	                  |«       | j	                  |«      dk  sŒBd}ŒE |S )	NÚInitial_Capitalr   rÔ   rÂ   rÃ   ÚPR_ScorerÅ   ÚStock_Price)rŠ   r   r‘   ro   Úupdate)r=   ÚgdatarÇ   ÚstatusÚbuss        r>   ÚresetzBusiness.reset”  s”   € Ü
Ó
€%Ü	
ˆ5�?‰?Ð,Ó-Ò2°Ó	3€$Ø€&Ø�X‰X‹Zò €cØ€3€y�>Ø€3€v�;Ø€3€z�?Ø€3€w�<Ø€3€}ÑØ‡;�;ˆsÔØ
‡k�k�#Ó˜ÓØ�Fðð 
€-r?   r‡   c                 óð  — | j                  «       | _        | j                  j                  d|g¬«       | j                  «       }i }|r®t	        |«      }|j                  «       |d<   i |d<   t        j                  dt        «       j                  |«      «      }d}t        «       j                  «       D ]A  }|j                  dd«      }||d   |<   |j                  |i «      j                  d	«      xs d}ŒC |S )
Nr¡   r¢   Ú	unit_costÚemployee_listÚ
Quarter_IDr   r‡   rH   Ú	employees)r¦   r§   r¨   r©   r¸   rÀ   r¿   Úgroup_byÚQuartersÚget_businessÚQuarter_SettingsÚactiver:   )r=   r‡   r   rå   ÚplansÚprevÚsettingÚqids           r>   r:   zBusiness.get£  så   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�w b T€.Ô*Ø�‰Ó€#Ø
€#ÙÜ	�sÓ	€3Ø×'Ñ'Ó)€3€{ÑØ€3€Ñô �>‰>˜,¤x£z×'>Ñ'>¸rÓ'BÓC€5Ø
€4ä"Ó$×+Ñ+Ó-ò 3€wØ
�+‰+�d˜2Ó
€CØ $€CˆÑ˜ÑØ�9‰9�S˜Ó× Ñ  Ó-Ò2°�Dð3ð 
€*r?   Nr£   r¤   c                 óÄ   — i }| j                  «       | _        |r| j                  j                  ||¬«       | j                  «       D ]  }|||j	                  d«      <   Œ |S )Nr¢   r‡   )r¦   r§   r¨   Úselectr:   )r=   r°   r£   r¤   rT   rå   s         r>   rž   zBusiness.cache·  sW   € Ø	€$Ø�L‰L‹N€$„'á
Ø‡7�7‡>�>˜ E€>Ô*à�[‰[‹]ò €cØ€4ˆ�‰�‹Òðà	€+r?   c                 ó®   — g }| j                  «       D ]?  }t        «       j                  |j                  d«      ¬«      |d<   |j	                  |«       ŒA |S )Nr‡   ©r   ÚQuarter_Plan)ro   rí   rî   r:   rn   )r=   r­   rå   s      r>   ÚdetailszBusiness.detailsÂ  sP   € Ø€!Ø�X‰X‹Zò €cÜ!›×0Ñ0¸S¿W¹WÀT»]Ð0ÓK€3€~ÑØ‡8�8ˆC…=ðð 
€(r?   c                 ód   — | j                  |¬«      }t        «       j                  |¬«      |d<   |S )N©r‡   rø   rù   )r:   rí   rî   )r=   r‡   rå   s      r>   r   zBusiness.detailÉ  s0   € Ø�‰�Bˆ‹€#Ü ›
×/Ñ/¸BÐ/Ó?€#€nÑØ	€*r?   )r‡   rH   N)r@   rA   rB   rÕ   rQ   r{   r³   Úrow_clsrP   r   rÙ   rÝ   ræ   r´   r:   r   r|   rž   rú   r   rC   r?   r>   rÓ   rÓ   �  s¬   … Ø
€€CƒØ	€Ø€ð ð ¨Cð °Gó ð ð ¨Sð ¸ð ÀWó ð�Có ð�ð ˜ó ñ(	 ð 	¨h°t©nð 	Àdó 	ð�dó ð�Cð ˜Dô r?   rÓ   c                   óØ   — e Zd ZU dZeed<   d Zdedefd„Zde	defd„Z
defd„Zd	edefd
„Zdefd„Zdd	ede	defd„Zdefd„Zdefd„Zde	dee   defd„Zdefd„Zdde	dee   defd„Zy)rï   rÔ   rÕ   r‡   rF   c                 óˆ   — | j                  «       | _        | j                  j                  d|g¬«       | j                  «       S r    r¥   rª   s     r>   r:   zQuarter_Settings.getÒ  r«   r?   rZ   c                 ó®   — | j                  «       | _        | j                  j                  d|g¬«      j                  d«       | j	                  «       xs i S )NzName=%sr¢   Ú1)r¦   r§   r¨   Úlimitr©   r]   s     r>   Úget_namezQuarter_Settings.get_name×  sB   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�y¨ v€.Ó.×4Ñ4°SÔ9Ø	�‰Ó	Ò	 ˜bÐ r?   c                 óˆ   — | j                  «       | _        | j                  j                  ddi¬«       | j                  «       S )NÚActiver   ©rT   )r¦   r§   râ   Úexecuter<   s    r>   Ú
deactivatezQuarter_Settings.deactivateÜ  s1   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�x �l€.Ô#Ø	�‰‹Ðr?   Úbus_idc                 ó8  — | j                  «       | _        i }| j                  «       D ]ï  } |j                  d«      } |j                  d«      }t	        d|¬«       t        «       j                  |¬«      }|||<   t        «       j                   |j                  d«      «      ||   d<   t        «       j                  «       ||   d<   | j                  ||¬«      ||   d	<   d
||   d<   t        «       j                  |j                  dd«      «      ||   d<   Œñ |S )NÚNamer‡   zbus summaryr‚   rü   r;   ÚOverhead_Settings©r	  Úquarter_nameÚProduction_Costé(   Ú
Efficiencyr¼   rH   ÚMedian)r¦   r§   ro   r:   r   rÓ   Úget_idr;   rr   r8   r#   Úcalc_production_costrŠ   r”   )r=   r	  rT   r   rZ   rÕ   Úbus_datas          r>   Úbus_summaryzQuarter_Settings.bus_summaryá  s  € Ø�L‰L‹N€$„'Ø	€$à�X‰X‹Zò N€cØ
ˆ#�'‰'�&‹/€4Øˆ�‰�‹€2Üˆ} #Õ&Ü‹j×Ñ 6ÐÓ*€8Ø€4ˆ�8Ü"›*×/Ñ/°°·±¸
Ó0CÓD€4ˆ�8ˆJÑä#+£:×#5Ñ#5Ó#7€4ˆ�8ÐÑ Ø!%×!:Ñ!:À&ÐVZÐ!:Ó![€4ˆ�8ÐÑØ€4ˆ�8ˆLÑÜ'Ó)×1Ñ1°(·,±,¸yÈÓ2LÓM€4ˆ�8ˆHÒðNð 
€+r?   c                 óÔ  — | j                  «       | _        i }| j                  «       D ]½  } |j                  d«      } |j                  d«      }t	        «       }t        «       j                  |¬«      }|||<   t        «       j                  «       ||   d<   | j                  ||¬«      ||   d<   d||   d<   t        «       j                  |j                  d	d
«      «      ||   d<   Œ¿ |S )Nr  r‡   rü   r  r  r  r  r  r¼   rH   r  )r¦   r§   ro   r:   r…   rÓ   r  r8   r#   r  rŠ   r”   )r=   rT   r   rZ   rÕ   r	  r  s          r>   r”   zQuarter_Settings.summary÷  sä   € Ø�L‰L‹N€$„'Ø	€$à�X‰X‹Zò 
N€cØ
ˆ#�'‰'�&‹/€4Øˆ�‰�‹€2Ü‹J€6Ü‹j×Ñ 6ÐÓ*€8Ø€4ˆ�8ä#+£:×#5Ñ#5Ó#7€4ˆ�8ÐÑ Ø!%×!:Ñ!:À&ÐVZÐ!:Ó![€4ˆ�8ÐÑØ€4ˆ�8ˆLÑÜ'Ó)×1Ñ1°(·,±,¸yÈÓ2LÓM€4ˆ�8ˆHÒð
Nð 
€+r?   r  c                 óŽ  — t        «       j                  |«      }d}d}	 |r4t        «       j                  |¬«      }t	        |j                  d«      «      }t        t        «       j                  |«      «      }|j                  |¬«      S # t        $ r2}	t        d|	¬«       t        d|g¬«       d}Y d }	~	t        |«      S d }	~	ww xY w)	Nr–   r½   )rZ   ÚManufacturing_Cost)r¹   re   r‚   zTrouble with Production Calc)rÓ   r:   rï   r  r   r¸   r  rÀ   r   rŠ   r—   Úfloatr   re   )
r=   r	  r  rå   r   ÚcoefÚqrŒ   r˜   rg   s
             r>   r  z%Quarter_Settings.calc_production_cost  s²   € Ü‹
�‰�vÓ€#Ø	€$Ø	€$ðÙÜÓ×#Ñ#¨Ð#Ó6€AÜˆQ�U‰UÐ'Ó(Ó)€DÜ	”x“z×(Ñ(¨Ó0Ó	1€3Ø
×
Ñ
 tÐ
Ó
,Ð,øô 
ò Üˆ{ Õ"ÜÐ-°D¸°=ÕAØ
„4Ü	
ˆ4‹€.ûð	ús   ŸA)B	 Â		CÂB?Â?Cc                 óž   — g }| j                  d¬«      D ]5  }|j                  |j                  dd«      |j                  d«      dœ«       Œ7 |S )NúActive=1©r£   r  rH   r‡   rz   )ro   rn   r:   )r=   Úqdatar  s      r>   r#   zQuarter_Settings.options  sL   € Ø
€%Ø�8‰8˜*ˆ8Ó%ò @€aØ‡<�<˜Ÿ™˜v bÓ)°!·%±%¸³+Ñ>Õ?ð@à	€,r?   c                 ó†   — i }| j                  «       | _        | j                  «       D ]  }|||j                  d«      <   Œ |S )Nr‡   )r¦   r§   rö   r:   )r=   rT   r  s      r>   rž   zQuarter_Settings.cache$  s@   € Ø	€$Ø�L‰L‹N€$„'Ø�;‰;‹=ò €aØ€4ˆ�‰ˆd‹Òðà	€+r?   r£   r¤   c                 ó†   — | j                  «       | _        | j                  j                  ||¬«       | j                  «       S )Nr¢   r¥   ©r=   r£   r¤   s      r>   ÚfindzQuarter_Settings.find+  s0   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�u 5€.Ô)Ø	�‰Ó	Ðr?   c                 ó&   — | j                  d¬«      S )Nr  r  )ro   r<   s    r>   rð   zQuarter_Settings.active0  s   € Ø	�‰˜
ˆÓ	#Ð#r?   Nc                 óÔ   — | j                  «       | _        |r| j                  j                  ||¬«       | j                  j                  d¬«       t	        | j                  «       «      S )Nr¢   r  r¯   )r¦   r§   r¨   Úorderr|   rö   r#  s      r>   ro   zQuarter_Settings.all3  sI   € Ø�L‰L‹N€$„'Ù
Ø‡7�7‡>�>˜ E€>Ô*Ø‡'�'‡-�-�f€-ÔÜ	ˆd�k‰k‹mÓ	Ðr?   ©rH   ©rH   N)r@   rA   rB   rÕ   rQ   r{   r³   r´   r:   rP   r  r  r  r”   r   r  r|   r#   rž   r   r$  rð   ro   rC   r?   r>   rï   rï   Î  sÛ   … Ø
€€CƒØ	€ð�ð ˜ó ð
!˜ð ! ó !ð
˜ó ð
˜Sð  Tó ð,�dó ñ" cð °sð À'ó ð,�dó ð�Dó ð�Sð ˜x¨™~ð °$ó ð
$�Tó $ñ�Cð  ¨$¡ð ¸ô r?   rï   c            	       ó–   — e Zd ZU dZeed<   d Zdefd„Zdedefd„Z	dedede
fd„Zdedefd	„Zddedee   de
defd„Zddede
defd„Zy
)rí   rÔ   rÕ   rF   c                 ó¦   — | j                  «       | _        d| j                  _        | j                  j                  i ¬«       | j	                  «       S )NTr  )r¦   r§   ÚdebugÚdeleter  r<   s    r>   ræ   zQuarters.reset>  s8   € Ø�L‰L‹N€$„'Ø€$‡'�'„-Ø‡'�'‡.�.�b€.ÔØ	�‰‹Ðr?   rê   c                 óˆ   — | j                  «       | _        | j                  j                  d|g¬«       | j                  «       S )NzQuarter_ID=%sr¢   r¥   )r=   rê   s     r>   Úget_quarter_idzQuarters.get_quarter_idD  s2   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�¨j¨\€.Ô:Ø	�‰Ó	Ðr?   r   c                 ó´   — | j                  «       | _        | j                  j                  d||g¬«       t        t	        | j                  «       «      «      dkD  S )Nú Business_ID=%s and Quarter_ID=%sr¢   r   )r¦   r§   r¨   rW   r|   rö   )r=   r   rê   s      r>   Úcheck_existszQuarters.check_existsI  sD   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð9ÀÈZÐ@X€.ÔYÜ	ŒT�$—+‘+“-Ó Ó	! !Ñ	#Ð#r?   c                 óN  — | j                  «       | _        | j                  j                  d¬«       | j                  j                  d|g¬«       | j                  j	                  d¬«       | j                  j                  d¬«       | j                  | j                  «       «      S )	Nz0Quarters.*,Quarter_Settings.Name as Quarter_Name©ÚfieldsúBusiness_ID=%sr¢   z@join Quarter_Settings on Quarter_Settings.ID=Quarters.Quarter_ID)Újoinr  r¯   )r¦   r§   r5  r¨   r7  r'  Ú
parse_rowsrö   )r=   r   s     r>   rî   zQuarters.get_businessN  ss   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.ÐJ€.ÔKØ‡'�'‡.�.Ð'¨{¨m€.Ô<Ø‡'�'‡,�,ÐV€,ÔWØ‡'�'‡-�-�f€-ÔØ	�‰˜Ÿ™›Ó	'Ð'r?   Nr£   r¤   Ú	show_calcc                 ó  — | j                  «       | _        | j                  j                  d«       | j                  j                  d¬«       |r| j                  j	                  ||¬«       | j                  | j                  «       |«      S )Nz¦Quarters.*,(select Name from Business where ID=Quarters.Business_ID) as Business_Name,(select Name from Quarter_Settings where ID=Quarters.Quarter_ID) as Quarter_Namez(Quarters.Business_ID,Quarters.Quarter_IDr¯   r¢   )r¦   r§   r5  r'  r¨   r8  rö   )r=   r£   r¤   r9  s       r>   ro   zQuarters.allV  sg   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.ð  zô  {Ø‡'�'‡-�-Ð@€-ÔAÙ
Ø‡7�7‡>�>˜ E€>Ô*à	�‰˜Ÿ™› yÓ	1Ð1r?   Úrowsc           	      óJ  — g }|D �]  }t        j                  |j                  d«      «      }i }t        «       j	                  t        |j                  d«      «      «      }|�rki d|j                  d«      “d|j                  d«      “d|j                  d«      “d|j                  d«      “d|j                  d«      “d	|j                  d	«      “d
|j                  d
«      “d|j                  d«      “d|j                  d«      “dt        |j                  d«      «      t        |j                  d«      «      z  “d|j                  d«      “d|j                  dd«      “dt        |j                  d«      «      t        |j                  d«      «      z  “d|j                  d«      “d|j                  d«      “d|j                  d«      “}|s5|j                  d«      r$t        |j                  dd«      «      dkD  rd|d<   nd|d<   ||d<   |j                  |«       �Œ |S )NÚcalcrê   Ústock_priceÚpr_scorer  r  Úcapital_startÚcapital_endÚrevenueÚexpense_listrÎ   Úunits_on_hand_startÚinventory_value_startrè   Úunits_on_handr   rÙ   Úunits_producedÚ
units_soldÚprofitrH   Fz	.editableT)	r¿   r   r:   rï   r  r   r   rW   rn   )r=   r;  r9  r­   Úrr=  ÚcdataÚ	qsettingss           r>   r8  zQuarters.parse_rows_  s1  € Ø€!Øó €aÜ
�-‰-˜Ÿ™˜f›Ó
&€4Ø€5äÓ!×(Ñ(¬¨1¯5©5°Ó+>Ó)?Ó@€9Ú
ðØ�4—8‘8˜MÓ*ðà�—‘˜Ó$ðð �I—M‘M &Ó)ðð �T—X‘X˜oÓ.ð	ð
 �4—8‘8˜MÓ*ðð ˆt�x‰x˜	Ó"ðð �D—H‘H˜^Ó,ðð �—‘˜Ó$ðð ˜4Ÿ8™8Ð$9Ó:ðð œQ˜tŸx™x¨Ó4Ó5¼¸$¿(¹(ÐCXÓ:YÓ8ZÑZðð �T—X‘X˜oÓ.ðð �—‘˜+ aÓ(ðð ”q˜Ÿ™ +Ó.Ó/´!°D·H±H¸_Ó4MÓ2NÑNðð �d—h‘hÐ/Ó0ðð �$—(‘(˜<Ó(ðð  ˆd�h‰h�xÓ ð!€Eñ& ˜Ÿ™˜fœ¬#¨a¯e©e°F¸2Ó.>Ó*?ÀÒ*AØ€A€k‚Nà€A€k�Nà€1€V�9Ø‡8�8ˆA†;ð?ð@ 
€(r?   )rH   NF)F)r@   rA   rB   rÕ   rQ   r{   r³   ræ   r´   r/  Úboolr2  r|   rî   rP   r   ro   r   r8  rC   r?   r>   rí   rí   :  sœ   … Ø
€€CƒØ	€ð�Có ð Cð ¨Dó ð
$ 3ð $°#ð $¸$ó $ð
( 3ð (¨4ó (ñ2�Cð 2 ¨$¡ð 2Àð 2ÐRVó 2ñ"˜$ð "¨ð "¸ô "r?   rí   c                   ó   — e Zd Zdefd„Zy)Ú
Reports_PLrF   c                 ó   — i S ©NrC   r<   s    r>   ÚgeneratezReports_PL.generate„  s   € Ø	€)r?   N)r@   rA   rB   r´   rR  rC   r?   r>   rO  rO  ƒ  s   „ ð�tô r?   rO  c                   ó   — e Zd Zdedefd„Zy)ÚClient_Dashboardr	  rF   c           	      óR  — t        «       }t        «       j                  |¬«      }|t        «       j	                  |«      d|j                  «       |j                  |«      t        «       j                  «       dt        «       j                  «       idœ}|j                  d«      sd|d<   |S )Nrü   Ú	DashboardÚPL)rÓ   ÚPlanÚStateÚQuarter_selectrï   ÚScheduleÚReportsrÓ   Úbus_initrY  )rï   rÓ   r:   rí   rî   r#   r  r[  ÚcurrentrO  rR  )r=   r	  Ú
q_settingsr  rT   s        r>   r”   zClient_Dashboard.summaryˆ  s’   € ÜÓ!€*Ü‹Z�^‰^˜vˆ^Ó&€(àÜ
‹*×
!Ñ
! &Ó
)ØØ×&Ñ&Ó(Ø ×,Ñ,¨VÓ4Ü‹j× Ñ Ó"àŒ‹×	Ñ	Ó	 ðñ

€$ð �(‰(�:Ô
Ø€4ˆ�=à	€+r?   N)r@   rA   rB   rQ   r´   r”   rC   r?   r>   rT  rT  ‡  s   „ ð˜ð  ô r?   rT  c                   óZ   — e Zd Zd ZdZdededefd„Zdede	fd„Z
d„ Zdd
edee   defd„Zy	)ÚUsersr~   ÚuserÚpasswordrF   c                 ó–   — | j                  «       | _        | j                  j                  d||g¬«       | j                  «       xs i }|S )NzUser=%s and Password=%sr¢   r¥   )r=   rb  rc  rJ  s       r>   Úauthz
Users.authž  s>   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð0¸¸X°€.ÔGØ
‡o�oÓÒ˜2€!Ø	
€(r?   ÚUserIDc                 óì   — | j                  «       | _        | j                  j                  d|g¬«       d| j                  _        | j	                  «       xs i }t        |j                  d«      «      dkD  S )Nr¡   r¢   Tr   r   )r¦   r§   r¨   r,  r©   r   r:   )r=   rf  rJ  s      r>   Úcheck_businesszUsers.check_business¤  sZ   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�w f X€.Ô.Ø€$‡'�'„-Ø
‡o�oÓÒ˜2€!Ü	
ˆ1�5‰5�ÓÓ	  Ñ	"Ð"r?   c                 ó¦   — t        |j                  d«      t        «      r(t        j                  |j                  dd«      «      |d<   t        |«      S )NÚGroupsrH   )Ú
isinstancer:   rP   r¿   r   r   rX   s     r>   Úmk_rowzUsers.mk_row«  s<   € Ü�—‘˜Ó"¤3Ô'Ü—M‘M $§(¡(¨8°BÓ"7Ó8€4ˆ�>Ü	ˆT‹Ðr?   Nr£   r¤   c                 óÔ   — | j                  «       | _        | j                  j                  d¬«       |r| j                  j                  ||¬«       t	        | j                  «       «      S )NzZUsers.*,(select Name from Business where Business.ID = Users.Business_ID) as Business_Namer4  r¢   )r¦   r§   r5  r¨   r|   rö   r#  s      r>   ro   z	Users.all°  sJ   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ðt€.ÔuÙ
Ø‡7�7‡>�>˜ E€>Ô*Ü	ˆd�k‰k‹mÓ	Ðr?   r)  )r@   rA   rB   r³   rý   rP   r´   re  rQ   rM  rh  rl  r   r|   ro   rC   r?   r>   ra  ra  ›  s\   „ Ø	€Ø€ð�Cð  ð ¨ó ð# ð #¨ó #òñ
�Cð  ¨$¡ð ¸ô r?   ra  c                   óš   — e Zd Zg d¢g d¢g d¢dœZddddœZg d¢ZdZd	„ Zed
e	fd„«       Z
ed
efd„«       Zed
e	fd„«       Zed
efd„«       Zy)Ú	Eval_Data)
ÚAndersonÚThompsonÚMartinezÚWilliamsÚBrownÚMillerÚDavisÚGarciaÚ	RodriguezÚWilson)
ÚJamesÚMichaelÚDavidÚJohnÚRobertÚDanielÚMatthewÚChristopherÚAndrewÚJoseph)
ÚEmilyÚSophiaÚOliviaÚAvaÚIsabellaÚMiaÚ	CharlotteÚAmeliaÚHarperÚEvelyn)ÚlastÚmaleÚfemaleé   )r   r   Úbody)Ú
ManagementÚLaborÚ	Marketingr0   r�  c                 óN   — t        j                  dd«      rd| _        y d| _        y )Nr   rÔ   r�  r�  )ÚrandomÚ	randrangeÚgenderr<   s    r>   Ú__init__zEval_Data.__init__ã  s   € Ü ×*Ñ*¨1¨QÔ/�€$…+°X€$…+r?   rF   c                 ón   — | j                   t        j                  dt        | j                   «      «         S rV   )Údeptsr—  r˜  rW   r<   s    r>   Ú
departmentzEval_Data.departmentæ  s&   € à	�‰”F×$Ñ$ Q¤s¨4¯:©:£Ó7Ñ	8Ð8r?   c                 ó.   — t        j                  dd«      S )Nr   éC   )r—  r˜  r<   s    r>   ÚagezEval_Data.ageê  s   € ä	×	Ñ	˜"˜RÓ	 Ð r?   c           	      ó"  — | j                   | j                     t        j                  dt	        | j                   | j                     «      «         dz   | j                   d   t        j                  dt	        | j                   d   «      «         z   S )Nr   ú rŽ  )Únamesr™  r—  r˜  rW   r<   s    r>   rZ   zEval_Data.nameî  s¦   € à	�‰�D—K‘KÑ	 ¤×!1Ñ!1°!´C¸¿
¹
À4Ç;Á;Ñ8OÓ4PÓ!QÑ	RÐUXÑ	XÐ[_×[eÑ[eÐflÑ[mÔnt×n~Ñn~ð  @Aô  BEð  FJ÷  FPñ  FPð  QWñ  FXó  BYó  oZñ  \[ñ  
[ð  [r?   c                 óˆ   — d}| j                   d   › t        j                  d|«      › �dt        j                  d|«      › �dœS )Nr‘  r   Úb)Úheadr’  )r™  r—  r˜  )r=   Úcs     r>   ÚprofilezEval_Data.profileò  sL   € à€!à�[‰[˜‰^ÐœV×-Ñ-¨a°Ó2Ð3Ð
4ØŒf×Ñ˜q Ó#Ð$Ð
%ñ
ð r?   N)r@   rA   rB   r£  Úprofilesrœ  r™  rš  rÑ   rP   r�  rQ   r   rZ   r´   r¨  rC   r?   r>   ro  ro  ¸  s¥   „ ò
ò
òñ3%
€ðL �q Ñ"€Ú	8€Ø
€ò>ð ð9˜ò 9ó ð9ð ð!�#ò !ó ð!ð ð[�3ò [ó ð[ð ð�dò ó ñr?   ro  c                   ó@   ‡ — e Zd ZdZˆ fd„Zedededefd„«       Zˆ xZ	S )ÚEmployee_EvaluationÚEmployee_Evaluationsc                 óœ   •— t        |j                  d«      t        «      rt        |j                  d«      «      |d<   t        ‰| �  |«       y )NÚProfile)rk  r:   rP   r   r±   rš  )r=   rT   r²   s     €r>   rš  zEmployee_Evaluation.__init__ý  s:   ø€ Ü�—‘˜Ó#¤CÔ(Ü˜TŸX™X iÓ0Ó1€4ˆ	�?Ü�'Ñ�4Õr?   r	  Ú
quarter_idrF   c                 óŠ   — t        «       }|||j                  |j                  |j                  |j                  ddœ} | |«      S )Na  Over the previous quarter, the employee demonstrated a strong work ethic and consistently met expectations when focused on assigned tasks. While they were frequently late to the office due to ongoing personal obligations, once present they showed determination and a willingness to put in extra effort to complete their work. There were occasional lapses in concentration, particularly during periods when personal matters required attention, which at times slowed progress or required follow-up. Despite these challenges, the employee remained reliable in delivering core responsibilities and was receptive to feedback. With improved time management and fewer external distractions, their overall performance has the potential to increase significantly in the coming quarter.)r   rê   r  ÚAgeÚ
Departmentr®  ÚPerformance)ro  rZ   r   r�  r¨  )Úclsr	  r¯  ÚevrT   s        r>   ÚgenzEmployee_Evaluation.gen  sF   € ô ƒ{€"àØØ
�'‰'Ø	�‰Ø—‘Ø�Z‰Zð \ñ
€$ñ 
ˆT‹Ðr?   )
r@   rA   rB   r³   rš  ÚclassmethodrQ   r   r¶  rµ   r¶   s   @r>   r«  r«  ú  s6   ø„ à	€ôð
 ð�Cð  3ð ¨4ò ó ôr?   r«  c                   óh   — e Zd Zd ZdZdedee   fd„Zdededee   fd„Z	de
defd	„Zdedede
fd
„Zy)r¬  r«  r‡   rF   c                 óš   — | j                  «       | _        | j                  j                  d|g¬«       t        | j	                  «       «      S r    ©r¦   r§   r¨   r|   rö   rª   s     r>   r:   zEmployee_Evaluations.get  s6   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�w b T€.Ô*Ü	ˆd�k‰k‹mÓ	Ðr?   r	  r¯  c                 óœ   — | j                  «       | _        | j                  j                  d||g¬«       t        | j	                  «       «      S )Nr1  r¢   rº  )r=   r	  r¯  s      r>   Úget_quarterz Employee_Evaluations.get_quarter  s:   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð9ÀÈ
Ð@S€.ÔTÜ	ˆd�k‰k‹mÓ	Ðr?   rT   c                 ó   — t        |«      S rQ  )r«  rX   s     r>   rl  zEmployee_Evaluations.mk_row   s   € Ü	˜TÓ	"Ð"r?   c                 ó   — ||dœ}|S )N)r	  r¯  rC   )r=   r	  r¯  rT   s       r>   r¶  zEmployee_Evaluations.gen#  s   € Ø zÑ	2€$Ø	€+r?   N)r@   rA   rB   r³   rý   rQ   r|   r   r:   r¼  r´   rl  r¶  rC   r?   r>   r¬  r¬    sn   „ Ø	€Ø €ð�ð ˜˜c™ó ð
˜Sð ¨Cð °D¸±Ió ð
#�dð #˜só #ð�Sð  Cð ¨Dô r?   r¬  c                   ó   — e Zd Zd Zdefd„Zy)r[  rF   c                 óÄ  — | j                  «       | _        | j                  j                  d«       g }t        «       j	                  «       }| j                  «       D ]‚  }t        |d   «      j	                  «       }||z
  }|j                  «       |d<   ||z
  j                  «       dk\  |d<   |j                  › d|j                  dz  › d�|d	<   |j                  |«       Œ„ |S )
Nztimestamp descÚ	timestampÚnowr   Úfuturez Days, i  z HoursÚdelta)r¦   r§   r'  r   Úutcrö   ÚfullÚtotal_secondsÚdaysÚsecondsrn   )r=   rT   rÂ  rL   ÚdtÚtds         r>   r^  zSchedule.current)  sÉ   € Ø�L‰L‹N€$„'Ø‡'�'‡-�-Ð Ô!Ø	€$Ü‹�‰‹€#Ø�k‰k‹mò €dÜˆt�KÑ Ó!×%Ñ%Ó'€2ØˆB‰€2Ø—‘“€4ˆ�;Ø˜‘V×*Ñ*Ó,¨aÑ/€4ˆ�>Ø—g‘g�Y˜g b§j¡j°DÑ&8Ð%9¸Ð@€4ˆ�=Ø‡;�;ˆtÕðð 
€+r?   N)r@   rA   rB   r³   r|   r^  rC   r?   r>   r[  r[  '  s   „ Ø	€ð�dô r?   r[  c                   óL   — e Zd Zedeeef   fd„«       Zdedefd„Z	dedefd„Z
y)ÚRollrF   c                 ó\  — t        «       j                  «       }t        «       j                  dd¬«      }t        «       j                  dd¬«      }|j                  dkD  r(|j                  d¬«       |j                  d¬«       ||fS |j                  d¬«       |j                  d¬«       ||fS )	Nr   )ÚminuteÚsecondé;   é   )Úhouré   rÔ   é   )r   rÅ  ÚreplacerÓ  )r=   rÂ  ÚstartÚends       r>   ÚperiodzRoll.period:  s”   € ä‹�‰‹€#Ü
‹(×
Ñ
 !¨1Ð
Ó
-€%Ü‹×Ñ ¨"ÐÓ-€#Ø‡X�Xˆb‚[Ø‡=�=�b€=ÔØ‡;�;�B€;ÔØ�ˆ+Ðà‡=�=�a€=ÔØ‡;�;�B€;ÔØ�ˆ+Ðr?   r	  c                 óÌ   — g }| j                   \  }}| j                  «       | _        | j                  j                  d||g¬«       | j                  j	                  d|g¬«       |S )Nz]left join Roll on Roll.Student_ID = Students.ID and Roll.timestamp>=%s and Roll.timestamp<=%s)r7  r¤   r6  r¢   )rÙ  r¦   r§   r7  r¨   )r=   r	  ro   r×  rØ  s        r>   Ú
get_periodzRoll.get_periodH  sh   € Ø
€#Ø—‘�+€5ˆØ�L‰L‹N€$„'Ø‡'�'‡,�,Ðsð  }Bð  CFð  |G€,ô  HØ‡'�'‡.�.Ð'¨v¨h€.Ô7Ø	€*r?   c                 óp   — g }| j                  «       | _        | j                  j                  d|g¬«       |S )Nr6  r¢   )r¦   r§   r¨   )r=   r	  ro   s      r>   ÚstudentszRoll.studentsP  s0   € Ø
€#Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð'¨v¨h€.Ô7Ø	€*r?   N)r@   rA   rB   rÑ   ÚtuplerP   rÙ  rQ   r|   rÛ  rÝ  rC   r?   r>   rÍ  rÍ  8  sI   „ à
ð�E˜#˜c˜'‘Nò ó ðð˜Cð  Dó ð˜#ð  $ô r?   rÍ  c                   ó   — e Zd Zdefd„Zy)r\  rF   c                 ól   — i }t        «       j                  «       D ]  }|||j                  d«      <   Œ |S )Nr  )rï   ro   r:   )r=   rT   Úquarters      r>   ÚoutlookzReports.outlookW  s:   € Ø	€$Ü!Ó#×'Ñ'Ó)ò '€gØ&€4ˆ�‰�FÓÒð'à	€+r?   N)r@   rA   rB   r´   râ  rC   r?   r>   r\  r\  V  s   „ ð�dô r?   r\  c                   ó„  — e Zd ZU eed<   eed<   eed<   eed<   eed<   dedefd„Zedefd„«       Z	edefd	„«       Z
edefd
„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zdeeef   fd„Zdeeef   fd„Zdedefd„Zdefd„Zdedefd„Zd„ Zdedededefd„Zddefd„Zy) ÚBase_SimulatorÚquarter_settingsÚ_global_settingsrá  rå   Ú_logc                 óV  — t        «       j                  «       j                  |j                  d«      «      xs i | _        t	        «       j                  «       | _        || _        t        |«      | _        | j                  j                  d«      | _	        t        t        «      | _        t        |j                  d«      «      | _        t        | j                  j                  dd«      «      | _        t        | j                  t!        | j                  j                  d«      «      z  «      | _        t!        | j                  j                  d«      «      | _        t        | j'                  d«      «      | _        | j$                  | j(                  z  | _        t        | j                  j                  d«      xs d«      | _        t        | j'                  d	«      «      | _        t1        | j'                  d
«      «      | _        t        | j                  j                  d«      «      | _        | j7                  «       \  | _        | _        t!        | j                  j                  d«      «      xs d| _        t!        | j                  j                  d«      «      | _        t!        | j>                  | j<                  z   «      | _         d| _!        | jE                  | j>                  «      | _#        t        d«      | _$        t        | j                  j                  d«      «      | _%        t1        | j'                  d«      «      | _&        | jL                  | _'        | jQ                  | jJ                  t        | j'                  d«      «      | jN                  ¬«      | _)        	 tU        | jR                  | jJ                  z  «      dz  | _+        tU        | jR                  | j4                  z  «      | _,        | j                  j                  dd«      | _-        | j]                  «        y #  d| _+        Y ŒdxY w)Nrê   r¼   rÂ   Ú
Labor_Costr–   rë   ÚEmployee_SalesÚrdÚ	RD_MedianÚRD_ROIr�   rÅ   r   r×   Ú	marketingÚMarketing_ROIÚMarketing_Median©r   rÈ   r  r½   Ú
plant_sizerH   )/rï   rž   r:   rå  rŠ   ræ  rá  r¸   rå   rŒ   r	   r|   rç  r   rÆ   Ú
labor_rater   Úwagesrë   ÚglobalsÚemployee_potentialÚemployee_salesÚrd_spendÚ	rd_medianr   Úrd_coefr�   Ú
calc_otherÚotherr?  rF  rG  Úunits_totalrH  Úcalc_prod_costÚ	prod_costrB  rî  Úmarketing_roiÚmarketing_effÚcalc_effÚmarketing_salesÚroundÚmarketing_resultÚmarketing_unitsrò  Úcalc_revenue)r=   rá  rå   s      r>   rš  zBase_Simulator.__init__e  s  € Ü*Ó,×2Ñ2Ó4×8Ñ8¸¿¹À\Ó9RÓSÒYÐWY€$ÔÜ)Ó+×1Ñ1Ó3€$ÔØ€$„,Ü˜3Ó€$„(Ø—‘—‘˜iÓ(€$„,Üœ$Ó€$„)Ü�3—7‘7˜9Ó%Ó&€$„,Ü�d×+Ñ+×/Ñ/°¸TÓBÓC€$„/Ü�—‘¤1 T§\¡\×%5Ñ%5°kÓ%BÓ#CÑCÓD€$„*Ü�T—\‘\×%Ñ% kÓ2Ó3€$„.Ü˜dŸl™lÐ+;Ó<Ó=€$ÔØŸ™¨×)@Ñ)@Ñ@€$Ôä�D—L‘L×$Ñ$ TÓ*Ò2¨dÓ3€$„-Ü�T—\‘\ +Ó.Ó/€$„.Ü�4—<‘< Ó)Ó*€$„,Ü�—‘×!Ñ! 'Ó*Ó+€$„*ð "Ÿ_™_Ó.Ñ€$„*ˆTŒ]Ü˜Ÿ™Ÿ™ gÓ.Ó/Ò4°1€$ÔÜ˜$Ÿ,™,×*Ñ*¨7Ó3Ó4€$ÔÜ�t×*Ñ*¨T×-?Ñ-?Ñ?Ó@€$ÔØ€$„/à×&Ñ& t×':Ñ':Ó;€$„.Ü�4“€$„,ä�T—\‘\×%Ñ% kÓ2Ó3€$„.Ü˜Ÿ™ oÓ6Ó7€$ÔØ×*Ñ*€$ÔàŸ™¨T¯^©^Ä1ÀTÇ\Á\ÐRdÓEeÓCfÐlp×l~Ñl~˜Ó€$ÔðÜ  ×!5Ñ!5¸¿¹Ñ!FÓGÈ#ÑM€4Ôô ˜t×3Ñ3°d·j±jÑ@ÓA€$ÔØ×)Ñ)×-Ñ-¨l¸2Ó>€$„/Ø×ÑÕøð	Ø€4Öús   Î*P Ð	P(rF   c                 óF   — t        | j                  | j                  z  «      S rQ  )r   rè   rG  r<   s    r>   Ú
manuf_costzBase_Simulator.manuf_cost“  s   € ä	
ˆ4�>‰>˜D×/Ñ/Ñ/Ó	0Ð0r?   c                 óf   — t        | j                  «      }t        |j                  «       xs d«      S )Nr–   )r¸   rå   r   rÀ   )r=   rå   s     r>   rè   zBase_Simulator.unit_cost—  s)   € ä�d—h‘hÓ€#Ü	�×"Ñ"Ó$Ò,¨Ó	-Ð-r?   c                 óF   — | j                  «       \  }}|xs t        d«      S rV   )rû  r   )r=   r   Ú_s      r>   Údilemma_costzBase_Simulator.dilemma_costœ  s!   € à�?‰?Ó�&€$€qØ	Ò	”˜“Ðr?   c                 óæ   — | j                   j                  d«      xs d}	 t        «       j                  |«      }t	        |«      S # t
        $ r"}t        d|¬«       t	        d«      cY d }~S d }~ww xY w)NÚoverheadrH   zTroubling finding fixed costr‚   r   )rá  r:   r8   r   r   re   r   )r=   Útierr   rg   s       r>   Ú
fixed_costzBase_Simulator.fixed_cost¡  s]   € à
�,‰,×
Ñ
˜:Ó
&Ò
,¨"€$ðÜ
‹*�/‰/˜$Ó
€4Ü
ˆD‹'€>øÜ	ò ÜÐ-°4Õ8Ü
ˆA‹$…;ûðús   ¡#A Á	A0ÁA+Á%A0Á+A0c                 ó  — | j                   j                  d«      dk(  rt        d«      S | j                   j                  d«      dk(  rt        d«      S | j                   j                  d«      dk(  rt        d«      S t        d«      S )	Nrò  ÚSmalliè  ÚMediamr%   ÚLarger   r–   )rå  r:   r   r<   s    r>   Ú
plant_costzBase_Simulator.plant_cost«  sq   € à	×Ñ×Ñ˜|Ó,°Ò7Ü
ˆE‹(€?Ø×Ñ× Ñ  Ó.°(Ò:Ü
ˆE‹(€?Ø×Ñ× Ñ  Ó.°'Ò9Ü
ˆE‹(€?Ü	
ˆ4‹€.r?   c                 óv   — | j                   | j                  | j                  | j                  | j                  dœS )N)z
Labor CostzProduction Costr•  ÚFixedÚOther)rô  rÿ  rî  r  r  r<   s    r>   rC  zBase_Simulator.expense_listµ  s3   € ð —
‘
Ø—^‘^Ø�~‰~Ø�?‰?Ø×Ññ
ð r?   c                 ó^   — t        | j                  j                  «       «      }t        |«      S rQ  )ÚsumrC  Úvaluesr   )r=   rË   s     r>   rÎ   zBase_Simulator.expenses¿  s$   € ä
ˆd×Ñ×&Ñ&Ó(Ó
)€%Ü	
ˆ5‹€/r?   c                 ó¢   — | j                   }| j                  }| j                  }| j                  |||¬«      }t	        t        ||z  «      d«      S )Nrñ  rÄ   )rø  rù  rú  r  r  r   )r=   ÚspendrÈ   r  Úresults        r>   Úrd_effzBase_Simulator.rd_effÄ  sG   € à
�-‰-€%Ø�>‰>€&Ø	�‰€$Ø�=‰=˜u¨F¸ˆ=Ó=€&Ü	Œq�˜&‘Ó! !Ó	$Ð$r?   c                 ó’  — t        | j                  j                  d«      xs d«      }t        | j                  j                  d«      xs d«      }t	        d«      }d}d}|D ]J  }	 |t        «       j                  |||   ¬«      z  }|t        «       j                  |||   ¬«      z  }|dz  }ŒL ||fS # t        $ r
}Y d }~Œ_d }~ww xY w)Nr;   rH   r^   r   )r^   r_   rÔ   )	r   rå  r:   rá  r   r;   r   rj   re   )r=   rk   Úactionsr   rj   r   r^   rg   s           r>   rû  zBase_Simulator.calc_otherÍ  sÊ   € Ü�T×*Ñ*×.Ñ.¨zÓ:Ò@¸bÓA€(Ü�T—\‘\×%Ñ% iÓ0Ò6°BÓ7€'Ü	
ˆ1‹€$Ø€"Ø€!Øò 	€gð	ØŒH‹J�O‰O G°7¸1±:ˆOÓ>Ñ>€DØŒ(‹*�-‰- ¨w°q©zˆ-Ó
:Ñ:€BØ€q�D�Að	ð 
ˆbˆ€.øô ò 	Üûð	ús   Á&AB3Â3	CÃCc                 óà  — t        | j                  j                  d«      «      }t        | j                  j                  d«      «      }d}d}d}| j                  j                  d«      xs g D ]r  }t        j                  |i «      j                  di «      j                  ||   «      }t        d|¬«       |sŒK||j                  d«      z  }||j                  d«      z  }Œt t        |«      |fS )	Nr^   r   r;   r#   zFound detailr‚   r   r    )r   rá  r:   rå  r\   r   r   )r=   rk   Úrespr   rË   rj   Úproblemr   s           r>   Úcalc_other_oldzBase_Simulator.calc_other_oldß  sØ   € Ü�T—\‘\×%Ñ% iÓ0Ó1€(Ü	�—‘×!Ñ! )Ó,Ó	-€$Ø€!Ø
€%Ø€"Ø×&Ñ&×*Ñ*¨:Ó6Ò<¸"ò "€gÜ�L‰L˜ Ó$×(Ñ(¨°2Ó6×:Ñ:¸4À¹7ÓC€6Üˆ~ 6Õ*ÚØ	ˆV�Z‰Z˜ÓÑ€EØˆ&�*‰*�[Ó
!Ñ!�Bð"ô 
�‹˜Ð	Ðr?   r×   c                 ó2   — t        || j                  z  «      S rQ  )r   rè   )r=   r×   s     r>   rþ  zBase_Simulator.calc_prod_costî  s   € Ü	
ˆ5�4—>‘>Ñ!Ó	"Ð"r?   c                 ó*  — t        d| j                  ¬«       t        t        | j                  | j
                  z  «      «      }|| j                  kD  r| j                  | _        n|| _        | j
                  | j                  z  | _        | j                  S )NzCalc Units Totalr‚   )r   rý  r   r  r  r�   rH  rB  )r=   Ú	potentials     r>   r  zBase_Simulator.calc_revenueñ  sq   € ÜÐ  d×&6Ñ&6Õ7Ü”�d×*Ñ*¨T¯Z©ZÑ7Ó8Ó9€)à�×!Ñ!Ò!Ø×%Ñ%€4…?à€4„?à—‘˜dŸo™oÑ-€$„,Ø	�‰Ðr?   rE   rq   c                 ó@   — | j                   |   j                  |«       y rQ  )rç  rn   )r=   rE   rq   s      r>   ÚlogzBase_Simulator.logý  s   € Ø‡)�)ˆC�.×Ñ˜Õr?   c                 ó.  — d}t        «       }|j                  | j                  j                  dd«      «      }t	        j
                  || j                  «      }|dz  |z  }|dk  r| }|dz  }|dz  }|dk  rd}t        d|| j                  ||dœ¬	«       |S )
Nr(   r¼   rH   r½   r€   g      ø?z	Price Eff)rÈ   r�   rÄ  Úeffr‚   )rŠ   r™   rå   r:   r¿   Úchanger�   r   )r=   Úmax_effr’   rÈ   rÄ  r-  s         r>   Úcalc_price_effzBase_Simulator.calc_price_eff   s¢   € Ø€'ÜÓ€(Ø× Ñ  §¡§¡¨i¸Ó!;Ó<€&Ü
�,‰,�v˜dŸj™jÓ
)€%à
�‰)�wÑ	€#àˆ2‚XØ
ˆ€3àˆ�(€#Øˆ�)€#àˆ"‚WØ	€3äˆkØØ�:‰:ØØ	ñ	 õ ð 
€*r?   r   rÈ   r  c           	      ó¤  — | j                  «       }t        |dz  «      }t        |«      }d}d}d}	|dkD  rI||k  r|}|dz  |z   }
t        ||
z  «      }|	|z  }	||z  }|dk  rd}||z  }|dkD  rd}d}|dk  rd}|dkD  rŒIt        | j                  j                  d«      «      dz  }|	}|	|z  }	|	|	|z  z   }t        d	||	|||d
œ¬«       t        |«      S )Nr   éU   r‘  r–   r½   r   r€   ÚEconomic_StrengthzPrice Efficiency)ÚototalrË   ÚstrengthÚ	eff_totalÚ	price_effr‚   )r0  r   Úabsr   rå  r:   r   r   )r=   r   rÈ   r  r7  Úc_sizerJ  r-  ÚincrË   Úeff_rateÚcvalr5  r4  r6  s                  r>   r  zBase_Simulator.calc_eff  s  € Ø×!Ñ!Ó#€)Üˆf�r‰kÓ€&Üˆƒh€!Ø
€#Ø	€#Ø
€%Ø	ˆDŠØˆ&‚jØ€Fà�3‰w˜$Ñ€8Ü
ˆf�xÑÓ
 €4ØˆD�=€5Ø€f�9€1àˆ!‚eØ	€Aàˆ�8€3Ø	ˆ#‚gØ
€CØ
€Cà	ˆB‚hØ
€Cð% 	
ˆD‹ô* ˆt×$Ñ$×(Ñ(Ð)<Ó=Ó>ÀÑD€(Ø€&Øˆ8Ñ€%Ø�u˜Y‘Ñ'€)ÜÐ ØØØØØñ'õ ô 
ˆ9‹Ðr?   c                 óX   — | j                   j                  ||«      j                  d«      S )Nr   )ræ  r:   )r=   rE   Údefaults      r>   rõ  zBase_Simulator.globalsB  s&   € Ø	×	Ñ	×	"Ñ	" 3 wÓ	/×	3Ñ	3°GÓ	<Ð<r?   Nr(  )r@   rA   rB   r´   r{   r¸   rš  rÑ   r   r	  rè   r  r  r  rC  rÎ   r  r   rÞ  rQ   rû  r&  rþ  r  rP   r   r+  r0  r  rõ  rC   r?   r>   rä  rä  ^  s˜  … ØÓØÓØ	ƒØ	ƒØ
ƒð(˜4ð ( Mó (ð\ ð1˜ò 1ó ð1ð ð.˜ò .ó ð.ð ð˜7ò ó ðð ð˜ò ó ðð ð˜ò ó ðð ð˜4ò ó ðð ð�wò ó ðð ð%�Uò %ó ð%ð˜˜w s˜{Ñ+ó ð$˜U 7¨3 ;Ñ/ó ð#˜sð # wó #ð
˜7ó 
ð�#ð ˜#ó òð2'˜ð '¨ð '°Uð '¸wó 'ñR= Sô =r?   rä  c                   ó.   ‡ — e Zd Zdedefˆ fd„Zd„ Zˆ xZS )ÚQ_Simrá  rå   c                 ó(   •— t         ‰| �  ||¬«       y )N©rá  rå   )r±   rš  )r=   rá  rå   r²   s      €r>   rš  zQ_Sim.__init__F  s   ø€ Ü�'Ñ˜7 sÐÕ+r?   c           
      ó¸  — | j                   | j                  z
  | j                  z   }| j                  | j                  z
  }| j
                  j                  dd«      }t        «       j                  |||¬«      }i d|“d| j                  “d| j                  | j                  | j                  dœ“d| j                  | j                  t        | j!                  d«      «      t#        | j!                  d	«      «      | j$                  d
œ“d| j                  “d| j&                  “d| j                  “d| j(                  “d| j                   “d| j                   | j                  z
  “d| j                   | j                  z
  | j                  z   “d| j                  “d|“d| j*                  “d| j,                  “d| j.                  “d| j                  “| j0                  ||dœ¥S )Nr¼   rH   ©r×   rŒ   rÆ   r?  Úlabor)rë   Ú
labor_costÚsalesrî  rð  rï  )r  r-  rÈ   ÚceofrG  rô  r�   rÎ   rC  rB  rI  rÆ   r@  rA  r	  rè   rG  rH  )rD  rF  r>  )rB  rÎ   rÆ   rý  rH  rå   r:   rÓ   rÝ   r?  rë   rô  r÷  rî  r  r   rõ  r   r  r�   rC  r	  rè   rG  rF  )r=   rÆ   rF  rŒ   r>  s        r>   r=  z
Q_Sim.calcJ  só  € Ø�\‰\˜DŸM™MÑ)¨T¯\©\Ñ9€'Ø×"Ñ" T§_¡_Ñ4€-Ø�H‰H�L‰L˜ 2Ó&€'ä“
×+Ñ+°MÈ'ÐZaÐ+Ób€+ð
ØˆWð
àˆd�m‰mð
ð Ø—‘Ø—‘Ø×Ññð
ð Ø�N‰NØ
×
Ñ
Üˆt�|‰|Ð.Ó/Ó0ÜˆT�\‰\˜/Ó*Ó+Ø× Ñ ñð
ð ˆ4�:‰:ð
ð  ˆ4�:‰:ð!
ð" ˆd�m‰mð#
ð$ �$×#Ñ#ð%
ð& ˆT�\‰\ð'
ð( ˆD�L‰L˜4Ÿ=™=Ñ(ð)
ð* ˆd�l‰l˜TŸ]™]Ñ*¨d¯l©lÑ:ð+
ð, �4—<‘<ð-
ð. �ð/
ð0 �—‘ð1
ð2 ˆt�~‰~ð3
ð4 �D×'Ñ'ð5
ð6 �—‘ð7
ð8 ×+Ñ+Ø Øò=
ð r?   )r@   rA   rB   r´   rš  r=  rµ   r¶   s   @r>   r@  r@  E  s   ø„ ð,˜4ð , Dõ ,ö%r?   r@  c                   óD   — e Zd Zdefd„Zdedefd„Zd
dedee   defd	„Z	y)ÚSimÚbusinessc                 ó¾   — 	 t        |«      }t        |j                  «      }|dz  }|dkD  r|S y# t        $ r$}t	        d|¬«       t	        d|¬«       Y d }~yd }~ww xY w)NrÛ   r   re   r‚   zTrouble with calc stockr€   )r¸   r   rÌ   re   r   )r=   rK  rå   rq   Ústockrg   s         r>   Ú
calc_stockzSim.calc_stockr  s_   € ðÜ	�xÓ	 €3Ü	
ˆ3�?‰?Ó	€3Ø�‰;€5àˆa‚iØ€Làøä	ò Üˆ{ Õ"ÜÐ(¨hÕ7Ü
ûðús   ‚+/ ¯	A¸AÁArå   rF   c                 ó¨   — d}	 t        |d   «      dkD  sJ d«       ‚t        t        |d   «      «      }t        |«      S # t        $ r
}Y d }~yd }~ww xY w)Nr   Ú	PR_ScoreszNo PR Scores)rW   r   r  re   )r=   rå   rj   rg   s       r>   Úpr_avgz
Sim.pr_avg‚  s\   € Ø€"ðÜ
ˆc�+ÑÓ
 Ò
!Ð1 >Ó1Ð
!Ü	Œ#ˆc�+ÑÓ
Ó €2ä
ˆB‹%€<øÜ	ò Ûà	
ûðús   „9> ¾	AÁANÚtestr	  c                 ó:  — ddl m} |}i }t        «       j                  «       }t	        «       }|j                  «       }t        «       }	g }
|D ]e  } |||   j                  d«      «      xs! |j                  di «      j                  d«      ||   d<   d||   d<   d||   d	<   d||   d
<   g ||   d<   Œg t        «       j                  «       }|D �]Õ  }|j                  d«      }|j                  |«      xs i }t        ||¬«      j                  «       }||d<   |sŸ||   j                  dd«      }t        |j                  d«      «      } ||j                  d«      «      }t	        «       j                  |||¬«      |d   d<   |	j                  |j                  d«      t        j                  |«      dœ¬«       |j                  d«      }||   j                  dg «       ||   d   j                  |«       ||   j                  d |d«      «       ||   j                  d |d«      «       ||   j                  d |d«      «       ||   j                  d |d«      «       ||   dxx    ||d   j                  dd«      «      z  cc<   ||   dxx    ||d   j                  dd«      «      z  cc<   ||   dxx   t        |j                  d«      «      z  cc<   ||   dxx   t        |j                  d«      «      z  cc<   |j                  d«      ||   d<   |j                  d«      ||   d<   ||   d	xx   |j                  d «      z  cc<   ||   d   j                  |j                  d «      «       |
j                  |«       t!        d!|j                  |«      ¬"«       �ŒØ |sp|j#                  «       D ]]  \  }}| j%                  |¬#«      }|j                  ||| j'                  |«      |j                  d«      |j                  dd«      d$œ¬«       Œ_ |
|d%œS )&Nr   r»   rÃ   rß   r   rÂ   r–   rÅ   rà   rá   rP  r   rB  r=  r¼   rH   rF  rÆ   rD  r>  r‡   )r‡   r=  r  ÚquartersÚ	rev_totalÚexpense_totalrH  Ú
units_maderB  rÎ   rG  r?  zUpdating Businessr‚   )rK  )r‡   rá   rà   rÅ   rÂ   )ÚsimsÚ	bus_cache)r¿   r   rŠ   rž   rÓ   rí   r:   ro   r@  r=  r   rÝ   râ   ÚtoJSONÚ
setdefaultrn   r   rm   rN  rQ  )r=   rR  r	  r   Úpbus_idrT   Ú	gsettingsrK  rY  rT  rX  Úcb_idÚq_allrá  r  r=  rŒ   r×   rÆ   rô   rå   rM  s                         r>   rT  zSim.quartersŽ  s  € ÝØ€'Ø	€$ÜÓ×%Ñ%Ó'€)Ü‹Z€(ð �n‰nÓ€)Ü‹Z€(Ø	€$àò &€eÙ!" 9¨UÑ#3×#7Ñ#7¸Ó#?Ó!@Ò!tÀIÇMÁMÐRcÐdfÓDg×DkÑDkÐlsÓDt€9ˆUÑ�IÑØ#€9ˆUÑ�GÑØ"#€9ˆUÑ�JÑØ%&€9ˆUÑ�MÑ"Ø#%€9ˆUÑ�KÒ ð&ô ‹*�.‰.Ó
€%Øó !@€gØ�K‰K˜Ó&€6Ø�m‰m˜FÓ#Ò) r€8Ü
˜ HÔ
-×
2Ñ
2Ó
4€4Ø€7ˆ6�?Ù
Ø˜Ñ×#Ñ# I¨bÓ1€GÜˆd�h‰h�Ó'Ó(€EÙ�—‘˜Ó#Ó$€GÜ%-£Z×%@Ñ%@ÀuÐU\ÐelÐ%@Ó%m€GˆF�O�MÑ"Ø‡O�O˜wŸ{™{¨4Ó0¼¿¹ÀTÓ8JÑK€OÔLà	�‰�TÓ	€3ØˆVÑ×Ñ 
¨2Ô.ØˆVÑ�ZÑ ×'Ñ'¨Ô0àˆVÑ×Ñ ©A¨a«DÔ1ØˆVÑ×Ñ ±°!³Ô5ØˆVÑ×Ñ ©Q¨q«TÔ2ØˆVÑ×Ñ ©Q¨q«TÔ2àˆVÑ�[Ó!¡A g¨f¡o×&9Ñ&9¸)ÀDÓ&IÓ$JÑJÓ!ØˆVÑ�_Ó%©¨'°&©/×*=Ñ*=¸jÈÓ*NÓ(OÑOÓ%ØˆVÑ�\Ó"¤a¨¯©°Ó(>Ó&?Ñ?Ó"ØˆVÑ�\Ó"¤a¨¯©Ð1AÓ(BÓ&CÑCÓ"Ø $§¡¨Ó 9€9ˆVÑ�WÑØ"&§(¡(¨9Ó"5€9ˆVÑ�YÑàˆVÑ�ZÓ  D§H¡H¨ZÓ$8Ñ8Ó ØˆVÑ�[Ñ!×(Ñ(¨¯©°*Ó)=Ô>à‡;�;ˆtÔäÐ"¨	¯©°gÓ(>×?ðC!@ñF 
Ø—_‘_Ó&ò V�z€vˆcØ�O‰O SˆOÓ)€EØ‡O�O˜v°EÀdÇkÁkÐRUÓFVÐ`c×`gÑ`gÐhoÓ`pÐ|÷  }Dñ  }Dð  ENð  OSó  }Tñ  U€Oõ  VðVð  )Ñ	,Ð,r?   )FN)
r@   rA   rB   r´   rN  rQ   rQ  rM  r   rT  rC   r?   r>   rJ  rJ  q  sC   „ ð˜dó ð 
�Tð 
˜có 
ñE-˜ð E-¨(°3©-ð E-Àô E-r?   rJ  c                 ó   — d„ }|S )Nc                  óŽ   — |j                  d«      }|j                  d«      }dd|› d|› �dœ}t        j                  d|¬«       |S )	Nr~   Úlevelr   zUser z is not )rä   ÚmessageÚResponser‚   )r:   r¿   r   )ÚargcÚargvrb  rb  Úresponses        r>   rc  zauth_failed.<locals>.messageÖ  sH   € Ø	�‰�&Ó	€$Ø
�(‰(�7Ó
€%Ø U¨4¨&°¸¸Ð#@ÑA€(Ü‡+�+�J HÕ-Ø	€/r?   rC   )Úfuncrc  s     r>   Úauth_failedri  Õ  s   € òð 	€r?   rb  c                 óX   — t        j                  dd| i¬«       d}d„ }|dk(  r|S t        S )Nz	Auth argsÚLevelr‚   ÚBrentac                 ó   ‡ — ˆ fd„}|S )Nc                  óJ   •— t        j                  d| |dœ¬«        ‰| i |¤Ž y )NÚinside)re  rf  r‚   )r¿   r   )re  rf  rh  s     €r>   Úwrapperz(auth.<locals>.grab_func.<locals>.wrapperã  s#   ø€ Ü‡;�;�X¨4°tÑ#<Õ=ÙˆÐ�Ór?   rC   )rh  rp  s   ` r>   Ú	grab_funczauth.<locals>.grab_funcâ  s   ø€ ôð 
€.r?   ÚBrent)r¿   r   ri  )rb  rb  rq  s      r>   re  re  Þ  s3   € Ü‡��; W¨U OÕ4Ø€òð
 	ˆG‚OØ	Ðä	Ðr?   rÆ   )<Útypingr   r   r   r   Ú	functoolsr   r   Úcollectionsr	   Úflaskr
   r¿   r   r   r   r   r   r   r   Údbr   r   Údecimalr   Úmathr—  r´   r|   r   r{   rJ   r\   r6   r8   r;   rQ   r…   rˆ   rŠ   r¸   rÓ   rï   rí   rO  rT  ra  ro  r«  r¬  r[  rÍ  r\  rä  r@  rJ  ri  rP   re  Ú	BW_ConfigrC   r?   r>   ú<module>r{     s@  ðß .Ô .Ý %ß )Ñ )Ý #Ý Û ß .× .Ñ .ß Ý Û Û Ø˜4  S˜=Ñ)€€YÓ )ð 4ð  >lð  uzð  DGð  OSñ  TØ
,ð  7}ð  FNð  XYð  afñ  gØ
&ð  1ð  HNð  XZð  bgñ  hð€ð kð Øñvð
 ØñQð
 ØñUññð$ að Øñ1ð
 Øñ]ð
 Øñ0ññð$ Qð Øñ!ð
 Øñ5ð
 Øñ7ññð$ Ið Øñ ð
 ØñNñ	ñð Ið Øñ5ð
 Øñ7ñ	ñð kð Øñ/ð
 ØñIð
 Øñññð$ ið Øñ&ð
 Øñ.ð
 Øñññð$ Xð Øñ/ð
 Øñ$ð
 Øñññð$ xð Øñ=ð
 Øñ#ð
 Øñññð$ Zð Øñ1ð
 Øñ>ð
 ØñSññð$ Wð Øñ1ð
 Øñtð
 Øñ-ñññGt€÷lñ ÷ñ ÷$?ñ ?ðB�#ó ð�3ó ô'$�eô '$ôR"�Dô "ôHKˆuô KôZj�uô jôXGˆuô G÷Rñ ô�uô ô(ˆEô ÷:@ñ @ôD˜#ô ô0˜5ô ô*ˆuô ô"ˆ5ô ÷<ñ ÷e=ñ e=ôN*ˆNô *ôXb-ˆ%ô b-òHðˆsó ð ˆ5ð�	r?   