From 49fded7d84c0b3c4759dbad5f8e3e9f668c469a7 Mon Sep 17 00:00:00 2001 From: ganjing Date: Fri, 19 Jan 2024 11:32:42 +0800 Subject: [PATCH] fix: compilation error when nested specialization of generic types Signed-off-by: ganjing --- doc/developer-guide/generic.md | 159 ++ .../img/generic_class_specialization.png | Bin 0 -> 144702 bytes .../img/generic_function_specialization.png | Bin 0 -> 106257 bytes doc/developer-guide/img/scope_tree.png | Bin 0 -> 28846 bytes .../img/specialized_statement_gen.png | Bin 0 -> 186531 bytes doc/developer-guide/img/statement_scan.png | Bin 0 -> 165400 bytes doc/developer-guide/img/type_scan.png | Bin 0 -> 63439 bytes src/expression.ts | 1140 ++++++++++-- src/frontend.ts | 13 +- src/scope.ts | 41 +- src/semantics/builder_context.ts | 4 + src/semantics/expression_builder.ts | 5 +- src/semantics/index.ts | 42 +- src/semantics/statement_builder.ts | 61 +- src/semantics/type_creator.ts | 10 +- src/semantics/value_types.ts | 37 - src/statement.ts | 587 +++++- src/type.ts | 867 ++------- src/utils.ts | 1580 +++++++++++++++-- src/variable.ts | 4 +- tests/samples/nest_generic.ts | 196 ++ tools/validate/wamr/validation.json | 35 + 22 files changed, 3601 insertions(+), 1180 deletions(-) create mode 100644 doc/developer-guide/generic.md create mode 100644 doc/developer-guide/img/generic_class_specialization.png create mode 100644 doc/developer-guide/img/generic_function_specialization.png create mode 100644 doc/developer-guide/img/scope_tree.png create mode 100644 doc/developer-guide/img/specialized_statement_gen.png create mode 100644 doc/developer-guide/img/statement_scan.png create mode 100644 doc/developer-guide/img/type_scan.png create mode 100644 tests/samples/nest_generic.ts diff --git a/doc/developer-guide/generic.md b/doc/developer-guide/generic.md new file mode 100644 index 00000000..c4760d0c --- /dev/null +++ b/doc/developer-guide/generic.md @@ -0,0 +1,159 @@ +# Generic Type Process + +## Generic Types +At present, the processing of generic types mainly focuses on generic functions and generic classes. + +### generic function +``` +function genericFunc(param: T): T { + return param; +} + +export function numberFunc() { + console.log(genericFunc(100)); +} +``` + +### generic class +``` +class GenericClass { + x: X; + + constructor(x: X) { + this.x = x; + } + echo(param: X) { + return param; + } +} + +const a = new GenericClass('string'); +console.log(a.echo('hello world')); +``` + +## Type Process +This compiler will perform multiple scans during the `syntax` processing stage, the processing of types runs through these scans. +After the `syntax` processing stage, basic types (such as ***number***, ***string***) will be passed directly to the next processing stage; complex types (such as ***class***, ***function***) will generate `Scope`s (such as ***ClassScope***, ***FunctionScope***) for processing in the `semantic` processing stage. +The creation of each `Scope` relies on the corresponding ***DeclarationNode*** in AST tree. Take the following case as an example to explain how the compiler processes generic types. + +- - - + +``` +// example.ts +function genericFunc(param: T): T { + return param; +} + +class GenericClass { + x: X; + + constructor(x: X) { + this.x = x; + } + echo(param: X) { + return param; + } +} + +const ret = genericFunc(100); +console.log(ret); + +const a = new GenericClass('string'); +const echoWord = a.echo('hello world'); +console.log(echoWord); +``` +- - - + +### Scope Scan +Starting from the root node of the syntax tree, traverse the entire AST: +- when a ***SourceFile*** node is scanned, a `GlobalScope` is created +- when a ***ClassDeclaration*** node is scanned, a `ClassScope` is created +- when a ***FunctionDeclaration*** node is scanned, a `FunctionScope` is created + +After this scan, the compiler will create a scope tree with `GlobalScope` as the root for each ts source file to organize the file content. + +
+ +
+ +- - - + +### Type Scan +In this scanning phase, the compiler mainly processes the following nodes in the AST: +- **VariableDeclarationNode**: create a type based on the initialization expression of the variable +- **Parameter**: create a type based on the type information of the parameter +- **ClassDeclarationNode**: create a `TSClass` type +- **InterfaceDeclarationNode**: create a `TSInterface` type +- **FunctionDeclarationNode**: create a `TSFunction` type + +After creating a new type, the type information will be stored in parent scope's ***namedTypeMap***. + +
+ +
+ +- - - + +### Variable scan +In the variable scan phase, the compiler will analyze and process the ***VariableDeclarationNode*** and ***Parameter*** starting from the root of the AST. At this time, the specialization of generic types may be performed. + +- - - + +#### Specialization of Generic Function +When processing the global variable `const ret = genericFunc(100);`, the specialization of the generic function will be performed. + +``` +The time for specializing a generic function is when the function is called. +``` + +Specialization of generic functions mainly performs the following two operations: +- generate a new `TSFunction` type based on the type arguments and the generic `TSFunction` type +- generate a new `FunctionScope` based on the type arguments and the generic `FunctionScope` + +
+ +
+ +The parameters and local variables in the new `FunctionScope` will not be processed at this time. We will process them uniformly when processing statements. + +- - - + +#### Specialization of Generic Class +When processing the global variable `const a = new GenericClass('string');`, the specialization of the generic class will be performed. + +``` +The time for specializing a generic class is when creating an class instance. +``` + +Specialization of generic classes mainly performs the following two operations: +- generate a new `TSClass` type based on the type arguments and the generic `TSClass` type +- generate a new `ClassScope` based on the type arguments and the generic `ClassScope` + +
+ +
+ +- - - + +### Statement Scan +In this scanning phase, the compiler generates the statements in `FunctionScope` based on the content of **FunctionDeclarationNode**. + +
+ +
+ +- - - + +Since the specialized function does not have a corresponding **FunctionDeclarationNode** on the AST tree, the generation of its statements relies on the generic `FunctionScope`: +- generate a specialized **ParameterArray** based on **ParameterArray** and type arguments of generic `FunctionScope` +- generate a specialized **VariableArray**(such as ***context***, ***this***) based on **VariableArray** and type arguments of generic `FunctionScope` +- generate new statements based on the **StatementArray** and type arguments of the generic `FunctionScope`. When processing a VariableStatement, after specializing this statement, add the local variable represented by the statement to **VariableArray**. + +
+ +
+ +- - - + +### specialized type generation +After these scanning phases, the specialization of a generic type is completed. \ No newline at end of file diff --git a/doc/developer-guide/img/generic_class_specialization.png b/doc/developer-guide/img/generic_class_specialization.png new file mode 100644 index 0000000000000000000000000000000000000000..774fddd56a65662ae2771c07f4582079a8b8ba18 GIT binary patch literal 144702 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

;*SHw44rx(-+I4`cbx$uF)LE6vvdd9j%j^ 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ⓈzJrlv!5m=niZAF7##V~$tvN*%!%c6njq71P+mqhrmB9{ z6h2U0``Vw4%~e~bqaouJk42l1S zP`$j$a6Z#lMIs{^shtXi#sLE@U*(pheXEUcYx}BX3{5G(COUb=XuZc9Hs;s8&`xU^BU~oK4Sd8M z?CLqD=N>bkOXAPFh-in;%h>e!snZ3AmhUtG@yL^k+5aE}kRrX7I*8=V$B zkq5zolhi}vE@QrbBKXZ6)p-JPyB`QX*|4FCvoQ~shZ^{3?(zx=jX9ryz~6C*wM^xW z<`upguFfPOK6447>Y?cIg3I_R58&4?ufpvRLzX-VgGFURiJtYd#2Bv~DC5(Q;?zSP zIU42z<%CyTA+`n)rnX-pujS((>Iu-fe(x}$9j}S;c6r`N!;m;3_bvs%vfPQJHx_8e zeW5=_*j7H&HHO`NqPCRM()XQK0ZJw@LfK*QZBG&Avk;X-da^^6fw35ZJO9X5%W`L2 zA3by^7fO5#NsK?}W^jq8%~ePdEdbRX(64aIBI;!hYB7OrB-s$cFTf1!=Vi*pjMAz> zm2(B;mGgph?>g~^$n*0QS@6_sCd?7`XHkDMs8d zcl?)URT;9t|9UPEy35Vc4FsIq^8`by3NG9&otSxkga;*cQhRnD#k;&{U6Z$-xD^Q+ z2jsw!&5{eLG-Z`0ba;FLE)UVQJl|Wi79NtOCJ=nMLrSg^haiq?ZZQDHR24*XmYnb) z3Q*3T7S@y-^hG}3gzS|Zs2hkj``{Nu#^lf*Sxt5=<62vU#g8ULoa~?EAV^OgylH!#XH z9eA!mO4~OnqF*MHw7sM9qQpQJRUdJplJy=wSvx4|43Z6{X6c1=!`A1b>y2Nw6=U?W zg~}_=lU{D%9%e(S9gr3M*$(hW{i~-g7I3mx$SgaAv5x~s{K?{ zJ|9YQaVi}S`t=)a7WMP#du8@~k}Clo9w8278k9(gW$4xpjb%uDT#x$ze7>wXN>jQ) zqiGpLLIw@He8K3jZ@`(!b;YcVeBD(PJ(LFNv633Axbb|DS$nObvN`xR?W-L8<+?e7 zG0}7HaFObv%|{Q4Rrvg7t`<^@H+Kr7CxVe2DYfNIzBWe-@?5Up`1^?QYIVK4nKy4v z1GNX;)Z0XBGzXAW(1x&0m%Go$U@$R422sHE>g24^jMFHK*BG00ZDE)$e-wOuPptqr zG-n_p=cTI!69rMM<%|jFagZMWVsxj4TyfaBhruXTqXx8aSVSh6kh5E14}7*V3+S-^ZVln zEIQ+31wa?NB2cwL6BJ4C2OS$y={*m=oYjqtj|;oQ!ljT_S$uS$YeR|9XoAK#C5w7z zs|h&mj$$B_r<6UxI=vgEp;sbP(7SE}Qb@XS4z*y_@TXySl;#sKh^xL62i;xQKn(fk zXnT|6H+h}wrur5(gte{FnLA#s!(19ats`4NnmBRP@l5abg@3IsU(>DWFddbUvNt<) z8*<`5y*E9;5UHn$7=$G23AyxLPl8L`JBA;B)SX=JtC6#JILEx|W9W`ihqH|rZmPP< z39)s?WwOxcE444MM&&%aowPCVMQ^9EQ-J9E$J_9>p)=6}6=b?1KU8_+QKtDM2S|wa z>k2ZjAtobBjVu_MpFf13w2jcKh2nT5@|Txm@jf=W;8u-oKGO!zU2aN&Fq@A#R`+sy zo$8k})NpTl`OA)M5ceV9T_O%r13ua%zM>XR{fz`#Mda$dwXi|Bjd}eRUl0*C8w62I zwxn!;;(CvSyaYY#cm<~P2(v-oy-Fd=IB6g1P*4PDn6{*|>nd;n`!~jG)>oT5Nl5wV zoXmaavPg zl|3G$hyX%oSU+-gH8Vyp++}JBlowD1i6cu(GrA=KP-{elTmg#P3My?FMNnG_%PYT? zDde$z(H72#0iIdM+JvHp4%EGz; zINFXIVer@0@X$OznGsIZb2LdR89+u(|Uk84h}ID`dgYP;`^m{8ErSUNrD z2`VzKLoy)Z1Hw8-^+38~0rm)_;mc0hpBH}$5rS%dm5m(O@?l8a29WqaQ=h8AZ2-ZY zyhKdYQqaA~J>(aJL?TE$D(`RHJ-^0eCC4u!^y;Hz{psU2a69`BQnb=nn#sqQ_;&3? z-A9q4L@4eb*s=8Dz4t1mF?meIrb>+NyBsyExg+blYmH|_&bNH~LTHOrU|P#QOe&e) zUYnGX^@my}0VI{{mmZvCDDdXw1r|Tdbg}!0n{xleI-$AQAx#hV$j@(>RvkLCI^uKD z^0mdg$I!_9$4FCh1w~$~Pg}&4mgnRPZRzBg)u+?buKUwtt`*kSlSwqYG(Z4AnQFpp z`ODxckIM(B<@k2QbH0T39VoT$U5aYtPb*y zG}cyg%SAs}87xSsgrSX{j2bv))o_!Bls0RAZl?N{yBm6*ybhxD- z)XX3G>QF|k1{^Bn%pT|-6bZT{S{x$zCWrkuKr^c0B#;%p3<M zK_f6ODJRWBYKdp$OhhBiRJCdOE$LAE>J00)~Hr`^zNJjuow^1tE|WNw_pMC8M4(JA+myvWWI@qK zR6R_)V!21j&1;xE&rc=dvldV^rw6m4VB%5Z&av# z9@@ncq{)-5f>K^a;oS1N5H{{2U!KLdSE}R|@kxpy%}Jxh4&M}_ST%LHOmr0g6*ybu zz&|+7Q%1o-+R>WZWKdqMNF8doi0rozab-4q`>(6@i1NJi(rsFiqX2L*0-Jq8^7|HV z3+AIVd(Yyux?+1j0{RcEKPx08q_df0!H0V1*?XDm&}895aNT2k8ChFB!Qc&U6VyTO zxCdN*q=O_Csb7M0FDM@}(8_1bY6Z0I5hyPLdv7#YcW3B_{MsPGS|8jHd}%dbn6@l4 zro49T)%is2_C$*;&>Ll>%drl^5zho|ro^eA#0B_tx@yc(`*vF8WYO$APG!+39CnO% z`0^cWw!3-wGpKUDOf--6ea`uWgYPZw34GRr7jJT!ZXejnCNczt+$}TdSU^YkPyBbY ze~{SN)TV+NL+CS0y}6L^Z+xwu$04J_16^X3?}fU1QM)%6IwSP^UIFc@7b~i!!JDr! zlO4>0S@m$RJ=4+Et7A3~=;yjP@vJ=y8FlLkiGPYnUIa4!KFC%O3GD@(sAQ}6#W0V) z8t6|Fy04V%E;~|Kr@-Td+VGCgf6Q8w2X{$2t+F+|wzv8+Gvy%qq|+FuKWnMI^>Ssh zYEt$6TQDtMA-l(frN*d31cV8g6GuMPvb^P7btJ{rYZ<%NP&M&Zc_k2i91bv~zI8{a zm=M(E;%SyKoz5|Zr=)a+(B)2bi}mX>sjvi$nBKDeWPkSNgwtfN>QDj;2KHG3=vX5? z5T7SrS{tv?C|l@6P0)Ll&l`2bqda>j%Z@Gfg3qZ#SwRUmP&fV>6&1XExo>r7GW7mS z?-b|_+J`T^MNkiD5|W7IUoYfqmaS1@gq$|Yh3I3y&H-NTNCvbl{msai#s~Zf{)??4 z)M)=T;G&I0J7BNcMp?@`az?IxaZk0rUW4rJ+#s%TTrVY_HiJ2bR~-9NfVO8M_JgPfZoTBAD@>w77XSe zihI$DS&^Hju&Jvi3EJQKa!bLO&;O_8`K$$^MGfMb>=WQ^%371qWq<-qqv{9X;^V&8 znR`5^%Qmd0mtDU^vS@!fZ|dU}5v81uZ{A3i_Y1Gn-7qzTkWa>DC`RzV2S}jjT4DP9$)s09N2|!f7gKVnSluU39fNQ#q}0Ia@jikhI!Fmy)DRq&QT}$2^T<$+ z*s5||*P@<`BdA1P6kd2~5y4-QQ3l zpa~ln@j6eNhQkaiDq&oV6Ag;fUMbOD?W*sd`Heep7r&6eUfrg;?JbS9{J`QIaF+X+ z)E2FXz9-6n+mOn(PlT`M$_Y~>v=PI8YCA_q#djN6OphH8??KZ7Ev994YCne$S$vve zcUn(%{epJshatgTaaH~>MvOW7gq(AaX{k(iRGEGK>u{~jE&?(DH%ztBq z^}O6{K7~K1@YF+#aA!^pJ_w`On)2OC)F(YjBh{)@j>^9oHMgR6n5kHVXVlL8$^K?a z0=+!|(Od~s0HUz)=si9Oo#3l(4+f3G8~V*bm&W8?bWf!0n*YVStko&(2c>w`!fN6X z>lrTn5N7ddpsMI$V^id(*%3cIy83$naK0IGSRev{)OwIexB3-TSfrBB7KuIG-ESk8 zzm9iSc42?-JnkbdHh27u@IWh{0whh&EWurM`K-h2k#;KXAq`&^H+E*&v<^1T|4g=3 zaqJHwr#Wz?yOH<}ACm)=T9qurz zRAn7uHVTbHs1G1btaZu9dj^+pay-@^VjH4=5(*#%c9s*x$+U8Dw|`Dvk4ZdnIjWf| zPvI*0L>I+P@(-?M2y;|b{g%s7i>>2>5LD;P+!EeFCsxA(_}9HDixPDZY{~HQoYRfl zg1N7#=DJ%e_Za@2Iu731RqWhz{Q5^7B5OURHYg9E*kx@<0T9@+_zp_$K)GGx$pq$< zO~0Tp`Ba}U!tfAB>m^CWJgdI-Uk7cz;@XmrSq*R?h3bnxER2GR2l(D-FYOdLV z>V#~g5;eA`$f|VNj^8L2>~;rIpnsA;!RbI*9*w#vGa3AQ*CyTyhV&-AN1 zVwACu+=TR)Og%i^>KBEbo6`ntlvtlzU5# z%W-`wDwiW`2Ecs-pZI`VH}ohP0V5AB__T6>Mee!a$;-!zZ5oc2z=A!8YlhB>rGL!0 zI<*;Of^y~c0l`PK4;t(0dE3l8-hhYYnOTi9r~c4!mHi z7Drb#cc%H>tGi=+Mb75{qsR3JqvvWRHQrMy72u^-)s8|To=~E4wAwE7DElLbw?@|2 z@5-NJ5AG(w=bkt{2qLUA(Q`9U3?vn?RW&8YCX!u$Lg|LOIn95cZ?Nk&@Ly0mhmAf! z%?hN)Lg~JZhgEE6M&1oTUJW^0|E{EF-6Jpc&#v03AP;S?u?ElUw!ZllKARkMw&XmT zk+Lc{RXgT3j%baCY4I{Mb|4!ZgC;M6kFh<|5hKkBitbC(7o~TwbE5?C=&Kf0rshfy z{zNlCgf9Jrp;5{kR)g&Yi0bKqkYRh;~No|eG{-bAWw1r=PS zMt!9(wcs8P5(bOg8svt?3#!o9Bc8@_8QE*ssm_h#GF)@sKj;&}t9>*zl`2)q5<1sD z&#Ie7zt1Ete;;U<#kuLy8^ku&^oGm|*z2TPg`cp|RR|C5e=wIouAeCCz_K=J2{0`T zHi30|rC$ONUV3s(#7>W9%b^lc~AAFhQ^aaK(Hf= zA-&A2`>62?uDiN`^OjDJJr+4mDbMom4?Do?7n0lPKSB8ak=$3v!K*M#YY_mG;QfOf z2SDnxvootaK2a7TQc^@s!h$Dv4CDh1Sqe1Oiv1c;GJ5*dt6#fDv;H0!!W! zQ@G9cn}Fd{^ApkigZRH_-n%ggu<`)nc@i5XP3eIZPsjy=#JaaOe*Jibc7dRSMgT7> zsz5~uF-WT)6_UWMW(`frj3a-N_dP2QOZS;U_ehEne$dFd*y#;AAf4<*dA#*IPZewZGo2dR3ibx-)qGid2q+jHLX#~ zST&dpM!7KkRR-OPQxhJRC_!qzDYsd_325MQ~`(S1D03wLu#p>1ejD& z3;m+yzWEOLNREH0Ne6Hs7hHIrtiOdi%q`Jt)!S5t-;-NFd0=S`Sb-Xo@#c@Hx|#%_ z`#ZQeLzlMVR;e^(v7ppMh&XSu zO2ZDeV>Y12gLX=eXSZ(Tuvck`{_UM7}KqJZTU9$o75 z{G%1IhvVKAmxhO*0rzI=*mX!k1xx;)dI&^_<@9mR$t?Qm*;)3 zr6+lU)y6+n!5{tk^UZ)y%Hx0556r!`h@E5oU95Na9^ z6r9l|J1K<#-TUJ1OOiV8u!IKy9m${X@k#$%oB*7s&k_Kz&j(t_|6dzWczog?ywbON zd41wIJqt>cw>{s^Pxfkdp}-t{$V0*WQIY&Hi4r`LiDrb9YW)G&ha?_7&|nTL=Uo65 z-bsQt^Vs{~p%o1iK6V#)fkL#VRyz7iY68131~A%JoT4MKz+z`?nr!0XJFAt8`m$Ao z@#bk1fb3RUy}OdF>$V3sK`5B_r{$(+WOXNJE6qZdgT4`)&V2tO8zx+pKB{P##L{Sj zu>1BQ`e)W+j17n>Xy?^He1-nZNlF%b9Bb9QpLb|KiT3*Sn+ZW z#?F8<+-m7tq**_Vbsb%4D+N>a5#PnV_%>vaV3jY|xB^Z!))0z&@uEmPGXsP4=|3d> z?@$(4d^pu`cEA%vOsh-E1w#A@zO3C#IM&zrotHkY4+4GTVz|E)L5vqjsOv2oCVCfm zT;2cj&|*b*L)-iL>aW@efAv=pC8#{G8W2l@HKzMO;qE3&CxZVbL;f$?qZzb(UGx7Y zKDO5Ypgm^eN2U{Ybt!6KbsOsh9I0+~xqoi2-Q~cxAX*cCGas-Uaq9}T5A`PH(e4sF z251dl_e7vXFY)VvfaV+NZCde0KK%M)&(K!Iq+EKhiK2Lvo_fOdqLt}H0b$(Pt)d3A zqcs<;dh?L&MPxzYy4G^rJ-YqC%HB(pd(0Pn+M_?BR!;aTA?tKArYWnia%aeS!} zM5r4m*ZX_ffPHySA*l~77hQ6;u)~FO;eTdhMfn02t%=<_z+oZGuIHIJ&qWZB(v}X1 z0l=LXb3pJ_o2bTKu@7dz#_fW|RkKLJ+S&!dF>;hcEEqKuA@fg20wwh01LWqXO~l9a*Q>axWQ z>Un(rao1yeganY|pDcEzAjUg)hSOaInGbhyGUXD~&HA&HN;72AjXt~2zXRadJZ$b9 z)ZD<#^9jM;ET3I$7~WCIR>-`gcuhI?oI+zhrrm{w@${FyYMcl5itXOs2obPXj!Vl2 zy4XO|_2=ALqArxE|Kc?No$JIs@PhY4m_)E&zXOEFh^^(hH+!am{MR5l$kuHA>1dS& z0=O>U&Td|#aaSRZV35f#H|rb5Q?-l5>*q4*X1>3)utRoFA^(m)y+&A*|E}t^WP8dz zL;xmo;ny%z@;Ec{CLa>|wbtLo_O$pP1`;OmQn=UGxi1`@T)O}U2Akx~V!%2$sl%yy z?SE?=pz(EV8yZLR(E(vZ!1eIC58g-IzaRvZ%e|pun-)NPaB!aDWkc99`7H~UN z+?jkA_$;0~Hwxllo(YX;KQlWMf~^d+$1HM?Zr(&nO*sO4+MW+I%F+X_a8fo7kEqHHL~pguOSRuNKonzq3w6H&a2486j27%O% zCIu{cTRb02o#Khx)O%<&YL7nLgP{-Da7C~#I1NNx(x>^K_X~HX(s8kBK*WndgN>fz z6B>Na`xp<1Y6=g}PwO|v)=2ri^KZce?2-E%0S4&=*Hq$-H?h+;Of+Tu^@8>R_kY== z#1>E{K5K$oQ9fT4+CQ%ji1!Z$@T?zriWUDeV}2}yo#0KgxR!nW8WEgbTIzY zneCY`nHHCv!+<@~h1g-s~S|36stLCskqN4HijqgCQPERV!|0 zvimd2&l${sqDTFqgl@5aumA^iI4ghIOq!&Sf}~%OJ4pH+Kk(`JvpnoBW8qZBKOHVnAXVcgQ0UKX14#~i&NA#7{=F6d z*TO?h8G|lh&wA4%+!Vk$zMB3xPd{Y{V_#y>JNSBSm;;$Cq>*BE-gzbrGPc|MJ1Ty6 zKsO}K3fQ>pyuN$yBi4-PzXqt)@aFG#`^L*FBJ_GLr#*_j=y3=YTt7wBsdl#@SB1x| ziv~~)t^z)UIu`%G_*SS!Z^<_JNNmYk{Wdv0>Cng+@Gkb!c0vsH|x`< zTc{!p4Wyn2CfOl@rzR>-eKpkZTO^0nKLBkH_3`lm&j$`TQ~Jxhk4-xUL)A`}4X6a2 zw?sNXKkol_i{|bXvb5q5YWsDxwdI4&n1^9^K&Ro9Lkavyrn~3DF5{z7f&JN7d>gK; zNH!h{K3TS5QB&Vv5h|+O5;VIl7o$*posCh}w21V+p5&0|cvc?qf}D?!tgu5hYxh;c z?5kIaXnCb&KZ*yr)_E!tC}7`HEtcbIO`}GM31ZLG0i1KX+r{qlvd{!ksU#ssRTOj7 z=5Q7$`k&`oFuJ$6S)`K+SPc5-`=p}JW*WtT_h7(nhKD`N-u-xiTuHnJg=U)@B5tbH zYs9Ye^YC~fw>@2!<=#95R1nr*9rc!!mde3uHNP9ATY;y`=$QOdE?j zXgn_}o^-HPvuSxSR7@S%$|$ZUB#1rV_A&NGlfq+U?p1KW0C6>9cq9{TakRca$z#)a zAtBQ2!^e+TSUneM@j=-Ip#H63$uj(Pujk(-dlg1bETQ)c9oRiKMUaU++5oSkbYAZf z1$q;>oqb@h@7e1X)hMDH$AIf)xYJ}kNHRHG%l#djgZBdr@a@|~v>fu&0COb0F7*BU zhZo&7;>&8o0Tuw%nD2*Ksj0omr+x)6ONeNNpW!@u$NVy((y2hmvf0(Y4k3SrPsAK1 zz$ZiI=6SGRV-H(YV6>c&taerV0@JFxH_iP(eyDyp)!RgFylPxRf(TtJL&&UN+LqxY z+|*3bml<*G%BMzKa!bywQ@Uxfji||sH|O@dvxxS!Nrteha06Q&ZhVHMFqA!$M%bCe z;t23Qv--0Y&|hCU(SjOEN0_0>NG=nS!*Ry@wJJ@^p<<`6oJ{U-52$RIb7F2?xeLrE z)m?~!BmjY4kL6rH>hIV%D-}wvS?@)qoE=-k0PPL4GU#9-ggi%-3Lkt5KPkK5lHI-; z2^yLV+{bK;^s~ZvgQ!8fmp-Q&N3-^fAZD%d9PO2mdG`(+`yU4yFE=T#e_Vu#X2 z4x6cqDQ*fP)eTvot=ah^Cle^^^BJ+5}Qm&>(d*!a|J_trEE zv>PNYuMF8eLODI?UweLyj;?TCZn8osYGV1|xbr5;dieW>=~36rBiCCVM>#6UNu+kM zIBPu5-RS|)h{@=ug8KPmgY1%aiO$Pa(efG}h~?{@1e`l;I>j}Hp))DU@n_GhHMk*CO1?u`TY%KAyzc;46?8Z%2atyh0RT;9uM!)n zgj%y}F?fl2Wy&Nx1|=gHcg&CLt#^k27ImF+1|WfAG#S`cs>`dLR?UxZj01`_CgyF( zjojI9p?RCDbq+sf9wD{2D&JndnJ*JD*~d;m3SZ8H4itNO`1|{}J!rQ+Js`*43RmVT zZcfMoMiNXYk?wd$F;g+7i!I#i5H&=_{VH&r$za~CV|Sl<9j=RqCp?T5p=c#XC$48f`*J5y(lruic_!aE6voP;VYKGDXQOzIXx;wg^ z-RPCXN*XzydPBqGyH7&ZfxB#EkU&hyX4>cX1F%i1LE>Ly+-UR6`+1D*2cZZ7KPWaw72e&s(tlEAr}jzQQ!P(P<5ITXG4;D6Jrza7u@2QId z=-Lab%8bWLmJtA&Jv1^}p#g3f9A@TZnC?ifqbn*nhNhbv%mFLUQ5R^Hvu7RGS$8el z&PR9}>%`7-0=F*J2=%tu8j85TGW(Cu=8Yis+g-W6Lv-v1Lyyot+H~}z7f37qN=$K; z%s^i|WeWu&FOCSw01|Zo4&v?QoSDIYL?gy_ZaET}qwQ2PYg#^J)SjP5e((NCj|9H( zel2b?o0Yy>$|rXhe|q5@3n5WNTUb!_{>P@KYn8A43q3HI0E!-6sH5H#U9euEvDh5} z`k^!1Y&BSCR~L|iwNYKq(%0f1ircag2@|Q2SuL;me6+~^DNyXg%F4`FA!g(z81w&-G*nYPvDzckTc~f*^7`_c#=b)Fp)1lT`$p+8aGewT=`h~F zRx@Do30IL-uHN$6;mu{yuv9iX*ldu&A2|u#S{{rJ zN#IqLw#6BcXU448AXZKx#jlEhURH@sPp2WbWFmpZrG0leg$S? zo5FRi_sRU`W)X1Z_At7}PqGn|Y=9e<#AEVdLbqDJ$YI@pTms2bOLYDI3#TzSAPk_q zKp4iTm^{Yj$!GaYKaLYn;H<;%11LL;TtOvMHWQA5qbuY5`lW-&a@T_A*V*8~6MCP3 zxGZ7nPc63_XAqRq>+R1f{xc zNZ<2V5L47JoXU4Z+M}(KZ9e#ZdGAY1ww!P}$cT>C9J^7tZZjP}>-?~u(!K@}d_7>w zV?Edj;fQ5Wh_DxcwQIxG$`)vg(4WmBMEIOG#&{v^Ta6caTirlMFSYr3jWjX^gyjf4 z-eG09)L0?K*f0$sBnKca6Y(}jphuqh_u}dJqrq1~7YatpQEnYEXup2ouZGD~K1X=g zLHR*7gZIoD9-6@We%Zl#*l?bEa4tKFH$Y!MnJMk#!+d0Kdo14jp}P|Os!ts@YC8D- zrmNl5tz(;yGFqm?pM1z5^3MI2~?RPA0g97CSz%LwiMx9i73W z2Ax*Qm$8nuv3vrk0#R)aSo`2@wjjg67qYk)?bpUMgRisq9@rY9awL48AM<%&CX>iI zn^gc*ZD>uvP8GDYM66S-)=tuyRK_0k#LYg=!$!EnM6oR$+Y4$R!y$^XpWF|(CrU1r zMemvKT;Ic4aiU~bK7Aar?)$XNq^swRKk<6}NQW9c$E7T51>Mj9AbCZun59(8_UNiv z2YpXWl*fxPhWAHp-J;^J!u3o#L zNv=x39>BHTH6JX^gns0))$g7tVgbNbU28Y?V_tWZtSF*%C*2^U;qUg+IEJ$jm&>d4poFQX?SuPa1KK1&_UF7&n}C4>rd4bRr&_m-3$~XO_zpdB$c13s=80`p( z?Z^6upmatf9|4p7+6@2)v37Ff2`aq`kXW>mfbFj~HT+{+E=db8gqS7P1$n1=EPogr z@8A`wmaW(S2rSI^CS$xdmYQ_!+U_PvHt?9Oh8}y$M2x;tYbamN@FR>YR-?w}v!;r& zp{nD+We@#OCo%e3x z?u5ls-M*gWW}WZuhd#VV64%c9B&y%s7bzD%@|=t-zI_`OVae;XU%w+PEWS4p$JJoR zDde%$x?qFk?a9Eq+h5>_>Tm?8awYqv5cs!6f|xg&Z2II`^HFenu*F=uCO#{TiED zLS|9|>OkWHQ0eZF2jh`EKk7~4WzlPKi+pq&y-N#veznlVsI-jksrK%@d-BFqv}{6| zT1APo`J$f5{2Q7>5jTlE>kBOE>62hA=`OTYT979u5Lu*`yq8QXz-!_apC`UN7(tjS5K7r%m>u-qg?{a>r4XXyCq^YBMC)CplZ1F@)PwV zJ;IB7tv}y+oy9iY1N88FixL7;o%mvGZLxM_u_>$@Ht6Op=EQvDjH}Z>FlRkeE$fH$ zlhg7X^adFxODfe-Vt?k-V4+gSTlqRXDNj&K6;S)D#bG>b5%+vqmHk>+>N@8CgY~Rzd9ffebpPsPZwt)j^KZDL9~C2d0znZ0YUCI z8-@val=Sync<$Un4#*Zt)Pp1$rVg}9C^@);?rk^2EC75?mcuvQQoW;81KX*yajS}C z|1_n5D_JPR8*LWZZW~s3xX2L~YVf zPepxaZyqF9Id^t&n%YUfq2LlXA9iHDHVJbuTM{$l!+4F}@zLWMgjFvvYtct#S_3oF z6YmR%UCa^6KJ1g|tVe8cZry*$Cs1pd3FYigdF%_3yO#lB6o|YpE;2v#lu5*G*4@i% zb0@N7-s9d4$oh}S*b#CJJgqdFDs#qk-ky040yZqvW`|>QVOa!5oZShPHfT znI`9}`k9C%3^b*AGrY9^_pVp&PLjf}`X@$eo?2F!Pbh>k8B1L6`&}&=yd^AH4F=EI z&%FTk{VQ|=3AazQUP5xOkg?j6E6qBrAuoo>tokTXq1!dGr4`TU#F6L>+>nk*c~sf= zF6}m5j;I8lhoYVI&+grkRV`I}Vq%^2a|X1@S=w3;?m)&i=;}{cg5>55=Ftcwu%;`` zyQ~e8(1TxpfQ}oeI}uDBxsRbgpU%4roE#2M)td3kC$N%~eBCn>NFZ{QiKL`pj^N=3 zweZAR&4%=8Aij>Oc)BN+rH4eyWsY+P>pK-<&ER-Hu7%DlGD=rE@C0ix_%qdWY}1|V2%3cl~zx<@NXW z8|p&@#H!eRD)`|G#i2kFj$pP~or$P8>LAu%l>05D(dvQczQc$gW)yEMabA8@(BUK2{L#ene zSx-6XYtTfI7RkHRikw8c$8Scy`pbJNk>htq2GrK_C$ef|_4#H#bhAG;Y&`wdAihsE|YA9B*6n@tpPi29UtMm*?{rTP9ncHjT&=Tsb5 zgBH9rQqgmP{)>oO+h7#MMKp$|IFGp9nhDg;ovlix%54VJ16SyJMv#j%i!1!=6;tqH z-(_av*@mUdzhLnnx*cxdd4Po6;3O>*fan%ZD7`<;{mx&-LfBwIhgiQw{aCQp{B}=i z^P^V(pPK?6Ojsmbtxn&}#r5tTp31_ogK>{mlmrr4Z|4?_`_?*K%55?0i@s_Dy+@&` zwfA(y-V>z-8Hey5pf}r-TvwX4eX`&tmijJS<`Y8f(%L#ABrQi?=YSl;OpvxU9xSETp|w%=)3Zs zD|z=~*JJQ4?-NvUX%x~Lsrv#6M&GmRhjrR4z7nz}WEu8Mu)VUIQKi98YsSvDt6X!v zJmajfo{orTQig5SAH!BwvMV0d)zxJgCKNCa_!|p&=|hFO2GGGRL3bW5?em(!B*N9f z{-ejf{zzWu=}ioX+O+q2H0Aq}X@iTCZTL@07Wdh@pQVLFi}v3!yKh!yzMx<-(df2C z7)E&W$OMtV&UA`KwmJASlvEw6^-+G6agQ67)(D(>bZIhv>-NnAmIJ39t)&@nApe?a z75u*@3?yX_@#|;14XDRNq-*nAKLSl>aMC%BE`OqbU#Pq<&clMT70L z1G(iyDT>1skT-9>#fz%AS|8Wr)Al-?Na>{T$L8B9N#qljSjj1j(sF_{o0&#UldHYu zX%gV=hV%O1e!(K;QVnI1!JrBn4!>KTdS)uyjt{F8q4kIJ>5-&C-xrgqDiic(W(~zA zIYZ{0m0i%%IJs)GYc&0`r7o~4t{^h_0yG5|BHh!#`>S^*!$YZ$PN=th#x3LzbNu$5^Z8-bXm;$)SI;G`G*OQeh2qZ?*GnksrJ4ae z7GLs`npe%Z_U5bH!rhlFw!bSe>K4R%BfS=(|D(DP@kYq~TG>*^agU?A!V9yfp3)!H zUDO&Xt^^?OlL@^r8H&e9dHDoZlCFfNNP$im_Cr*Kj1yJy>dsN{!A9H&Ms7|G{Z{^B z7NWSpJ)NG&=zAGQnZn2qMBHU?(!#QMz7JCEyC0KwB(Y;BEva_qVGRwT2)W_;H8>+M zskA$d;IvMYw7Kl%8EpqBW(GN&QbJkDO?3}HlXY=^@3a$0EJesApjNFFDl#(icnyl|D&qqtpi1^`#b-aWy*Wv1LH`-t<8h~=JDWEzXAFT+T`J~eGYgX={pAiqR z6$tv1G?JgMnyZNU_|(l0Dx3itKaag`6!Lh4Pv723S~Y zTsy)}?H$32f>j$z3$$6ZF29D_EGiwd zz-BRV-W3~tvd7`fHOl|O(R|{kAH54D5v5Tc%{f?o0-+E>$#p-*)zp2^bkQ2GHsQ2v zoWMo^=Df3+Zx#J4=xb|jvWfIv)@dDzG+kH>Epl3csv3=E@ZG+bz*1CdkBEE&c0*hT z^*NMO!@e;ZBG*a-xxBpOfc8GuX>{e(@iJ*6$aR0JLV_;(ISD&ms7fQ5EW_Qy z=zH1HCh_##C;OL|b>;g|m!1M%OX&90uY?lEIJ8*`{l2 ztQX%!J;X1U%?`qR4*GtD@0-$}(~9FJU3(5u#`&`0!CoYs>5+-rf0%K^*8cM0aipb2 z3GDoMOCIKS-G1A6@Gb5~&^ArBezJHG;SGTbByMZ6So$gm)9zrIJ^|CIXQKG*Vy}gE zj^BMuF5&gz#nnYZjKe;_E?Fqbe^p~-_RMO&29xGYr`qs!f!XI7rx$gu-(Vf-1KY!|)k!K{%ZU8?p^(52vOb)(wj^ z0?RBXi&fquCqD`6RoT|7HRYwt&Og#1-kYmY`%L1pHyyrBZg zN`X#e2bnyMxBd7_7h5g6F+My=CG@`bX4Lu4-HZO6 z6|N8dykfpXzP$jkQ*>NsV& zN0dg!6L{muo*?lxMnpKx=rb_Fd}0PS9;5 zVyD?}^(F=mAJ)c~@Q=O$h*9)U+RGI*ArvBEzD|}10f<98Lao$pT$lWx(M4rwD>O>| zS~I;>k3(SU#Kbq(WLOqoTF=gT)3mDsM<P=>u1xt*wn%(7g&TYoXbWf(gX)oYEWp{^J4oLTG6BpMqwfJ@)oE=)X16 zKY9uL45T-R9!94T$87c_d2n@JSVEd97Q6`ag96WE=xHh^0^F5oWdJhsRh&)sD4l^A zgpge~48J9#^9OynTH>=l(bef<;r;}s07VMnsb{j&`2T7ZKSuCWN?n^BNc-lonZZ~e zzI?|OB;TEXLLt1I>9e~OEQyRiDNqA|fBvwZfd*vT?$&e(dFRldDZ+mdr@<@hS-*W_ zX9SC(M^Brr(J&4GoB4w~DWl1N@dYEUMWqFN+z?^7Au*)r;?i#?uWY~8`>vt6vIAAN zb#_*pq5)hcyTs6il3iY1Dix?cu6i~42=%$c4OaM2XRnd3&giy904eql0LJTEZDfwfJM!odp|Fagj^N5M) z;i(4?X!xb_Azpj?wjmHlLW^_=0M~L6{vxd@oV1lCmCZ|ckzQm9YJMZ{a%P2qN%i=R_#$GimXjibL_oj8BRU}yK(!n=_C z&nyh?Ad0d}VTBH(FMZl~Ym3ll(0hbL7sCj`3{UTF*Gx0=f3*5)Tb1&cW2zK=4;6|% zLQY~4P^a(_qduK{dwTL3A}2losq-7eGTibsz_2T7~zaL#f&IA zJ6o`B&W{@7Ta3$Lea|6aWa6P2g$D`M#L}SppPiBuFN6qCjTM+xy(C(ZB=gQ90CQ2o z&w|B|zT`u+kxz~cBZ4b?UsDw5_Cy4WIm%zYH}^+a4^DyJiiDp=L_`~$&DOqy?=&m4 zl>4qMe?K;bh&Y72(;A98b-P;@soi88j6g^&-j*-Tv6+o$BfrrxyiE^A@WO>nS?gaL z+y0##$iEQ~i(r>ncn05xHC))8cW!A%?gT56r5R=||F8`F)As@q)&n8}zoT%75>tUs z0wBz`{0Wf{)E9M3AF0ho?!q~NBMyW{xg`#`{;&n!2rA+bw$rk?a~$}NQB-IE$Ea?W z#Vum06ld&6+CTi`2f5$+)4-p$X5$Vq72l31=`*DIdtihIb5_ZUU{AQnHGheN7w{1* zznE%+Dg1tAc_F1yy;_v5iUEgT6a^YEB6|7ud6R)B-CfNIAd3F|V2y^5%eSDw`E2Wboe$R zi0YgP=RLd(gv=fM3{LG|+)v$#`KVjM5kgEAf&HI_^MgG(-nn_}K71AuiUSWb%2|Qo z7;2EGM1OA`-8~=y@Npg#f>3f9F=CV&p=4j!-@WmL@I3M*3naA*l=*DnX+Flu6aJU; zi=@DESo~^6O##6+1yY_O3DE$8MWuZ%fpZfA>i1{_X`S;!K@SC_8aZF11UC0bzPMli z`A1qw$%5~W!0tvi`V)YG?=v$JKpwN&ck|-}gfkcbN3YssZ`Aqs!b1EIq7_U+;QWsS z=5F2gq$>9BoaFBDfn!Hbrgh$sc<@dvv$E$8_33aD;S3b~zYHXG@!$2zwGP2W%sQ6o z>EE}-gCTVid6Kz3?*}5HU$icN{QIQ_!Qg0BN#<&mJ&C|ZZ#Py0|3ZBP&N8I!Rc69M zotugit63EJ$+W~t*ng*~gaV{J4QD(J(*^3kbP1I#=R4}vbWPv%oECNYgnCzOYIL#Dj|6q&iNZD)Jpe?=1d9kPe8zaMjE8QAaRXDs3z0 zhK(0B5PWXcC7UNxa!s6}w={J1)na#Z07o`L6!Hw;?<3*}!?K1e;lZYgpS4s@{(TgO z07x7XGWZ)Y91uY2=PgP`5C}wS#<#MPyT*C}f{h&=$mv`CDg|Lh^6Tz9&@KO8DG>t$ z!zw^K`Q{N;I&$V^S00NeffF$Padu_G!bZL;l57u7D8Ej+)^cIajY{i3M8g}Q1jAOZ z<7-KQVeQ%^^-obsUw#H8_Tqsz}iEna?zoG`x{}y7@y!$@ah1|b$1=1QHb~)my-uMR2rH1fw@un9Q zR)Tsh-W0p)!25UH96_wM9FMS0Xk3T_f_u9+c^mDo*68#DC(_P0CtI7CO30qCK_1Cj z959wJ^nG=G>r*DnSW{s*Wefz7$Q#&t-tfYA^`Dn7(Ds)jl#RWj;0^PHR*<+j3X%&T z$jHImqXrxXTRD-SLDg&Zr@6Z7_gc@&kc|2Mk*mK5P09fHD=0l1@hdSEDHQ1`Tydm= z6`N)+zlO6BPQB9s9mYSDC8HLX@QV}(GkxPbggOV#Gj1;kG!8v3yZE)g`;arM%>9UI zB*1UYs7Je#RG`~83i3MxKcu&UUMbCOWv5{XD*=9gHdq|#96oyU6_v^!2^A;q@;dk) zEx4-uZLh$0<{lzkJRm&RgzL;MRA^C!fU^33=uQ_S2LZMEfo|x8?L9rRny{rMzg^vi zEcw;`P-EQGaXiHC;KW7=?f>lZIh>tE9kgG?9=v?A@V=NX%NFQ@&Doo6kzYjhO~=m) z85p7%+>P~3$AP^txgTZB|Mz)c2;9=vS{(BmHCN>!Cnqm+nN+O%^eGk#73kwze;GK- z0f_GrH-yd+uWsa(0HEU3!CGFiWV}!R{UID=q=#I*SR<}LpZbo&rLEI9E1)|6D1m#3 zs2G%d7`ck+>TGve)bGaKSCDI+cu`%9Yv4JR(qqp4FBbr@0GH{Bs}{D^oTA&Gv$wHP zr|tu-u=BNao8a%K;K~96t}MFMc;f#vP%8$K7=>^U3ApWNxj5N~v=zx5B z4?lbV6{q6g0QroKfyO#$I|J-eb{i0H#y^S2a3wO8KY<>un?s~|z;gerqLmW9Zfrec zD)64wYoM>KyHu)x5dsLJbA3pfA?k6*cF%0z`vl`zQ)XdH^vzMg=A#XJf>>q~`45T- zkFL_0O?nqI*FIab=zd5)0BjtB{BYqvHZwRZhZ4e2LnLRvgIHgvCNHr3{qeG3JQ4>p z8mo7arjo>_$^IiB&=7~XtCvw{z)8qLMk04OhMAlI-Fc516=-SZYnL^0#X_<5rL8Tp zl23Gx=VFA^m?0NG^D@bFME1vK$v|eDOL{7qD7y}dG&+&059sQQG!}T2TD@uN`68TW z7RZQy1-La{-R1gt?J!!RyB=fUFgnqHgtyI%&R2u77ZY$A`~njoy*D&zcUtZKynS-AB3qEWO*dC9^wo zvZQcJB}eWZ-Lk?%kAAf=qCEw&7ogk# zrz!He7y;0IV$G({fNt9k21ZFWm43y2I)h=z8oSO15FZN96>*94`ek80#er2eG0ch6 z!dU?n8aJGl8SS}DUCm3lig^TCQJG@mz9nQ2V-F*c?#9?)`w|Xt5SR}(`W7XxFTK_u z034gpneoCby&cltl+|0|RUPuIPkawvYGxEg{^dBUNN^Tv);PCj2F}VJ*w)AZ$>{~y zR4en-=bGN9OsP&3n7{@c;RJGA$XT@EKb~YPkft#&e@VzueAoSbTy@*2h{##z0(8sq zys$e?%`(&MPc(1Om+LDUY(>paU0flK>wUfBG*X~xWGt67!Msz6`@d$~E4Ufw_~*oo zpaZfUFI%7=#ic3}`t~xzPfBY)M8H{_L?HFA9gY|YbjtG;toLqUyF=v-`ueM1R2fEA zyfdln{yx{t%VpLd&&YRmvFP)n(UW(=X6nPtsnsM}`b>?&UF|7z6kxp2{-4H+rI6@M z?W0^iz<+(gmuX;dPe7cMVfj-HdlmUpYHuHs$+p@vP6w(F(PxdLtsycy_0ErChtXcO z^EDB-osER&PCxr|KJY@);I?SQA6wL&4k!T1CdwXB2NmWhm@64vc+t^-oeD+CeEN4X zzIRZe-gy$aBXqz9kfJZMpO+cbZ6wze?TrAyj#=&r@}aMusYd$v>~k=Jh5l}m$z&y%VKGqhJP`MupT)+b-z=&ruYP0%fP)#~-EnA$3 zH2x!=@7bX~e;!kJ2@lo#x%>cvV+>k$JM?z9UUHagp}i#JN4L%mFV3z3c?zxYO1jzU+I_-k-Gqg>9+{I z=M6+|1eKUaOX|VPJxbFX@cw&RFgLhT`Sq#ow{Y`!TgN#PvK<1hL4@rY8i2R{ud3w} zhpiTBeCIWX3}v*0_<4D>S4wJ=m7S-Dh9?$xj*&P#uQTu-OyQ#Jd*eP8f2G9_JO(H1 zQPIDiiEyWop0NV!_s2#U5yR?uHi=WDK>#BP%;FB@ zKZ?h<8s(wS0bUa_X3wYaq;lwqqiV5Eo7Pk9s`OjIQCUw)y&25^G>m`!y z!dZLeu((d0J$hr@=9QtO?~TH9^N7-wZfA|Ca50_}|5>FrvsWZa-Nc ze$@42bsK2}Th`}Mk4=-(yX~a6d@tj5kC@7Z+WvK(|7DdbxL<93CQ+!)AzHObG6QxZ zh8P~P!Pw;clJkE$9q`R7^8se%&SK9tHR=?wZPiX-(kDQ20QC$VtR{Fi3R(pC1u}4W zEGZW)l#v+8Vo8THVB*&c7EZL-tPn6Lm5O9wsZcto_ZnL28~Sv8JR@HR0n973kpc}aF@bHm&&1s9bEJv2HfeG zoaFx!K0h}H<2B*>vHF?J!KCrm)vsJDGhA5S<|YG*Hsn5-@ByTE7Jgpt5kdskx{(Ok z!Bs49gf6ft+D6LbMw*?_G04V-A6y8&?000q7=tSJxPtU%c-t0}mvH(3;-?7D*LEK%G}y5jylQB!PwBR^rmn&oagXbn5L zjuFG?->#vKZ8lw(yJ^UNtCZ`_Usw~Z@e%|u07o?@VtMjQ0q*0((cfR^Ze6Ruz zt^FuhK?&by;7&19Z&cX883W~+uh9eeeY^NDq}$_j=gIuy%h}pOrMl-54Kj9Xb8cg{ zGo;6_CR+hG$98>b;wF$?%5<98|CuF&pUYtzFQZPLueEc#LgCLw1BN_~Bu-Jo;RqKX ze7^?($#uT(kmm8pY)_9>vxdA>zXeMpxS>H9z(x4ZRKM!}WV7&(!4F(W0q6S|8WX_s zGtfjLFJv8vtA=|*;*NlvT%uqxNAj>EDznl2Nd(8!?T}`XhE1dnfT;`$@ReDUxiNvY z_C-2#W#%z3$Z1Q;JN^bdwgZ6pPs5fW>H}ezV6OMP{4tdWCHAf2hS?#F4)hF=?c%Ctnxk0uensEXv;t1}DgX z2+00#o*eb!rk=oSG|V!(FL%!m?h}a{?BvfZT%E6gUX)Aqs%7GcgK46lGwS=Af6Yi2 z9$(bhH8zuLwSmt_d$Pg^%z~5-%qT$d-DB`OsyyuUCf(0$&yScZ3tOnhIw8y2qWFgi z%cQ~kNd?vvUV<($_9EUxo|o7w0SE6w#XsPJr~Y|`$^c0-gq)2o3Mb|0o%?(WNPHmL zqe5ncyfyandZ`27fq9!CEe` zpI5#_KiZx_ZEA2S&(26*Owc?eG#v7$pQ<&X;4&FBxQ-O6dvk!uA?k?pefu9-0B6+r z-@B;~Vtp$C9rwXogJ5!z$+)Em9IjIwX+lm~<&5e@j3Cil{J}q@CcWQUuKn8#41=px z;9-OLMI-d+Y?Yfn0Uru|Vz62t`L@AT5NmJN4_sKr*LBk=1Jd2R1~9tsW!F#4XWu`j z(R}yWl!OWdT2jj&7yfhd!OtSee|9pQ2Tn{OT3l^v#96p>v%VO9HE{zHqfH0XKF(~- z=JNL^uvu2uOym5sg>yi(MUn9@03~Cf3r=IvKx#2Kjo(wj#Jnyto9=@MoB3Q0_m_`P z!<|@&w(@6j&u1E~%^rGR5~r$fq;^~w5K~c05mVJuQck)3YeevZP^};I9Nc2Y z9tU7QFP}?d+_%v4r$MX)6XipX%VA%hDz-T7G$-%bCC1H17f?^`c|4$DSM;UA#jqyQ zNNq4;djl=%Q_bE}@MA|3{zFX5mIBFV{!_U7=h>H+c`wZ;>inEY$IV&D_^iA3Iq}Q9 zuFyP>UaCiGS?E?0Q|-BeFddnP)gNC(ob308%Nc{?Tg9n7iiS5LidcxExX!8-q_)N1 zHa>ov%Il0;`J;Tk7grSrlAq6YJtDCmE7dw31sNS|=L!Q1e@jfvr^;f1SVTm4%7ERx zf)}1r$*>b>8E)j#US2KpnY_U$XRw^vRHg=c8-ARW$N21vKwz$`+db-2`MZzvmV#@q zCi&N1baPIU%QwpGL27muf>HG_9o}w?At~%sqeac1Y-*ki5Q3#d%~+BbT5-O&sB8jR z2PUN%UX$$L`e@JSWW*V6f>7v>e(9vsSHTgj!#zG-eiURobxCV3 zkq5XL1S=hvQ%ec|oN@5;1a7+li5hMUKZl|+LMQ&wDTn@NqoHt&tqOWIpe&Vt#?Ty-fc>ZIi{0s#G@`zEBO<=w3ikghq5Bho}{*x6RMbFI&H; zZ=dzKiVWl3G#DH~%+qZO`&d|;e~u?4`rg0Xc2QIz;~|L`NHYVtW;|WM4PtT`A^xM_ zAPg}hhZ08O2pL$L*hU8Tz9^()A@kQlc9kv**FEz-|X(VU(orSOiV}m5p8V)QcUNHX13-k8v^Ajmu4ALEy=?mJX0MJ$U*ggjt;%cWSJF~HDsU}jzGTFFWlchZ%yNCMf=-@!fZ~~2hIZLBd?_l@I&}C+} zbvVQKiE``4tuI=)TQVMoI&Ja8h6^QHD)+j|lMozwLsuaG55VS1_<1#jXFTxHHaf^@zaENmjM6CWQYuKzE z+yik|6lG>@AN6Iib{fk)fdZj}Bu; zC38_rPuf8HPhzKcrW`!qV*0^vsilDb%@p7dag_5-RTgq|XKhfBkYM#Y06dKZgaIzK zLs7*eSUDl4)#}WUDmhEPtorqIRW~lX z3tdMf+}Q+aiYc5#vfk$;x!!_?xHkN@3!MN)XQbSyXXN~3Z!y}}7h$YKcb3Llj(%&R zxC5XCmji6QyAO1TX~eHiW^L_2llP(*K!gOY<=Jhs#F z$$YOmq48`g3}b_!IQG5i@g}Iv*fjH>Q39w3VZL#?V)EYCj!GSDe1szPo?|ELG zSNA8Tu@++TgsrT0kHt z@)A$yhZkB1g43SOS-L>fSX@qb1BFK>HYt@@&|(%2b*@8_4U|=jCteetlE|t8stnjD zsFVcPj$JNb@oZ!|qMu72pn9L*Eybpgdh>$-_EyxZ@rsEcgz={m|1*L0O9;~ic3?m_ zx<92@(COP)xrKN5I%r;|fI}&%Oap##=n^pa`+e^rQs9B(ij__|@Id7`&J%;iG)R#+ zkf&0;!1}^*wep7;g8NN1R=??yRdNUGUQHe~ejr6RyT|Ld%vJqW`cwt2I^|rSCX>_0 z#p35I&vgx)ZNL^>9q>oZW^1hNHonjU1C)8;SX#pmMay=s?pLaj;WWoR&|NC4imWTolnN3)tWRwSY~mk#tge6{dR8}OU_bEh?R#}AapyvhIK zbHZA86fGqAL3%wvhBgC((${xuGS=>*1oHaSaS8`=eMR)8bRGvx5%RjZ*;Ul?jxtu1 zPodp#lOfzes)qSDm`q0Qa+Q# zkgPbNfGJ(1j$G)2JISQWpOS$Cri32R*xa1^Ac4Z~6i)w`|8M%^hX8aWrlpN}pKA%w zWGVr{=^~2aZ3{HEo=)w2aH_!wos{<#37Uh$zJJdv zxdDJX<&GQ54?WMGn}h;IAqe1H^P)s=0Q&G4uV#g@1c27v2dLWy;8bqHceMlH6MTrW z$`tbvg`;>oeQ*PaL8^&;08*nx*wx~4OBjHcXiF99n-G0i44Ldld%NI;$#WtYLF^`tm>E9 zLbW@8L8Mt}>}R&F$atwKXG*p)+jtw@Zg0_J{}fvsgtSJ>B`=;M7A4-|6l%-w+pXT3 zG#cOJ-E0|1V%LaxeGG>{a5(}=C-~*CjV5L@IAQZ?&_i+ z3kpwqz%u`6HH=`i$&!c|;|@GQeR_L)I|5WFbb~d}#}djXv4)oDJ{;c*>l|Av)-LzC zK^zYTWdm6*r5R^*W{PaV=+=LN{AG4XpaNj=WZ(>jc)334e{k(Z{9{c8X)LQF7-xUy zj#HOvo#A=TvFltVnLp)2U!xQrDANzY%i&8uSQ7h^Rvn5m7BQsJ3o!Q%f8)$$aX;1u zY#B}R%LlnpTLeAUH0+xvL~7|#B;0LHT27Gp8|>0kpHlBc=Y>ZCCVfcREn<4b`sj`ktCg?jOl);9-;&Xr0ic7T_sYRwa57Z-@mCnO^%$HUDD$uB{Xs=5o=vh91@ zBy>!t1aJ7Pa{yZq>tDcD3ljE4+?2;@W%E473b9W&dEZwr9XE@();ppaGg$OyP{`aM z5L1czQX9z#@V2Lxn5{F1d<<=KHUiPBTP z%hUBtIYW+nZW~{qAYYM#7{>2O91%^0sHn*C?c#2C%Z+lf3+C(a)=!UBTDzpL#6T)4 zXDugfUFi+`7$7SV$S-28j|Fl|42?e8DB)UWmU zo+yZ#$bRT4XBNfn@_2mjB?`1ip14FSFTtpUuu+^$?%qS-gG8Ws(BmY-R6G5rMK3vy z@{R}!)n8r(*-GBdZGR6+iO?SB6it`AtP_$8K*dq7q|%t$MRC2tIG%N8fchC#Br)6{ zp;O!d25YM9Wk7w+(^S3}jjrW*LGn5BxQof4Aja*7ROp?LZy~ufjC0kNM0YTVeE|@I z*44qmK^p+XiUG~X>GcvU(eE<)0t|Gq%~I9#caO~H z>No-HWzjWzyJ(-kJE-mhWe~`0T2;@F-(FM2Vd^I`1@o8cFQt~Y$PDk!LpR4Pz;(Dn z=$*-8&Bzawl;)%Lm|(ylHnNs3kkeAW*RaQF)oY;2sIPbUjxZUCphFbtw}{FBu=F!v z;er~V6vI|J0fK|PF*bkI&^Un3P3W*TsI;t%n;sO&-DjT)`m$h<@}S&YUzGl6>hwiP z|A>|UBrL?xaxBj;kxiRMG6-YSY_#hX)E`S)%cTg>dg?vw%D%XHuQy-+eWFX{_?^b0 zcR|LEHecalr1vf4{7n8l4Q$2F&Ms5d7I!@Dub-Yb1IJ>#%cFM3fk#t_(_ zf^9|mCl>;T$*&h|387uuW1kjDoy)U4m@4xR>qYf({#jl@25T+s#mwlXX-9VY zAq8Gfx(HFx{R|#N6fBv7m$dP%!#CTS4=K3uqAb2re;(B2ptIAUX&zg--+uFho}Q54 zAf2hhqO6vmvc~%33@BF098L}355{I1)qf+OaFC~hOzgFIZ+`hB#|Qc1z`|1O?O=!9 zIk|;TESKJ5p&Dc@YLAAFwwhnJb=uao0F2eSqK8^c_`~^Y&f7e@X~DP`Fn}UJ{1Dm zmbP0j!8;|~X0*^*bqK`;>QMT_rL!)gl;|XTWGClSf#r^F0Pd!8N zz@calXAK&2rXb@!*om5(tEUPPpm9N_G|^()aHFL4_f=$7j1yV5MGa_?s%EHSK&gK4 z&9~43%E@Vmr5HNY%ch*XOkuTrq}=YOlCKvO6AD|)wVck5w{C&58kmrc|5KC%UaBdc z7zkc62&bzg2Hvi2Weea*rCWSFp z_*^Hcgg=dPDD7VxvrM=6h)tB}hJ$uG(r&5bqYPvw6>axY6)GeMYPP4!C9Bz!IXf8~ z!Yz#G-$i?KPg3fgg6qNEkkQt1`3Z4>VGJ^oG&6?lyuNbg1Fx9pgwVm&%b3HC!1J9j zk0x@5m7yq?SE;_>v|8rU^v2Ox76c$;g~Y*Bxx`Z{q*F57=mS249M?PV6iB(H3ppwG z#61yoKVodY{PBdIEAlZkh1XIYm``^=Z}=BY?z}(Nhf8;3%}xM}1k1tVg`s4hIg@3( za*fsW`wDgW*bDlv1;$}K1fLXlldRtE%v7srGSSBsT(V8}m2bXr;$|QNb&zYHQ{L;Q z@&UN1NKzKRjV#2g*oSUt7-XDCB;3ZW=hc>Fc3(|db(_hnUrk75>WNfSa3Hj!Dbj}* z8L!3{JqOwLouGkI{1qsB3=?=!G1E`_x$I?!>KeTGS#}HkAVAPx1-J3Ri!$+_HoJ45 ze^r>ZO+Z?6~CL zgIjF%RJP#}vmd*e#Eo?-EOG-W#BW7qvxcf2mm0U93hDNd4@x$HC&{m&4YPaL)zzVAbk_;-BN?4-Ohy#|6 zGFN{)YPH$lp%6#AS_f=|+KGlBiTIb(`%kdoKA}SNM;Om1GmV7t2|As`!Rn34qVNSG z>F_r4wv9rzR5f*-zPBl_zM0cMPq?6Kun3COZU^Q``x+7Y+RAa;m3&|k*AZ}WGl!Fl zt+)s_d^Sgc69)D}RJbO1X5?VFWk0knM6WahsiXv|UB;LO8?)Z9r*Fg(a=(kXH4)ey zdQ-=V0_rUZB%?mccT85s^+#<984;2ze;Bdv9pMAp!3|Fkxo&00^9KTc=PIZ!Qm?Rg*9v@lEf)iDW0-0asrXqeSF|3!F<2@j>MQ*$P1qv-KG@ zbrI|>8MoRHwvlNk3&_$jDlu`Z;M>6oVeQy>^Kl^N{xh3ONN)ZYv+kw6(?C-JOi&T{ zITaa;oH#{7b%IHH@V;zbFdGdiIKs@sb8pm?`$0tK0Qf(JMFnqk)gZ+*R-ho7ndX@$ zSz?9T;Tm-K`iEg*h|wy&GA^||?g4DR!DW1)7(jf!J7=|W1CUb@eDSPT^p`+Q6~U?; zl1l3A4jE=@tph-c7pH9-5M2FdGqf!|69M zys33)iqgi+)6(<-dBz_I#AH{|Eqch?@|kFhjmrS4R0UpC7_nAZ)%`85J+m(fBDX_{ zLeqgu5#-PV`qhn#1{gmfu&Xid)h#!C-5*1y<{4bQbeUNj!=PrbBkChF-e5godg*X# zV;-au2Ri~Kg`D{ zn;Yqei}*bU=P*S2NAYjm2L&J?yrRddh0rsY9BU(SCNhxK6KzzrB$sX*gWZP0B5+K_ zjn?L}+nTTEMem3)Ri+n;M)9rdeXBVAd#B57ZUL9?AAY)q@pR<3h+TF^zuua1MN@o6 z-cy+$r*>!b$dVs+e7%=_^xBt87W%4R&Jr(LUPi62h*?^y7zHgV=J9FQ8)?_8dC|HA z*4Myv4?KL_8cF8raD?0__~TXtsB@;b)%%da!#i_^Whq&?awFO1m_K?kDxy}pRV2u< z&_b00z*hw@MIG*3AFd%pMM1SIFuX+?3J2TdiFY^A0K9DmkxnpH0O$$8L&Xm?uG~F$ zcxD;rqjogJZ%>UiAI3||7Kgj*HM;r%2%dK~^Yxo`8E1FhBrjlX0RS&i40?0z4&#r;3$wNn8dMIg@(ga zqwdDDGF329OGi1z8O^=`$sZsTBnB;V?+H9q$Wsu9D^=I7KT0(+nRPvwlY5x}Tx4)g zRy@>9bw-h55V%@BvvaDDeOH?sUi6|GZHwPCoCY)?vFtZC@$6!z1`Yk_o(1SfQSv;2 zzH%=~>_h-?Nm$6#&HgHy+%YR7pg22Bd_4Ym%(xR2n~phrD$48+zo6lQgSz1n2C=~% zIljB>N@x;@-k^B}g@}mV)`a!Z_lc)!{4Up?#zSeSmKw!h6gl2nJT~@M`Q!v|tKjO& zln8G_&<;HO8BSTK&_BUl71T$IL}}hPSEur4WZ-brldElf`ye%x^JA~&rl8sx)RG_D z+dCdmOa$rQ)P?9wi?vhbdaJ2f&y?vE&!2A2KD$~3#@=Fwl2La7QIU()ynj6=>7x@Y zsd$}@;*c4Ir2m%70OU_#P)qn+Vq;N0e%YI@Jx*3ql)XT6aX1<-Im5Ds?8< zJsk3SagX;Ibf$vDfAw~1MpNvEN4-ysatsq;JfUQiP1dJgpz}n(+P$84sk8zFeg($d znA&=*`eBnE&V{rS(kSPK8-@ZoPof>)SaT_$y8jT6A;X$1iM)(L0ljI+c=5V@cH2L> zp{r@Po;yM1GAT>q9#!njDu=2%p4NI2kYfZ9 z-_G^(xw1pz4Z$p%8@usDe!CwR-VUhftgus4XYQ2G9O|9gssrcLT zXIRtd*q@>2JvTTUJ{fp#>xVMXTl7Q>Jdfo=-%vbBtoj)9t{BA4O>wedV;FLY_20ax zTU{2tatSF8zx4%xZaRgv6RRlXxFn$02`ZK6KBDoGY!o5@NF^G|6f0eDOsw5mExrIz z-j%J=7ImN8XPJ6zNTK@{t-grN`1!0d{kYHHP(NGvmUO=AYU;+V&$qH#$M~~_e3n*L zR3G&4GSMd}k7I4^!yUEXjv*(Zvwi%8EYtg($+(=m!cq(%6Ep4r2d=rD(P_L$6Tju= zxhF^}MmM_851W1|Sd^N_HfOrfVT?V7P`-Zs#l!au}rJ(m^ot8lYe}jpi z;yFzOXlO=}BBFlQ=U;TRnrhpu)bs3#j4uG#dK5+U#d0YpUQfi97BRXNjyn>KT zD-i9633-y;c{qD>h`r|>tm8H`(*X>4p%JwX-J+o>ED4X?nOR^_lJ zmz%gNDD$j)PrX_p zjN088)|0hJ_yyH1y6_Wg1B^=C6a>X|@+OD{#CX{CmOTi1=FafGU1`DN2S;Ao8pV16 zAgGo7JB9yzicWyH&K))uYGev}dAxOZTdEMlt%C#-?8%$tWhY?;N zb;DYr{$Jfe{kDoqj$+1#3IAXWvJySh`6iR#bs1tFOk#qrZJ1{Tj*( z+Ab(r4*#gVtLc*zkzFD4HA~`Ff*p@lkcy^CbU%@O3oxcNQ#1H&DM3i@V>9S406MBj zD-y>MZ8SDD8Qo3mcRvH2Vn;!s8d~zE3F!b1=83Bd*UR6MpPV&5_f8XXBQGf_nQE}i z)gl7Tp#C3wZy8tR)~$^Tf-XR$rKF{$yIT+hl$1s!q(MNs6_AwfkZzm2t0rXDwGUTy9u-vSkSh3*J<9)HXoM9--^6cv;&D%XBQlljt{OerIGFE3D zrC39~I=8qRoV9oO4*BY+1I4B;A;?Pxd3cA1ca^N6b3T=|vI^vUn5}mELjuuP z6uCKnM6I*K=*r4@AydN+>-GHyG@f~2WH>_B!Wp^>u(I%)$k?rUL4-Rdi_Q6i zG3kua&(gxIVeWC2YF;60pHHvVy8D(Hw1HXCYQ5ABMY~Yr_856G#Yo2>q{<0L{?4JV zcOE^fOD%qLe{wqwx2w%6saIVxxp5lRLd|KqjwPPA*Qa-*n&P-~ugtUG?%>7YGI>!| z7Q!AP6+sF|<*{io=wLnxA@QA`s+@``?JepYjv3Y!bx$V9R&B5AR>h=Y#vU5JLV^p{uj;KoOv%6h5l<&|5 zB$GeKe3AV)cx$RszJ8F&>lucP#rPKy^9QjA$|c;mBjqn9Xaj5%D#xh zfXneS&5*h_@Kj=bpx+yZ18{7mi6ik(lw&&8ZxP9r!YZ>#1YNQp^nsb(MchbO3#0)a zdPN7NPs6D`Rn{-P*#JgLESNju93bMB68)w{v=-9F{nYBEeqQkV{Fv{CUtM2anuzFp zQ|x?47SA>qB+vRTpo$IDCakMt_;pn=5x!t`i$};B9C?MAAU%pa5%Gydo>M|UT)HGF z;<1{7`Gco-lrSo#GfhsnK5Y}7UZKCreMmtg!CKm7|2{BTFM6EXuEW}FubzUEE?%O8 zWNMqnkxaB<4oqpyY)Jb7;VhQXrqTVF0JAQdf3q%p|IxbKiyeOJ_C~v|^_VWWdY7`} zyj&VIPFb7XZur`xRytC;^B#1=#Q1T0*5c7Q!Y%it>tr>cu7pIqwlshflcC)jZDh-{ zr>)%*T?~3(d@|!IxkJlj*3})iZIr}r;2&Y6i4ojYlbdhdwMJdCY#cma=5)Beu8q;) zKQFIM6N!7gl;N(H9BJh2IHXM6bi)N$Zgkww#1scJ)zu1OyGqMwjXm?LpBRXJZb|;y zd5hhA2#;v8{Ofj>90({OhN_RXyqcPX%glyV603&3h`6#_jy@|;M7Vk&9)x$jq&FS;-Va0}yPV)- zA~W30c8;m7aj4g_4m7%RjK$ux%K+IuuI@^2689oN0hlqK#(Kq__{52<0 z(TTF0({;yqpxD0!OqqXP`o!*Fb4G)*h#A)3Y$|WG@a$kCL?)W)^~nGk&Gm@tc)bxw z%O?gva}-|iUi(QQ2=!b5RBhK6x+j=;;}+cu=$~cFOS+8PO&rRzMF2zq@3k< zeD5vP#i})}Pd1jE5-Ufa!xfrS&pWEgn#60^@g`}$%$4v_juJlcAz@2%8{!ik9sYP0 zRL@FFvdy24>mBF7Lm>r0N|kDkPx{-I{8E%a!6GF>mWeNwCOFu#-;qJ*q6MW!I4`CI zRd_{!e=YD@)L|x^q2ePf4rf{As-p&%n}Gg9!n)`WhtdaK?!{7aBkn*;*`{w_D06Cr z6m86pM9J<5T*>4kWMSSOJZ*9Q?r?H>72owTzAij#Z>1Zjd*`glt;$vH4oJ+34_sdF zR5`11KavTy4T%1JI6LD|ZOAd5rzEjgID_$X(>!YaU?kXFiboecL8!0L<%jzfe^N01 zhacvXE%irZ+irKsKW@((&3@)|u{*=ej9~hpXK(Sf*o=p}(gO5s7@I?q!(~z?*T1F> zM|WAglfdWPQhb67`4bvwf;G7~-a-+pv1Jx?gugp@r+&tH)MW<-(frXS!K7`T83|6G zO#XqU{z8dfo4<*tbZ}>A8{KL31&g^tr(POFOjcCRabLY;zSApN-zQw+dA0ll7kw6` z_3&ruZx4c>TB+ALSlfm8eb)b60_I6bThX0 zU%EsiJTVTU%*Y_ri63D-xU9=vMz2brbsLdiMJ!J1+X$Du=zcN@OxSZUzJ4S*+bn83 zAp6@@c0-zY0=>BuC+NOXnJ0LDdYZE>9@PP(esz3!J;FzoVDvUAC$cykkYe~>Ir4EY z$F)c7fBnS6u;RPiCgW1{J%&)nt4=2XLA>rAtW(d?MKz|4&}P$EIl|S2XYfoy@ey z{@l+?1gS_nYzD*ZiTacqk$bE;5J8C)8VR|!utP*gS{?uV%PxYV z{IM=Oh2**ey42=Xv#QInxopKs#)NzKrP=AfD_36+%kO`-4=c|CRo{5vI+U@zRB=J)< zJ<%$e{LZHu3i_yOnA9CLwF#IM4G|nDor3gU+E2656PX^p@`6%sh=IP+Dj%tS80e{) zVqERTCJfkt+X5iU{wJyzkBdo}uw;nHS#hQ)Ei$f4xJcd8 z8^dTsM`vWc`d7ben8mOf&=qRe`Y6#VX3v$sGgqev5Uyg*3TXQVE9PVD>&wmV|EEc z0kBZCyT-AMFY}!{eN)VC8i+d-h3qCrx1Y_9HI-?n$G>r%;s|@^@ zac-Gk_}rR7zKrduojdsYl~kzc$J;vQQ(h_VS1-)Dmtee*Bh}>kmlX(>!51mP+_<57 zJ9(<>*9w{eIFcY?qkC}N-d&!jEI{tUkuK-0Uoh1Izzu{eJ3?~dh_pV`97T$eFQLFa zjPJ^&Z7VS28HwtzDA>8YeB_lZs0=TG2bcAb=Tp8K3b$cbdLgRYE_@MZzV}=#8|26h zSu7X2ldXZfHDV%e>dnujxempUn9*AJ#7a58ekW}@nT;BB!tnxmtz0(@^E(z74}jm6 zeRfZ+qy^M);O+ewv5oO(X0_UQfP z^D$(%`3cxt^6X5}4^E0P8M0Pqu?mxMKU^=#I8>VeSW5^iZ$Tv$(0VNK$)9UA+!J(u zM>|Z}ohv!xlDr?a?gKmhBxtAEuO7_&$%S*~oU6fs6bIdosuwBlAJL9I+PA6%~%Y$acX5P&AV5^ zLhXQmY9b=L-e|KTmpu;!MbjS(#m657d?;C?j5Rpa21fW8;#Yl*josSQVf(?1z>h}p z{cZ^yW&F#`{N6uJuo-_WYo=5pX#Ydc9aI>6jF^?ld-on*3MVcA*Ov_7Ct|{S?{{j_ z#cSUW^mkdeZ_#1CJpm0^7=^|8xvSO%l`G&t<6mAF{u+c6=R1&v6) zncNp~IT(<|_$Q(q4tmN2CO*t7`;OE-)yy*Hl9@n4evqNoht?YsU!~c}!o>)62&u>7 zb_X0$+g}{fqgk!eGy4N-9-h2t%!CT#8DxfdF0Kth=Q_V#jKMrilFizK)~*kwFKFBw z22jAN(MZNELl&9@f3c8OKLO@&X#ZVTsz5~$k@4CsD4m-UJ$WJ(jZd;H#Pl8~p@u=@ z^Hj{M_NSma1{RGRr(wZ&Of``|#Ps|Df=SZ$Ilm@q&{P)^`Gdg>MsT^P$DRDQi1rzZp`8?!UTGXN4cBZiRm_yrb7 z0)(Qr=h{Ex?*GBBNWVzkPFLX2viHuaha;JG#rFk@9FGvYP;gIm*y}=`2#26qh?F4| zxtu`vWd7>Sm~>-H*B3XPVnYGIA1y@40&{E>)npFU@klTPn08s*_Shdz)Z);7twS&a zxFC`5k$Zn&hSO!ntDCksO?{wu1Kz0%^JUElnb)v-xftuq^)hC`9(QdBPJ%SmY({r% zu~Jqe+s}#ySV@$`wInqH`sXk|??-$|ew-l>c>r1m9UfNvsJJvv$)lYEd@1WLtH}Zl zE_RD)yyNXTRW(_ms}orFifoE35IE$B$7fO`wT@;N1_7VRPU>ioSitE$1*6(!p>{oT zX9-<$8|T-YhvyXEX*<7Dx9fi7UUzNIdHDK~-h>w-O73f)m$xjWS&;R}g+)Z3y>D@6 zTpR=Q5hHXJ5h4`y2$Ep|MK@$H$Qn2|Z>M7)mQvxD81zJ9f@cP9+pR-iq&j!ff#k<9 zw~)(;m0exErX}55{seu$s55<+$bLPbm|J{Z&|v+xsO|fm2r8-KAICk%CPn}`oHyZL zE)7}eFPG+9FgT|$S*Gu6)CnZt7=!g{;$B+-s&=(Dl2XAGf`N2&YuVGq1AkIYQ2&DO zN#f28dHtL;j?2{lo%!Ty9Lgd^-8rS8o8T4w{h#A_Ti##1hP~(9vyK>E{;D;R0<8eR zFH`C&FtKd;mQ4#`;?Ac@3J#6Z>IcS+DP=46-c+ycX_Yw)0^oUiU^abYmyQfsc?$!%2aymsp>p}eT!Z2ewabmki< zwzx{JQm0!%F)beN`OnhBgJF44yuflqzYJie9Kc`BvzYlR8C#@YF1;+yXXCW86s=<+ zkIqr_>Z{L0xPmMprF6u=>R_5VVRsZm>4zMOCxKri(lbfBTmpDr zmGd&S>z#~O`Vx=y6&0%-7e3%lnpT=mMJ?1P^4Y62x?Qrio`UgQs|&s)6*>!M$QrT> zS&p%(>NayAqa_0R?v{Q~U%u`j5OS--#KbfUedFZ04mf?Ao%U1@6mJ=D7Rm`6DxGr- z2!IJf_cM1)&W|=(sSjhnYhh*ag!b1x)5t{c#@5(PosVGoRC)^$k%y4z^1jWG?OcQF zW}QZgFxGj zC!pe1Uh+EaU%g%GGCuk_akT%{48nhPvX~2I4+&sQxe&*MOY|Cf#$p9v)9MMKS=6ji z37pJ(ABijOg9$`o+D>bfQ-!C~tSpTu-vjXVINg&crjv(_l$@+{XgN8oK|b7LnDs5* zJ8W!y1ieCDvlbhw{@Bm1CKAUpJ<5ZJK?WN=)t}e)U1D~x3Fl9l%UB}f?b%kApL{$< zc#$%Ob-R2k&+;HS1I2s%@}6tMUL0Y>TiuY$Yg&I?rospI9IEwG7AX0si;Lq>9h=wY z%DD~=cLYZ_I&@-m1h)=^jm&3D+O8_4BN>N0t}YE4KKkO`3{;%AgG;&_(yKccX9um& z^$HtOz_I`SQ94^g{?y{6a%}kFyNke(gfSH9r-RK|XP}Y1%K7ri-clsAIzZ`*?)a7_ zm~1!;+K@q=c__X!BTSZ?W-Wa6ox-|wcwyCr*P-U&<&_ZRAgPZ4m_M)FKQ~{nA{PBb zq@n3p{i@j}A4G`Y(8te-(xYsF7diORlZT79uq^I{$I92~5ai|QX^q`JU8J7a?cpFdemmR(->Qw`@4g%vCL7v}sw-N_NWygnnmo3u-TY#V#ZR%QvqGP9UtoS49w;KQ9o<71?(_fWEFD$$$D)*OoUxyAMpZb4|iasb-^E z`^jo_XOg^rKQP4I2X4`u1nI9SgOJo){oed&hFn|tB!MBMeE|pfo>t(tMwJXQAffh(v_Xh1A^G7 zLQv(h*w)sx3Z^#PL3dU)MXyaOejsdLAd3_O!?zRv99c;^0MC!M#~(9;272Y}Vyq&C z^-+A10VOInNNrQ-JK?wD72LWEZO=qSL~J#UaXjlF%=Sjm*M(i(e&5v*QYo4=afnp8 z%DNIZd>*6UhHpn^USTCi?@-s>J5Xge`6afCoV1Okb5tiqEm>z@6w`Crp@0oahE3oVc`)zz zX{Gt+HzC-*{5TD5p!lQ#+ZXz_bM&21urGqrh7mPjUm|pkA9(V^_N5i<%U6%@3J9r> zz`jtv#AWYJ*zkIU4iDds1oq_-dWUw({#VyBV}l6Hc(0h5pzOZ8CHouow!Xr!o+SCmyo2{poau zo(j*=*_ig>h13O=_y-Jv!VCWI(>YF5r` z>j+3n{OOzp+eb#!rK=++or;GC11s!?C+NzJ>FOzGNmG5W>ZNKT`a0MUCYYLD(EfE! zX0Xz+WHyp|QPQ{IoSyWBMWOEmg1t$4s@wygkwR*CFb!%85o2oEhL}}%Z+n9QvoU$o z(cw}OtqFv*PbWpd=X$C`OVcT@k@-)gNX*B}+LGQ9kdSQ81rv{yLZM2|HO3$IyNp}s zv)~6;toS-lbY0%_y{o!^vlOzwmhwjx8wndxy)Y>+d@y!`#q>o1V_k}u|;Cl1!s39%WYHWZX?rQN8gmNF*A)(T?#Lc>L_P3rd16hEZuMN_EP@cUNr-UQa! zpi62h1bEt}u`NW_O)|Trku_Mo7I`p zL(oRUlZeX@LOjHPEb=1snxk96?3YEC58vz0DNTuvWVyO1KuvpuY?QyaQ?1tXAp&8H zjg}H`OCUs&m=q>0feGVbI)^*TW9_pfCjpk{#}#!l^(1S{-F^4*E&{0<*tKq-3*^Re zT~9^32C8J?kqm}qXx(gZ6Cu20(p`=6=i9!uP86%?Y5XPH4*Ah0v$kS>s&~&fuLDDB zq35qg!<&gw4~XFqh7f7E4IY!C3j@mrA9H{XE2#3*ts{cFivTo+oK2O7d8Y~yo(!2; z^#f%2b0yn~6OGz?0z9C>P3dvLPo#8P0~Qa5dQ?Xmb(m)CjM5%oSZjeButha}li zy#yQ0=aV%QG$9hrCp#}&Ah>@i4Z7bK;j{hu@Jpv0o{bNX4W~w)Z@$MiQfOc%ZwX9~ zN5eV zOQdr&`?h=&DskO#WP(b#6T@_dohQdEs7KlF`fKd6J!FS}HJHDO1Nob;2Ah~B&{Z`5A^aIhj^gZ#w^h^e@J2jM8t)3p<@Mh9Hew%|D zFP_g2wqjHi!8Ru|y1HvjEUC{?$)ma}?PIsZcu#e;@OK6X_hX>E%-ogxK}~&H?s?r5 zuI02S5O7rc`d2C?LK^o6D$urGc!$0sBHC1Gm7 z@k=~Bnw-HS(eB3ECHDYbK0rNx)Z*Y2_jL}b;UALB8*|I?t$nBB%UK}sf!VM{AJy?)dag=?6vZ8(94vqAU8M^Pw5Z*M zqk9-6ztmF;tSD_`<8Tz8M7y7Km%>B%5o|^8$<0aUS-^_;qrTw1mk|-UH&9Ip&jY(A zfiL~N{SMqQ60>SG6LqM+9}ky8SeZBI^cG_SyV06)9L(mQ*H^C+an#ipCjA_fIo)5e z=lJG%`!00lqi5XyH_#G zpF5A774m&G^~)0ltu^1bw#DBp3T_VR;U)igUb|Rsr&F^%PoIqMOQs(ZA*NvddpD3N zCm!e4VBr`bQy-9UQ@UwrAkRzIa*beSAk)9Pi|uQ)@NM8zEY0b&t(%41Al@Zm4Rpo=)j9b%);n8yShBL`~H!7y>7p+)ZJpT z?5X?JX%?6+nl>yi1O{(!4mG%*AApLcC#%8i-ohua$v4~hEwN(YA0<1%vOI7dSH(=W25{KfIY@|LLfq# z3f>Z9DV+r&zp1KonB8zl>AX>c-8A*+xB|MCA>Agv60PGtGX9atc(O4Pu8pAG%<3I_Kuf`-RRv+jye)@-evOKV$Oj_byQd}A;44} zwd6$10+`nrV5o1#6L6Yk^Vlq}c2XxRB@4R#bg$j2*(d|E5Fs<6hUgF-580fZO|Q2G z*@%dPRuk1WSqu=^_{hkJ2<#&U@)5alI4d%E3`}6BAo%N=2FP+C@stagJjBLkV9u(^ zU@9WmVS+4n?^_@UX$M}$f4Jjo5#6rmNaA>HqO_C1h=YSsbq?sxQBBR!x;qc%iGL)C z$r0gxx$eT$k(>SO3mt}dj#1;RD61b=(~q2Ceb^9gEIp(G9Bgx+yIj5f%*mUV;4e#( zdT1>#1mGd>ffr)DY8a~xL*7sc*rh<9Wy`#vG32Td9CsSC(%j#wKD7;95}8&2(SzNNF%sBj1gxK_%|#sC)Kuv=G(qwR4HqEyMVgO-qN3f1vZ^rvKh6M2Gg8R?>M>iCT650+ z+EOq?pRp+un}UMc^EnE#;Kh!Z-R7h+&^CqL?`?K#8PSucj$eIH*T;*~F1Ks#w=4Fo z`;!C?ldmt@`)ZdD1_1`Y3WhQag0i7Zu!M=CN@7-hKLMgMP#Rma*F`^)r^*EC8)X3T zdIS_?Zce)_263%_z||fAT5Wz^8{0@N8<&nH$K9Ny@%H*jG zmaA%g)-av@DUg0kvgZV1wYSE5W4%Z}u88=Eyn{yp!%p|m1oc2BQ{)z$4pLR_Ja}58 zDk#OY>*HB@17v~q+TyD6)M)WrP{lkH+aHt!@1L#b6)6?#NhpKa9Rd+_Zk4{!CXK+BjB<~kWHW!ovAR7zdGAs(!e%Aj(A44jwW=Wi=qh{3={!C z%oG%_Isq~d;MP(DI-p{}1BM|$n%@K!6toq7o!DOu4^!u%szTHa8~5TB8f1)H`LLx$ zngOG<5cDJ%=dlJ>Qd&yt`95erI(P-pul((X^S%e+_aAaU2c@QCfEGxrc;E<5#q@M< ziB-qQ{Hii`SQaifHl+8V#j?%*Ho#NkzF*gFH%wh&iYh3CZB?%j_a+Hw*iT!xhbm@( zca%7Hv~EVk9k0IL@#!tz6n_|S2g6DV=rDyXjZI{AoR^~S9r{Y7GMH@|?oZg5n;v4@ z2BEzZm%aFwx#!`W*?>{r*lJ_m*rd?$=A8R8U*rdmQ^NgmD-pAo4UnH*Pc~?s9}%55 zz#}5B4w*#S8JE-5q^sj7^EY}`zVe$z2A%F8HxuK9zaXaW^1m6qhg+h()7GTtazY+t z3m}0<)g|*~n$>TQ9x3dzQb&R7XH5z&j23i#U`hrcADYIrz8v4>T2?ZM_Toh074Ml` zX#$RWVf~T12B}FQOHlx0jTAVPO7plDB}FTfD@Gok32pncwX7+xVKA^}@IhjnUQRbt zqb4xTC1deIy&s*&G;L%nZu@yDx;0EcZpw^^FI@~C7p0}a1E?oJ$&64AdYKSnqIo_{ zVkgD%)PMq~cY=v*M!^jCIJP;mLNaj^;)dk_x@+R>bqFQ}Tg;gj@-#dLMCDAUrAXDE zw4;W^oQ?N(Iw(Tk45Wx0xn*`h>v}%sET<12;38&i;VFuT+QWiTpU*wY%O=Qj`-1n4 z;XD&S(EJv2Z)*+&0I(C#fm_zRUXDs~l+nE$BP?@mzi&QQJbZOJcJ$TVt=6D4f-2Ew ztC~(bKSqvD8+xS%h6W`n<;O7cH`Z11N|(I?jRsrv7Ri4(m0SP=I-`nwu?CRBkd7Ov~MCE=R-NTY$YC@Bz5;#m|pN1;hZ2)y53q z&Ihen^5a6oI_>?RE$a`X1SZM=Q0)Y45-WB>X8*AoPQtA1u{B5 zHaZ9ng8KJJ=aoI3PzlBdR(caRMi|lUu@Uh|UbJQy|Jsz>U{jn(pR(Kw-Ng`du?V^a zUyW(y+Pvntl4ykT?E1LzdZI{@Q$l(LX4RKnv^RdN9p_Ycw^+jpJ^_8>h zUMKZYtI|F&E@HPso|obP*P{cgOVgk*b3THE6(N-gU{bD&FJ}N=tFkwZ>zR)jV}nlw zsnYO36}4ZX9vuWt@)F^;fJ5}BX11yTpK1K8_Hru_t6Es{8p1W!i%(*81RY>X^)Yif8m$K@6O;qwzlSNAhL&GA;N!#;Q;I?28FDuidFI}O}h0a@~Hy4x+jCa z^s{G5AWzQmW`OkE9yB>n2ELei@i1_$3xN}23Vu5>jRw~jy^UTHtyCP$;+Q$jd)@`r zQeRa%Y#Hzm7r&P@aGqDv(d zI7~;O9ibHXA0SmQ_;4(}rQGwq`tvVum!t&%pLe|$*~$N zJopJDa7IuhyF!pMN@n?Akza5+z$!O1T%DPgc;AA5fvKwqAY(xjPN)|=iCtnL>AX73 z`sV!crO@)P@l7tUs4GpMcns$+ldI~%Ggezov8N09B7zsl?>i;)O|t5(<_%H{IT7<% z5pn;)q7J5zh|5I1!+^nVg^#%zR10A${4hsw=srB;AvN&u#K`~f@ZOq)G)ms`touVG z@7WcyB4!ySyH*HP&+=P>Vob$;!Sj3pN_Q~h=Lp+S8$$Yt3qWjjr`4w>%bHw9zT;kW z0Ahpo3|kg~C9Ot2Yon6;CTTWZO@HGa%|8Gk`b-#-{kP^5D?aX^>i8Zzz6<>^mV4s7sX^uP*lOOGr%1X!7tFKh7D zWQ!E&#+l(aS_H6ael%9@5-eTNuMSw4P544OZacmQyJYjYU@aG6ovViwP%p1l3DIuw z>WnZz<1qj<_C0?KK~W;4k`1J**-ZV+k7Y|8Zrz$F% zYAAeF00VgBI*`9ag98A%apGzY++ z2`ENY2(Y-W37R#__@328jfLycTAAS9lw>fZ-ohxKH|8FL2Nku-W5fdBt}Ms16bDfI zA9(vT)29;KkKgH)6{d|T(;nnw9s8;8us;kFUiY!Iwd&ACmJ?H0>;=ci;F*n^@NVO> z%I);fo+0j7z3fc57W{jvaDh{hty9kML61kfSY24E_9IxHq`&+Jp21w@C!(QrlcCJ?dl!Jo()?5PWg;MR8O@%s;7== zGrfsnKp_9C9%W*}j`thRaLaV=Sus3gbEg^hvmpI*sNLr`&f|Hghh3IyRPb6 zFi}?h`H}HAX!Jo>UeS8EypZzBImz?utfV2JN$khvs)vUl-Cj(6Hs$(oFn zlKcF#*VZ=l#RudE;za*a1q4qhXotnWVUV#oRaDjT0o(qa8YSqu0xdVSebZ;ww#1ZD zc6lB#o?Q$CGKxp!V4#~Vfy5r+3cZlIxu$c)J`h#6W!n1mzGOwTHDzu^K;h|Q(E4^h?8DA=9CIXXH z-o+kek#pmeMvDi!g>P-%kz*0sSm-}AM)Z^drt*nsDCY&;7uWN5<#j9CIP~gDV8FI= zgUczq)c~p8`uGd`nHdGp*miXIcG8g8Obx6JQUx=JV`m*?P}|ztjL)FaFf2o0vNi-< z-^SN&%iT<-yL>Y2c6*OB9&;P4E0u#_@X-0f+I43^vOU4dNhj;P+SP}+h=lElY#hfJ@LXS^$btAZx2BS70C;s~%{ixRr7`D6TZs$A?&fnz=0YVkjXL|A z%WkO7%W4cx=jO7p?1RB%in?cefopMW_J!K9hq*NZ(6$Hc{Z5-4$~CLxL|`ttRkQJj zJpy)JkIU_4R}RzZRN|Q$xc-Zgw^n;dwbudJv`rzaNl{Z zK~r-*JF1|Wu!lyFTBhSZ*u2nByA^@yiy}Fvo)UqkLU-LHQX$2D8Z;JZB`HSa;+C$U zS|qsqe%Sjm`T0899Q{?oTZM%d>8S>-)8y5n+cUMqS926kXbYtL;svy9J= z3;%+5ncF0~@lZz0;e*?W|ce-W~W=5V&dedZ9khvxc(R%RAR`v+;W ziOB~X)J)pxfSr*694!z(iViVqMV2^(y6QCK6{+ZLI7eP|bxUjS0p8+4wXIBeS>N^`$i}h&tehIK6AY9<(3f@A?usrve~n@`*B~}` zJ$L=eZN5pQ++TgGT7fm?TY1Q=x@6YMhwfJa!lkkgGsA*5h0bq9 z9yR0W_MuvAtvPNX%&J#)Bq6I8S!mfcG=|r|0j{L_@sg8sc%t zoP;J7uNxNbXjp+%ZV_bw?gW;!WuB@I%r(9kTQQkDz^~{y@b6|CE3h+}5|Xtxd54(Q zf1fBf+5NID$zq~VHr@TmIYH9yuxOFf01YAMCKt{I* zQfkH1Nyu^Ab6j-Ar&<+x#_pFnP}%tVxJk1v0hn86xngWt^ac~GlocB(E&$-Jnr9c( zM*JpUMjf%WZJVt0B?XyZNWF7^h1PMF(7#AQ0%=UE=%h>8?2j#YiYAoWHs@MYHs_|8 z2tWx2ZrRh-ug_iw^R4~3cg&0!FmXsxKM$Rr!ye1Dm`*v_!?{R!t9raCJjTc>(PF4c z*(j*mi87}!B&KD6`~vs-0=A?~-op)A^KIg`ww2Phu8R4CKl~bBg)x`U-V~BF4eA_} zGjkIUsIo4vYKfwkv1f0i38qvHO9QRQ(%KZZf{@P3!hvfZHHZh*U}7)wYh96w93$3&#wiL7p~&@K_A{vVMe-m^Kd*%5nxlyI=F|Wjb#zOh zc4Vy~*s0Fl9e}|^r&Qc*f<30aapmpU3591TuMfATwt?$1nDsp~Gc#9i#!1pY)mu+m z=qAbIS%>_nk>`2`DgAJr{q;eDb&#x#b8+m0qEtx9XvN9ouFufd!$;&+8!%!GRNwEt{EsZgE zZcj`FuMynf?h?!Dxb)+UANi-Hb5TTG?g=tZM1_4(nSBvvJm*;RV1M3jNFz-lXq}(* z%ss>6WVy;~n1h%5?FmTfr^$cg*d!K^+sC7erT`E+KEgwK?lzE;{>#eVc%C=EdcHw= z>~>Cs>bi_SQlzSiX3Oi+lH*9^&br#MqBBr;x<8UNmR7THwo%H!JyZPJSB`&I+_h}| zwQQoG7U?ZkaGSQ>ha@?o_JeoH=9#0%8wQ2=lDtV;_LQ5sR(yssvOHiOuRON-pv3)p= zn_%eFV%!7 zHeEv_;?|w*Q7%xBxSi~zfM&N*h)T$10=!LN_;-O4=saXosT?cH3Zs-US-MN| zX6MuAcf*zgpFXP}ZPl(%W(2H53k_yU>A1~@3+o%subj_ER+swuR12ocB6*(L4SI2v zJNG9&doB0u8MH~nJEXcDkWouF?*fz(|EfO-F9*@GJ|hWDC_mn^W-!Ub<5TOZ;1MIBwIMxYL-afoNsNy3p~U_|*DjO-C!g-$Cr*cMH!5B=i^1rQ6G>Ka zz)fAM-KAUq8|5B+&AjV4T%^piQLn2PK@jXD6$So#^punrTRftY2T2i zV14@SyGpt}RbPt@FiSBpZQoo}z1|9~FjcMi;}CBj3_znJN-kU}D~$78RIg;DWlFCf zfo3~*u&8A|BE<>0H~h5B1wN%+_p%vqv|qEFCfY{;P|{Yn@&0|H)b|7&kpop9YkB3^ zf$fB`7+gc2@ZJdI%^TmqY@|DY(ra>&-g&lFyKM_{Jg^*%*^8u8|Gix-s@x7F>Nnf7 z0w&Je^|@{n29k0@LFbLKb?xVeBfujAO2r0C79?xem)VTT!R}r;CS?Ua`^y5*zHPFI z=Ncq8IIMPbHvy0^rsZ6~SbKnpO2Q)z(n%#*nQj-I)F3fiO8pW*{aUeA=3PTG%C za6fx$EfGMc6Pa5<+Mn>;>CKU;KfR_DaKq?}Ux~G;=DPeiP*gmK9xo0rvrN7ptGK+s zqzK%zbO2xN)pld6roJz8uEaEfmgrbp_}`Wlc{8~+(`CPA;NQ4PPAMPnbTXHxQ|J>g z8+CQ<)Qp`;)gNPlg0jd|^*jeelV$bJ5d&XBF-=BPqF6}mLt0e|O1IkGg#?zbGW)ID z0-V`C3VxjY!F{?E9eK9IOH2FI+9;v|v1?g>xCV9WlY+v5`srJLdSz*(-YtbL=kACS zy$|30aTFCQiKVs6p3{=J>7rzX12?uRTyE%dEL+6cqKZZpf%_k!7!?l9JQhn05GV^U za}Fvy0mjh$({9`Z;{7O4(}AWVvP=45fjKf>^cQfTXE~4YyRW6r;543q)%aMpNB-?8 z|5%ScdiGd~=cVQTa-YOqz({!gFOOm#4}fj={BF1=R<%IhEc(%Re|g#ed@4W{QAOo5 zx_5Q)NrJ;|#C|PI87!=Zj;IjDXLq3{0v#QOs{*Ev*zYb=;ai>%WB}WWJR{+31O37k z)-Z3j1l0fZ7UjcYlF=)pwO{(6c(R;bDi7vMiW5q9e2G);G2A+WfPV=sR7eVQS2 zvl+q=@UlK0I8BwTg77i6HGv-OfM#|0cUIrO3C#?=8F~$$P;oGr&-8bxBdq|>`ZhYZ zX>a6GB_P%cgbF)>_0I3b*)IjWDn{$UE5$%G5~@hXUq?j-SbKQzD!1mkP9VBNYpn3Z zu&RRBNEDj?`JRC#+M}==k51p=HeJ4Fe^=U;1&kJLeV-Wr7hU!id?5xPa&Y8W8IT5| zsb+pi0Rb!xI12pxH#_kgG5&`D!hW4V25q!&0V=?67xSP0j}8@};CFs8P=BX5|Mrc- z6|j92{{24w^Mr0zR)PaY!ozv}_RWM55FapVn`z`}l^P;wWY9K(iM|(MPtSh&6z{2l z@pZ5esrKK+hl0fqM7zn#RdokSM_Hw=Z}+Sg3b^!XW`mgvovi=xjvG9%>QYKYv$Xi6V8K;VbX zAZo{aQg!oPzn*ckx~&Jg-UBnIAMI?xEb_lw)M7vsWv;lgXyjY`x`|INhyWT@MX=m_ z?BAaUj&qzekTer59*`ZFb8L}r1Qa3yQm*J<;7?S(N!|*Vi^kZ24O%3Y!CUyH9{+sW zec$U5NN^W5yiKhMtoQt!vWLHp7Jqk>OY9v-_>joL)V*` zx6sWva(5y6*$|-D{wZ3Zd3w^_uQn)M%7Gy%`f+aL^IE{d*2nXa|5=)KW2tVw8@#vG zXW?+eUUQ{V!#=B5w(qe`fj6Je)^zy`ff@(Jb9fr=m2-(VENyTD;@yby%{TuiPyWZB z{6BXC{(VFLzSExyfDO8b{`)s0r}<*Ft2d>-8OK2}PA7XR;qkw53iWqT&6I#|Yxlo$ z3Zz~z$weRbm1PlhiBYNnY0p33@jXmAAur)v=ocwGo@RAJ9G(Hw5keVgb#vnXrVP^z zO?N)m?qhAN;*k{h-8%jyOM3L+S!S0rZuZ}Nr`W_@Ah2;he{;+KDHQ)NxXS-r)Bm&X z@gHhw3e?h1H;;V@7fiAL9~#DgfAc@hfR#890Lhr@|4VfKclG$!UG-lZmw%XmU%x)Y z04_a-p~dgr(;IR9$93qD8mK(t2vFt=awwE#+d@RBs17wWknP!1np!To=6(qQ0FS{#Rs&;QU# z6V^q{Y`BPPxPF!Ac6K<{gE|B+Bi4>#C7yDCpJDqhmbIqVm_l-^T^3Z+*?I!1z-Y-5 z{o!K2(8l&mEgNT(k-=)VrYDH!sS}=y8zou$Sk!HqfZ~4wTOpxDw$;3_B>x$l?N%~*|5d>jD|Cx$=Vx6o->x>kPEl!p#X(YZgK}uB44E(;h z2)`oii{Y0cY+@4UHeRFLXnCI8M{ggTgnv>covck4MP_Y@fX*$a`y&P^j`ela-imxl z+XA2|eucmxJbWrJ{y%Ch5nc4ktYXeay zJyh;Qs;LvUOM(R4wut|BhXcVe@(hZvTy*e%cIl82mXB>9%W8D^_;}% zC6hcs8uChHz}aQ0tM`Wh+$jxcp&Hv{WvVM0vV(z(?Y~%Had#t;@ZsE%p}AvHS<$?* z{r4QElZkAf7IB(Qre+?4J$uRvxeZ6(Iy40#t&^6@U#3GMjw^s%ie_ zh5mUn07x>qKs&7>vDS1sVz(ysEQ2v5Y6l(S)08WJm1kHmX>yTmWczfaD{0#nW|K*l z0n_@lVZgHk1uU;@V_FO8-<=kbGhc4V~lsa@00g^KhCgE&tN;< z{h&HS^E*@cmy7e2c!k$1aaf~tDpLkNtjZ=5a-Tt2(#hO?dWDQI*>_Mv%u#mqikdA| zGY-a`KB_eTiG(Zc-**n9tTu<>QpQ7pR5<*E0tJXX3`rjo!9Sn+08TCZwDaRAYWh$M z9KKKo#gEipbQprSq|an2$pWAHs#DipoQ|`wZgj8aO`{{j3x+*uZ~;%wcSS1nt)f18 zV5YA+a)=qC`ENo=%@_LqNegGs8$BfNe-ICLXPqT_nei7m5~=8izW8+3SkF32`%F`p|BB~C=w{J5#F4>YFhpWAN#q&VI7cZt? z;xM2}byKiBlMKE)Wvad_{?vI=3T;OWD#+Mx^h;xQe{JTKU9H3idq4QcMP!I_{X9vFR}mHnW{()BQP#r7&QjeOS(Eb7${s>a=@d)?Qkh_ z?6je-1IScSK9ZRcU$iTh#juSg=}ydDl~w3$Vj0y(3bG%k$ow2&569$vnu*ooJjGV$PM^cTI^QFVY+|1Il0^Ld_5mq8?w0b~ zmmIq3GPG_Vjz@wZQO4%TgVUYGc815!sYrkXSQ`sE=1YH5)R$g_{)E8k6%?A(V?Y4B zCy<=Mvf3=^%9GAKlNOPJ+K&mu>sGjejyTy8AUJU}X6HG@QeW|%#^WTkB3k@Iu1T~$ zTXyU)UItL#8X!S57+#)q#vOF^zfEicRQ@Si;Q90CKm%n5R+Bz7BoPXx6Yv=((iAxk z>ms|pm0_vpSSBSrp?KmA&JQ~#F)LED4ib2Tr#QiEt-Nb9^k4B89w$V16GNkfVfgZ1 zY4neMgbjtWb;E`(y2`9KH=**!oUpcrLx&>2VAzXR8*cYyQxB>spPi-C$5=JaEfWNn zCW1I~DbO)^funJZQ%?sNb%ml8!Ql>YW`s?eW6A2W;0JeQX>@JP#i*MfqQ}E2fM<59 zVzu9*gwbis3!%sYK0f`kO_eUG=(0-OoQ;^xFfakUVDQ%_p!+*vnkcVTKaaANz1<{o zL>|yaR%IJhVBAO6$(!BjSH(v&DR0N)o{_-1!dcIx45p<3hkH@xmyH69%Ax&U?*p(= zpS*EPfJg&$r}$-{XH4~5fSs#8hvqrYgjkN)XkO~>&d0soC zW9X;7rA`@}tKTwIldkkd90phe@M?BeIEf34o2h=RA=H*8&49=+G)uhi#zk91mL7l8 zhk27w|4{s~20Eq)qxf4qAjHzYDc`&q<-Rn($DR5gd{>(gjJDYg= z5y{vq<2diK8(>v4`9mo=bWFvmKLN4;*vRj_<3zuIpg?4Kx^wh%xIYP8QWo1t207Wp zgQq<&B)1%LIFiOP?m1tvHcK?d91C+3hCNfo7BIMllS?pSqj1++>=BSxd8~SKt9KIX zfO-L}mqanI&DUCQZch)E6~Xah`{9PL3`wZ@&UdWEd9C){sBx>ManT|Kk!K;NWgt=Y zw%l40Ty2--c&uzj_CN_-|WZ+0Tt&HDoLD}<^_FU}cZLNsckq{i!Yv4sd8KCgv- zJp9rjN{-p_)3L8>#ybh@HH1g}YHom`kk#)2*WN;Ueg=PS%wLvFmJ-=l)muLLu!DG+ zf9)V$H)g7Rc97pW;#|L&6@s@cXG(y_Vrln?g-Q^X$g27Q%jyMA^-#0Qt35}nBdW?~ zvdfm?(0-P>x-<`#v4btAJdsk*wK~q-xZiE;sZ2f$57mxA=!zM@7~h=DYgq=3vkYL) zt#%dwpYe0z3y`O4h&dB3?&IyXKJoyFrbV4O`r<&Nlz;f}VPS+xT`2wP%;TK0IU()h zDDQV>&hyQzN*!p>4E*d*N0Gy_$@49;1KU*5uAh3L)APwVKBbPqBYlPMGp{5AEJq%d z)Wq1D9I{vRX|8ukwe8d~+}wea2Q1txtooJZdfpp%EKCkPN*yBsk=Z^ ze4->Uf*0#H9*J<10Xsg+X?S<3+!mNm<{hbuQ5SCcBa&}0Lb-q93AJ@`b(T0+@Q1J9 zNEl-6zAGY*7&J2Y@zfsjz}w8L@+FWgjj#4`l^WY9fj?&z=MvC>=11c zUDNR>eJyycxm>|6h~+I$&T`ICK78iXh_e;GMgzrmt9aZ?yk$V^`hKw|f}%&E?U5i+ zHc&?ZSIDdsV+x?WsaN7#3jr{s!$et-_nwHy>MRh;yo{8kdGUEudusqX1^xoj3Mj;k zuLJTgEUL>RFNnKBdEBT|T}e>-5hZ6Kb1|51S>Q?K-Qya60btP}pZ+2nn@6&Wc2JJa z3fFT_6K!rjni$m~uXxM6G+MB_>u6n6$5)u7VWb?#&HP~-#yzcuX{l>CVlg<8@1p3c zwhH~qp@10ush`(^Krm}rlo%)HF)3f@uAITpplD~)H{-caKunEYYWCsZ zjnIF4p~_YT9GdotD80Iq4JOj=)oFr#pFJy+eZ+vZ_xU(bbUT3N)9uX^rEh;BJ|*>B z$5E50U1PEMrin?QJcO_a@WvP2sOX7_GCyR<{iwsUGOA@AR-`jA*~i&swpVp+$O9n# zQ-E*e?kpePirmp5`?MtGK9X(6$r1CL$v8i_=D;Bc8Ws5%K~V-jAlw-Y+;^NCtm*l0Q@t1o94v?%W9yX(oC# zKBf-#V21}CM5}LWuB4KolJM?nV>6LOs&Br8A8Pez>vB$3OE#9LqIp?LP5qo<<^A4) zj(jU6fo(t0bYN7=8X#eiq@~|0?nFapi6lDPUFjhH_^9MmWCBZLRrFinRz2L zVG%ckhJn;hGiBmV{#4NJQw&}B4i_2|eB$D})xo2T?D~~kvejvBAuP09(vnQs;3FD6 zN$h~FD!Q?BH0{-Pp`T8UB(6L+Fso$A+k!*z%DKeO32d9Rrr6M(-tMzq4%Mmhu4v-a zkI2dAkBDQLP9#0^DKI@SGk*yK8*?&+-TWySYEn>>;~Qe&pFd8Ps4v> z0cf@xrX2*zCh(UUna8<@J^7+xmtVF}G9%e+gb3)BaGst)1u&r8t3~s0ew|t1bh^`T z);z7mox$%WeoCu8QaFL6M;*4@ADs3(w{b_|+^$jAjk94NkWd>xI4CgYr216Tl;iHsT9wu8_%ZY9v^U6EwR##N_z_tSMGs^oj&;QfK$sjr^`Otc<5d+T zYMX?F*LV9QR`n|LK1(Rc%jd-@y!={5$0kC72l+8;D=@oMR#$kZf&m(oAgT?S`!$RcieWDEX09{6xDCThc1{1N1P z8#qiduTj}yzZKNXJ=u^n+s_XF$LuQR2Z@oxAvDV>kNzziCDlg7>M0mR)CK8-uG`la z?y$b!WAey8LV`|Zo%6kE5b)U3b#EWwAqy*s17s|IPvZ21njrtx$v zPgzTl${{6Tr|D!wOafS=dFZGp{bbqQOrDQXsirWHJBkXJxuVs=8EeMZY|Z;GprfNq z{F3y?!&RH=ea1I1Te`3D(So9!5guOP`d4`tfFxxB6viQH0oA}>*v{wf&ZRLSVaf%h zg0x}?`LgZ?UDPDx;epvUJU2}sR-vaFWsTvBy~znjP|3NN;GfyD1SSt+@zYANEP*`t z!cw)8!Qd25ws|tnga36sTa@bh@u+@O&fBVy`_#)YYxlEyvyk)b>%31wjd4vdty}5G zi=tHD#ZGnQ0)4N~c_zxh6K;rGF9ZgT7mP72JW+cT+*P-N2TUaf@u*?TM;c9Ow&NM! z*si4;&6`vP7c0k$6-so)m>LJ^0&B(Qk!e!}IH}aWJd@A2n-Sq%2%F7evT^D>?^?ro zB?tQ%_)A9!{7$hXUR-m9@cf$(e@;eD<;}H0m-r^R4Dj_DFIca2mN=Mr1Py?|WfufP zKMJa0D!ayy)o&p&Vdk4dRX#o*XFmVbg1yJh>Cm$LMNPf;xi_b}EcG%ab)DpCoa$+D z>bjwZB9>krX4B{vLWgJQ4NHN_^>*-Auvqbi=ve2d?Eyq|_M3>faZ^O7I9n5^NCe;2 zuyYA*Niv`LV34q}&%^4NLX+EE_|f24bE^h`wtV;pG3_|_ppGGgIh^JZEv8E)7Kiwo zC(25?x8Bx#pXZIYiu6kLS^}vph~^McfXH{()z{7RQeSrutUWmGt@7sf$JvQ7MEwUs zI5v9v>f;YnsUy|jU-HtsV3+E{7gg9~QtrltWfUy%JLPDB9L%QD`z!us#wc)J4F}sU zYeF@}(TibF=x?*(Jl|dNXP*AC)mXWDuR- zV?V%kFTMOMU+77ENu+=w+n1W-cFeRVJN7>5>1?TchrSlD=Y1$+axdv{FXsfD zP|+SnWDyXoZExOkP|Fbf{w+*hNm33_M1=l~7y|p;MMaxSl&-LtNI@Wy;(GJLS(qF~ zT0tJKHv+e$ykS4c4yDf2FHcm-z&i-C;-ghhSn^EW1kawWNa9y=8J4R1;jd^;-und9 z`TiO1V@^UPE7oqDBa#@zr?t}3(qQ^m!E|RDZpSXA0d8ahR0a7$1H!B}se&=EeR-T` zwO+8OUkNx!dj07c>33!|;XMKcezWrBWI`X^>G94FQQ5)uBcH$33tU%8lB9$>o~@ld zVe>IK>u;3;eip!Vzb8qM?dPMEpf)iZ#2 zET%GnUsY^7Vi}!)^})9AR+O8>1dZ{kD{%uq7hlvnr1Tslo27$~txu-NtliOGMg&G$%y zlF#*Ks?yac3rop#H&t6Ia_65SU&z|=n3D3li5U*y(*G;*g#7Nj+4oIAX;gsqcC+ zL-6Iol5&XyDPF!yCOZP!j6d^eo(~@upgO(RGu``SL!4|wr|;^GAM5&sXlU-QHU=z( zpZIQXs#VoiGHT;_*vqK&OZD}FtLFhD9zbwdW5~8lGq}+P?!rFRd{*hlx_s z=)l_?DiCc`UxEVa+sBOPFKta6O;c0=3XgL~Nzk<*hh{=hC4?WAb(H9=r#@1IzjJd+ z<2dZm6I6g8&;E4>@0-bb_AsZvFAqD^Rn0f2ZrP}xuzv#O{UfL;dyq8#?dEK*p>o=? z8`YE^2mWndvGt%P9j3q{deBEiSDxwkh!=bpHX72t?>2H<2vUXGJkZy=iHGWsJtdFNqZcR9L1#ZeZ z%r!(G=^HRUU&h6m_;qThJ*`U^_SruYe?b!>m|m>t3LUXu3}0wS4~1UOEJsjBh-B;sd5qzR!wYUS)E<~`{}MUU3rriEJ-l2&Lo-!8lvT}2f@x6t*s37 z1%kbuX&xl2djj@<;M{lGD(Jxc0y2Ig{#Eqa7_gW5V|jirncoTMj+{cYek6{g5-jOF za4ue_zN?o@U(@R)ZTxx_Oe$;55AwiDq{-7Z|F8^>PW9jheW?NLTSDWZ04T9$GT-3D zbGqAZ!~gfSnv;Bce_!BF*L#Ko-1`SPGcrFBq||02MYVubr)jSqPdJ0+LV7W}-Bz{l zZ&hFg1o27%z{m%C;r$+_7kLcA4}FkoNqR0m5t>fyyO8}y*wE}2`~JdEJ%ooVhMBfR3fA$8$u%;+(kabi6)xoJP& zZIp8}C1FheaG?nKpKJ8@y3svGou_+19xuZX>Wir&t_w(ZtUn?Et{)eVFh=MV`8gEI z4sZ6R#Hz5!5`NX%f$90n@Y70`#~Q{!OpDli9;b8o;jc>wy;)%aEBKF!mP8$%mc-$c z?EF{g>QNVo>)s!foAMxvVLJJYm|Rv8=Xj_(*>i3BP$`r%I~`iZPS=BaoH*M`=+N9P zxB#uSPWm_q$Nc`AvTlHtqm%-6so*t9RkgWl$^puL~96 zTY+k#oLw0=BgA7c=<)Q!m|e)K7X0T!96-g9=Q`lHjnzHnvc*dDfmFp)h~ahW`|9Az%0@K1&uB(DYmT5WzMVi*r3vVxrso`tmk;$g| z>Mr4<(Djz*IQH;re;gXyaNjQcv9WGz&_RMk)vZ31K45EWspT2JjowL6X0se9Zo8`} zNG2ii!GgH1%z2)#`Q~c_$tX%c3%r4L@k|anAS<8D865K8Iaj4iT({GzQ2g@x1Tm~+ z_mCH(?!#vn`FE0>C)gCAe)R6FXQ+SxjI!!U_14lV6rz*ejN+>oXY!gRtTT_zQ7-YSszy+ z$2EdXQVqP*2CU*&Xi7eV60zj*^ICLhrPyZ&X%$iqwrM#GxN#yWb1mXVh)UzW|$t1tq0YaAo$vs3N~ zIj0(=N+q5fZ$TVOGBGLX4)jT$K`+Ktn0mB8d`Eb4{APcF@2qiB*txP78~$P;7_+Od z9Z2zxP#RQ9kbZyeOF2Q@?~SLl-T5fZq8RVz`z6sNUfPe+;+IRPr7JN6dXPl*V~yd; zmFr)K&4$WL&Vv#tNJkp^Uxb473z+Rw5A&+SO}$VfCrCQCpuF`AdJMUp@ej^mFN1Z7 z?PU#P(Lm|xNFc3=vBJ;R&ykj)^ZXF|X3J*$ioUS(>;*q{k|3nc`PdKqFfXT`BY-(w6t33uCte4K;`s<-P$OKjNmktx3A}u&{OV2(yOv81n_wM1E8I={! zx#%N5t>5JvgPx=r$Z@r{wrZF=4ja+hjHMy+2ud%8^EI(wN7y9I0IuJMUk4+FdB1#o z{VHY}_4Z5oayv}s8k0p#ktaxI+CvGXHljIRTpy9FqZPEZ*O$QejG zk9tUy>#MN40B?yh6xXiya-+qKTg#uRHMR*VjB??## z7q+eouXlbxA?|C!1KOaHEAwc>Zz1A4rgLeA*#t@}-jtkrJUw4O#eT+9f(DQag-};) zed7x@W<|%A3SYTzS`k4B63}`?0BeXjd6+4&-2Jm;edmBi66nK#Waed zBzCo{eAO(8?fe+~EV1m$&qJx+<4AM}WEKBmAwrL!u2Y7tL^3PK@!UE|QefIE?P8Z_ zKgsOAl2;A;_Bjlfjno}*tS$QBtd(c)^GO;Mvd)7!!)K{FhQrB0S4%0t4sFXmHw~AI zU4wG^pfgHwrD9_|`VJtadhnENVCD_?5W!)R2SDG}e95WL0kJq&Sx~%?6YCIW3Jz4W zpdVR=*wPRXj9G1|6sRxi9ZdQlIC3=C0!J{$$?;uY)+g}ILJ3{x0(#&XT`TUT>09D( zexl5WGcq+ncvtV2-DxdiRQ_lF1DN$tFy2P&n=m%)&hlj2+gtAm(r)CXp4ZByOTDrg z@6^LP*u|bOiWnid#pqTuXz&_!XWm#uEaqJzic@DVsge=KgO?o1o2Xxf<;4-K#F)Y3 zDPlA(#jxMZCmST!*}Vn_z|}?I3AF$XpJhZjbnVCWL8{I>Q8Vv?D|IX;UGTl zS#|M1aS6=PcZVx zOLTH6gn?XjfEj3-@LG9Z9`Cgp+4)-a{cPd&0`qGuAPHp&!^`!UNSY=mybh938SU&~ z{BZ4|Vb=h~Lh1LMNc}I|HH{c0cLW@=oTbi~+Rryk5;H9h`|z7uni}KAyw5I_9yKoR z?o{n=D}!L{Q4QGM{7AX&Ypl!A(;j^v(HnjpaD?Sx4ZnhjiTwh$+STQRNxAcsPlD%l zOW3+zHSUT|KVR!+MXidDFdl?v2~FHFXRseP{QHjxI9(-8I;D3!*8=e^jTM2V`{iC| zEpRqqCezE!l^OZxOo~k=UQQ376!21RsNC%iOk*0Ss3sLz@aq`H$c7nE65P4LE$X5S`^Q|2JY zO!3K|ZIy0MR%GK&eOzU&O@KnH!sIQ81~#Bj{xw*5?t-Bq6tRt_+Ed!g-5j8e@W@To z5T@;n$1ROFQ_xs|93lee&;ZaJhxFD9U|pPR0v7i@Z+*lijtR8J3r>bCnrtwwB10{J13oD zbj2w;g5uN}B<8)8PF;ALOn`)1l=KRnB)_ZHTxi+X zVLw8mp4_9)z)5i9r85qJD-7jL1EJ|P$y%eJd$GBjQU zE>C^^0{eRF3GI=mOizrc#oOkSJ5T!=5ns@k<)i19p!zfnD^`bI@WGz=8cA!1lzY<*kr@ z@xqd`V3pG&9J%LJzRBzwT8X=516vN4HNq~7UTZAV>ii2Q8aW$y&4y&TbOv`SUloZ8 zuNjuue@}Fiy3ZUJwnWWemy#sYB#!3P)N3DdF1v?zUIpt z_PxLP`SWSwKPU_K!A^U!VNh>vqCp=^3-fn4+z%RWj=4h8#Noc$n=*~Tx@Q%m^0^Ef z)@@b4Ls%0CX$9)-@JJ-*dc{E%ALc_B^lfivsHCb8UC<|daehr2^W&EVbg$x6-J@Us z0bcaeLRHNUu#-d;yd<9|4P{Oj4dm z`S!xDM|>hrW$1h{D|lC)#GVVd|0J|Pp7QGby1JRzx%DcSMpVKmz35GeqUDf;q?*QA zx1~Fy{W)h@Sp#IW1I+2Mw0;15lZy;`k)k))zi9vY_#8_yv3!GP^}Q!oo{Dn9i&|1t zz&C{TdnF8fc{RM*7|0S7uM*qAy8I*i^v%F8UGvti)On*;)bf49m%!tE)xCzY;QH$W#|LmB;9{>1c1U zvjt#CW6B_PBfJ52+bpbQpd!Es5g z;&e01eBkVCazmd0F*ehUz~* zsi|PBi0`s!IawdOdtjS^@T^itbw<)}EWlplNaQ?bUXqmG`jEzxou{b40gyJ3VwJ%1 zB$p5TcT%Md>O9$I*2k=_@SR)DkMj2Fm^nlX9<3JaQEyige3CPnT>y0-MhP!{F?C?S zy35b^kEum5$b?)hu<1!H2s!rJT?(~Kx=HYR6Ju>~yh%YKI!DuEvv%b!D4>!N79H^G z0BwYp{WAIe0>r()JH-Lv#t6yf?|+)hKR4ljuHoiaB zJSCbTiKF{j>i>D^|MO!mgkiD=%M`s19Xmgn=B^qUM*hkt`7wjb-n$)Og?C$27$f>M z)u(r~NgY7gQ*b-at^b#>h7Ln3n9wDYO9UjB58`Yd^!nFbVp);>7x)2h^7JyWOl?aK z_^G3d$iD8^ZTh+Bwl5A4-_17X_)ILnn;RQ*aPJTWAHlA@N{V`KcQ3(5AY1MnC~JHm zr?b5pzW1(vFa6%a(&6K4(J4qOkPZdyj8tDqx%%78`QpPCxrtdENn0j8%_ns23g!+x zq;9vt(Yeiv#?hDtKNlE!wukG>w&lAE~K)obYPVrgKZA;@qaZo^%@s=Rzzw`e; z9XIf6?fXVC*WM=nZV)B1C-^~_bD-+r`EZga25gy;p^l6baSI zIs%FkeOz-@)AnRY3?zMr1CHlH5F@1EH_sDTMxC2x=t4R+*yP_g?L;lSWzGK78S1)YB(28Z!zYiujiM=DVw>|dGgPMvj{=1_ema$orr)e!U z()WnLT4ZoQ@z0-*ySlq@D@pwh=qo-CCv^`H%`jX{zc7(wpx6ip%{BvYmzRFuzu&^41&<5mJ4!x6+wZ5? zFK>`Z_+nW8uy+5sT7E~58u(qnzbNX;w)x;7^$XU$r1dzwN>iN12k3Tj&)!LmlQ`k9 z{he+EsP0$M`}Ha>y#eFI46zz*G4 z6{Yf61fN6jR-sG$thnPj?*O*Sl!PyYy=OxCl{rdyeZ1Wgs<{hATCyKJJ|$WslCB%w z?JW9i0+=IKKf}7lplcRi*KiMxEk|R=efPB>ah!XFk%UC7N$QOz+3l}Mj8kYN@ zt|~-vxaApRUaf_~3N$q^FjM?%5yXL88$QYP4lBu*X2w6Uon_p!yNFR7h7Go&sII}U%ES4G&Wjk3lv0z5&wD6MUYr$lmymn@38;tQ}*%RHx@;m zHvKoRl#5Hmz1}$|0z!fZ{5UIhm^dpI)0<*=t^^(BnDjlOiibxwIgk{7O2qNCV0kvhdg?U0 zu;Wu6vyQ0m&j4f;L;uR~E3in72681oog+*6c@whFe6_tvnbPca!Ypw%W!@5%;J~}m z^2L}1`jvpn{y$!ZZywU(%Md+Bf?~xMV9d}Qx{B`)pX3Q8xPqm^fsO+T{jnz|T9iS=;i$;foQ?x~!jPssBVwW&P7L2Q*AxozWo zb#mtui)Wk?yRwz^F7Pz1;K)d_I9>J&rfnm@t3Kc*{3z*512#yE!nP5`<)w&y z2+sb9S?VR3;D+i;58f}?#!XB5vF&!t?Hb+<{IJPDdR;*7+M&>~=2&_A@w&KV4}py{ z@K}y-6T%zEYj*57gl>8d`>1@15uN#(nqXZ>^x@=*lgt!hno$ZTxvy51moQ#3O15IZ zjP2wzr`>Z)druA96%Xz}$rQiA7t@8BwY?ewC424Tp+qs8X_{)9MPLC6ic-XM^R=!h zMx61X6}O%baD#rS4x_C@cV>H`8%5eu=V;thyT*CR7T>bWGuG3m5sRfd%G~(utA2?> zn{u0qk<|k$)^J_X0Pv+?CDqSon|^;-y~!gr3;?>3v~sY2u-yz%KC-` zlkGHGPfm9bxK*8%FWYm?hH);9`7Pc_sWI$Ime}!p#(ItQ$05vfXe)B)SAqcbHb*?? z4W?nwGNmEcg6AeuXzLA8S^mF5e4{sIDwwj2dgAm`93D8^&tz>dTD&|zA~~8yxUPj= ze@L~GWlagTcr5_=XF?qN|4pi`4!!qQuyFg*+m z3?(3;k_G0RAqO&B3~6b#1Ee@jzp64NRTQS)Ah@mQUGR1{{7}HoQvILXDF1F0K zr!-!hpcVJlLHfW5qY9~wx4%|Rde!j8sQ$=QThargx==}^H89nICY=^iI#dA}Tr2ew z-UMOs9h^vv*%z;IKM;KF6v{RA#pIV#rWr`fRHDu>VA+4xP}ud|rS+^otLd38D9EzO{MQ5; zV+Q^_XZVcI_DZ-$j@}@iR!zuh&XlV!f=WP9TNle%~RTSJja#<^YoN}n6m0m#au&(!w=KPr@AWR`$kTED{mhU|I64M4_?+bOb7lTTscLk&?BSE=!q>{hlfj?e5`(~}ma^D^lnuYTN4SBAh-qdH;WP*Z&yXa(BNGXQD7AG9K$=l zpZ@D*JL9g6j2%paBFym(evzhzetM&W>24972+Y{HjW=D@ssq;K+~|FhLurTnIzkui z9scQwLDV1IG)cB}q19)m<|tn71PT&UxSJaYMN;gfh~1aVCAK5}B0#2mChFlV=((Ot z^w|-nL^gzT+MxKL&GL|F=rOJ6%^~+0_7dm@GAc&#Bnl_PS?u0&yS)bWdU+TR5tlU* z3u8?i2jp=x>~PVgWzk|TfHoXos-fc8Zt>X}e0o)!EwlO+v<5W+Hg7szVA;o2A8|1W zNA7h~ihTHSlHnL(7p3DII_H3M_B^L*r@wO)=_bRx-slz@ALwYQB}m~TUxxO5q&3=FXfUU{7>vdF5q}R6Gn42HL`9BCjbND`;OkZ>zNTJGr(48 z!mLP-Cap4y9*!loN0p|DJ$5=sz8I%h?O9E066f!Wpq;Mg3sB;CARPsy+LL?6V4Ro| z%EATyH6{Cn4um?&zW8G^M8J~V6vP6AC;Gq>0y6+un4nUruC$Rox_?Oz`n}LSglU4( zE)pHFtvoRs*Z|V2sS1&2^(#G}ahoVnEOe4x1xB19IF&&LG6AdBSAMX;Kh74Wmt_+; z>p;WwTL(G>+Oe3~3+S@9$P80JF+7SOQ-mpB3X|&Mq+63oAyEb)_cd|-UfylUq^HXQ z{KjYL_ZK(K#*$=08ZvL>83E=f@oQrgZ-$*#rDqAzz~o#SjM5DUxJgtCi$&cv@v_Vw z&1@aPb%KSq$n$hRUcX68w?Hsg*=fr@Kb-z5o=S~w>UEfEXQWu~v{TR*k+sZhwbOVX z3uiMfWAqCcSPMP>-h4B41uV}S4?GkaPB>55gPHZDvWGK|PD59_l+`wUq#JM*vVf~e zfku__U!4XZe_d(Ln!)L!5HB|P_|8oZ_V^(~po1~JN|%wk(;d#rb1r=}GcLn0NlYgG zY3uww7~a_M_&d^zeGF_+rFb!`h7?X0+Yg+`+l>34ZxebxG*FB_v~MxGSP$MMHu?hD zW@qfxl@1J5b|;MxG!+f3?Kc+hP=pG)EhcNEseQbw>crnE;i}&90|?g58&tR3Vmodh zRH7)88Nj5?EvHJVl2lF}PK4tMPx&1DxjLU^ufaP}^;Ct66CyxK9?$zgWza_RWqA@> znUlfj(xm}#_D%7O8sh-Y{)nf4g1gc)gYb_WdSPxr!|Xg;fKDz;H-Hq?kB z4fV=LLNC8d0Z~*3p3n#=T9!Yg5$K{6MP}b|8_xuPhS9TC@RsN`Nb-*=|ZffEwNU1h!__XSaeV<|T`I&1`4-$c@1YjraLP z+j_0G*5DN__pU-JgetLeK&K82;QV+4-YN?;RCJ&%|Z76`abSm1r+FOqY_Tk5alnN!4I#8RC@*JKg{6= zKtuH1bZPaS0=RGUgdOy9El{!UrUF;QhcgnMK?A9#?ETcrPxEFCScsb)G-EsqY1J*o zejT;69!;}GrQX}_6sr%tCecrvYKtV+W#BtYPW(b7W0Oke*KyH+F5~GLgt?xJAb`;T zpp2aU5smm9$qv|3kM0{G{A4liCh{uZp5vjyPE+QrNdGeG)Gu%$WPZbLyu~+w>znr+ zJ+}aHE^QArn?F&^6=`Wkp&{55t5Y4d<$ooN=FKhA2-~KYdCYJOm%cYMIM^-0UIn8F zZ@@^)rbmpM6QvGCbJ#3S<4IyFs>=n?Ah*oyF_~Q7fw8MmgRN{DuMJS>Q$)nQfL>eU zGpNL_(MoK`o`YuN!z`&tDMpMZy~f)CN}PG(UoG?P%F86b%V~es9&Q7K$}&rM3nnWS>IXCY5F$VXCYZqO%HtEaP=ZuVZMxsg zd$O(K3V>XfXQ&O?LylWz!S#imzVmb*RZr4JssP#Kk;k8JGptv+F-}d<+j-#kT23>6 zqoB3{I|%9{oXX1JEJfBIRL_s}++tL=R>hwTkkfjjDxev|Kv1qV?%}{?`oLxb(gx|wQ zgTIywjb&1Pj%#HARz}4_1??H@FXXM7_Wlri9TsT1uNZfC0BMp96BgCPyF^u{WY=9BI&wqe^kM$zRA<`rlBzkQe(=K) z2U>wKs3@T!u9^AZrE=pD{m5`meQRfJ;Btl$4Vs=~0$%-i$9o9XN?!-`#|YR-Il2f8 zDp~_W@nSqf_ol@Sn=J0zA1dOW_qrw-#_J{B>VS#05iM;q8%WLw8Eq6zrPIVb zU|=I--xb6F^_xrh(KIoGkl0l4*ru8c;<(|tjb+qD9Z$u99!W_~aK_DXpd;$58*h7f zl^DV|kf_G2EB!@h=8cX4hBw2+ezs}%6$@ejaCM_;eX3dS+1Aaz0^gXeXQe+5H&Gt3 z5%*G+-z~ZgD4=nES3s9F^^l?-RMHh%4+`Zyf9p+-X-E*hGSg`7G~M|W3AkOSz^xj_ zrB!XOYyj%CWLjr?SY`W3&JzCi_7IXd2PHThi_J5o)1ScEtjdCn4$k6Z=T}Ep0d$SKgQ2aESJdRd%vHKnIQ_%K$i%b3Sy)?p#o|N+C zxan~AJO;&8@m?8D*^jh>G>Z$U49y(AGJgw|7Yuekz2*=sSN1S2GTMBJ>m`BKa!M8w zGUz0ae22U@g07BBT^D~&`Dp%9I8eR?DJ3sf0R6;}I4#c8jY z0$0X2GRY4Jmw#j0c7{c}Ftbn94E$ctZ1LFFQsx5d^K{JDf@cPhHKNvj!u3E(g0eT7 z$LzNA#m>PGHYHzQs)*F6ujO0d^r@T5z5Z+I9=6rd#Bi`eu}Z47%4av?5sb&Ra=ux) z(ybj(rW%vySj#gw#h$C}D8)|%@zru-LVNLpE=<~eQzw@$00cHb)RY1%IZk}&KQ~KX zFnV^lYS>d13j}E{n;{Vvl~=xQnXj5Fh<;-M=8k0RGqet4{OM4 zE^{&Gb&6GB*f5j6&vrptErhw}mnK^H1?DsfG0n)I5;_hZoPYezvF%tD;OM*ha2{p5-t@Q&f{YBnGm08#4gx#SElpaV zr)@?c``Aw#5;nBoOc9vO0yxpG0gY}(uoq>?3FnN12y=a7fD?g-qkjkqLF5OtUKm%B zd6Kqb*Ab`VdnJHpwB`vnjyg$_X`u9b`kac@D0u5KJd=sSucnktsXlpvsgM@`7R{+I zRv*cYCUP|=OaaK~MZb;@bL50Ee5S1!PgMyQ?JiwST;c4RpP`cs&=L%sBRX{ZUY@^k z1_WfJ6#`QMRnN4X7JtxtxlKkfSLS_&pM*T5b7Z02@B+Ujj-1%$Sp=_f2QaV*z`Sko zPIFY3zT@{}j;`lP}*v6#7K`c;@=;U%$K zq+jbBZCzUbSQH8dTz<+lwaXs^KGYndk>MRk5bzuzvw|dz&bAar zXy`5-83;b=mk9p}F zfDMwSmJ&piG;RIbZy_~q4U`C?mUurT3Zp+Bj$v{RDfUwzoKg%(r1ET|xjags1d<3$ z5Wb)-K_Kg{2b3pne{zHIX1g5aKPc$3;k5q+HYMR;tph-<0^F9LJIIFwT z^?RZSC{`K&)gFFyIiA0?`8r4mROLU#Q#wp@`8fl7Am z>LMF7c|tbZwr(7OuKrF)sZi~K+%+~NCzKb zyc*#E=@2p!8-<2B_7{Z<%w4a$aCTj=lB%NQiOFaYaGs5DyLEZSb7#wqBI;|P{x2uy zPPbp%D+fv=tJfUVZ-f&97`l&f_9%tlW#}@sOG1woL5P0JD5+q)T}f8H2I71QT3-R` z&L`Ohg#4%$yqN@?)?4rIN2)yWUi5~531|S^#!aR>|6gUQ04qgjrKKT-FTCOFn~4GU zxmNDng`7Y74V`kF$T-2nC&yqH&0z+C4-|25TI-~+ZB(!57Xl^Rwb}lHjJ_K>mr|ZS zefk!(=<;R??@I!@-AWJJYNxxKSE-UP`l9kI6b%k@i%losXwjT@s&yFrcrD~^Lpg}Z zQ3!O|X}ZXgoO<|V#Xb0?Ok;}SH=q?MOkQ(&^nZK@d{%=@?ENkmg$rMBYS;YT1BTcF zUHI46#XP|7dRu!<&uJjBQ|wKjvIc2vXH-6c0-`M^76P%c7R6-eB`A|^=#jh#JAZ>~ zhz2BR1r%p#kz#8{)Eph!PnpCU%$(S2uc0w>2UN_WbCqW=iCbj~SK_}DhwsGYl(m`B z$+)QHQ3(u|IG|x(rto|isrZ%(!QoS`U5C+|o+MG9fHA{!Rv4m#WE|H)+A z@HF>VZDm<%zmm2-k!Am8Y`*DmBnEoqu?<4H$Wj76Z7B&^N=v8dS;wDCIY&0VNG?#o zwDq1;ToybEqs>q`lSo>%x+oHNiRtIWKWu@l=GpI*KRydbX}ig`!hIzhEQW-%__0h$ z>TQvn``*g}wpibCsDFbGAIo4BGpZxYn=u3Z5d|8^1&b{EZli>$#!g@>EA-hq5?3!YDEbP~MWpWIh$ z0j8apOwI)5c`cRkPq7xx>)o+c9xKy#oDcQb2UGDj%$`r@d_1|HEc|Rno(5t41=9#e z(I~F8+POkwcDzz3+dL97elNwymHCyg!SD?^VDF{CpK2gy=@9b4n-lL{3Kd_Mz4vOL z$;DALuh(vjBDPc9N>OpY6wmS~ovk?oUx*Z)EKUwS3@;tBGS_=;P)&y~&p zVP|B(ffHtvVCxt_knK($dAxn82x z(QHu*;MlFqo~qQZ2!AQ{#kap%c#Uhs&t?_x=kP&d8U-UtUs!!sPNYHOnoz(&D|1)u zHqdWI&Kgq@OJ9qES1Mp?dj^3CV2JH_sl-%0)I^$~?5b-}D1;{Lc@dRhZAYp)3p~)| zyYzA4#n}HwcmXx}!XIjKE+xe6np-Q9*?Vu0IKg&Lq3u{4-P$O$Sf^w^YEYjO2k!O~ zUB?+!qty@-jw|nP6s4`(Kh>JO76IhOH*XwhJJ=bWC_|4{hF5gvZg=Q=Bho+eb&O;F ze2IbfeLL0;WvJaMR1(m^1|$MoEFt=z ze4$}IWwN4&o3^Rn!S$kr%Cv<4jH1_S^DIlLqp^!47een0JWxbQ>BY9z@|d-12}<`O zWnWwI?-HJI_{M5}>#>&iJ8wnG`+YhgVPs|&onn}5wJ6`6ESrKByS;?3jK(dT%YWSt&!t>Bz$#@+_t;Q33RuN;*L zXRfPD+kU(f7xC_y>&r^R3!rw~Y}W&uNi2_9!I7eP-Oem{mM1tiW&t0KeIaU2Syy^M zqxos3>M>70OEQJ%3uc(gx3iRrd(5VOhMt3v{tjD|R1X|>2`|4hN5+nE=bYE?7=;&4 zBnU}6FKu^)-me~2JYn}^7H)xrwm_PdMiEs!lTy>w7kE?aAuJZ8`=bDCm zu$+IQAWTr;N>Z_q*}QP)dijJpHd4G~pxu9S`UxI|4=>VB?&^H8y!5>u7hM{QR$*sP zp6f`}sqKr`2cPt(|9bNmSLAuLg~79U#YObEiaUEUZ8=ehbfcK08ZKGzENjqzWLjXL z>G)F15j1o_)u;ul0o$<>R%bzBSy!#4Y4?-v>?`Hq7E`t^>D(ERd7^fEl&oF8prF`! zy0Ufn8-ZqeknG?oaK*Aj)2>gokerVDHTXSco z{-HcA5sBNF+BIH% zdp_M%rA^(DjWJbyGfSEAeAzPA$Vij1YMnOJRH8H(SoA7pLv{9ITy?f?-cdiHKnMe< zY4d)I@{k-j?9l8XK@~ve#wNJI?Wp=7N_yP?njndf8Pmqd>s2_kOUlEc7|j^}N6oOev}A>go&LM0QZdCErE$;Ep(d z?wr;hIsX(-5#JO~M~S_IjTSMHCC<+ik5T#EkCUZyf7;f+lvoNyfn;u9qUS#-Q$U8210W#lH8PC?Fj|g98vp%LS%fMl!e!~Cd%5N&tm+P*`ynga( zut)yeSiF2ki-THx1$%FJN%mYRhqu4I=3r+Rn6o}Z91%jK$zW3=e;_9{jrcR1)eORw1k;;UDJIDlrg9#?lcX4uvidZGL^--NtcE(7gC2Xah8);Dj&4-3G zWWye%!pCVM88-6flRW$f6Yj@W9zitZtpE^oZtUriMol4FP&=#)=%NF3x5PD|Lb<0< zh+tz4?sr(Du*eXVF&7NJI-g}qo!LK}PT(&>l_8`OqCS@0(`{V<&Or(i@=!$#H^|U9AuI# zkpM`tYe3c_B57f;ZA>oc&z}!zI@ovg8qiw?I<{6NMH0IVd_WpTvoc!}y49?}QL%&r zEib8RMRJPjN1!egIzyXoozD+&p?LmLh>$&eTaL>+KmqRwEP((q$9NTMj{S}TqThQE zmxRFu0KrdazOr`)uhOo!2_q^%T5Wf#b#@q&1WUD?dsl8o759N#GH_>5kHU5<9Djm^ zoiRSJc1WX)`Sx)LWxpF2C{1i=w728E5Aho zgSAo{YUP}-x;F=5d*Rq13v4N*3B-oIca-TG|DqfCcfmYO}PZPWo*ukiyhS7>KA3bZWI3w!>mYA{yI2sH@jzdLo1QoKH4 zEBRs+JRFd7xD?VIcZu#pn@vrtdT$pk?o0wKvCLgf1?A{4<>hIjj0zU0AbGtEjvBHk zfwZ<*?Q2!|7QKD>%I0!9~8^lV)^_$0YW+O|-9 z<<~Fg>nZEOHs92(ucCGj=$xU9p4%byFw#lgFY~ep$UuC326}?Fpv>!u{6P<#q{^dQ zX9B(!)Yr=`T?Cv543^a^Twg@nH|M|rUv$T%O;3RrB=(tTUhF9xIN{q0lBWP+(VAyk z#oMf#J~QYE*ZX-5;+3RxLJAT#1r%b2K4;OVu=NI&6b~F;1v)+x-_tlr!RCDwsR4$L zx?m2$X4Z*txv1LiBEwXj6hRc|EL`ID-UdLa;u`i1Jd`o2Zmi$ju_U_87t9ul{1iPX#P`OMdXdO@vu;mQlIlIYwPMyu&Eqr7p6g%ys zLHGp4W1kZLq=K*dM6&lJ2DsKRaO(ISq z*RkZr88N=XHer&p&6tzfrohwjT+kDef?|yzTZSy;%fw=c)K_R5m-C-LLwmLrnQK+o z$7knt=2+%zi&XjeSkoy)p;0CmX(GoTOBFTkw2Pr+3p+)MrR>I&i?>JmaCO9+q2XF zUcr?<*fRW`QJbre8HIyA!n2A58PnfC`rlRxLrn*5K?m;U`CzwDzo*YHP?&_4IgUTabRIf@7$xmL8qz z6I38TRb!jr^vp~?A~_YOXH<%~Vj(9xWU$*}MWgBmfSPhQ^J2t}HJbL1xN`o2Lpjbj z__Q2%;x=KuyNzx2onJv7IEAGsejUIRQ-f(bE5(vfYrAIp4!e)`O1=z=3G36hRqn8z zlBrYu(tMC?fYs9s02yelw6M;!TJE)ywTjqR;ZzULhyHHx#YtE|sblIrqF=XsKEvlA z5@CQjOd_jR5UFF66urt#jZ__NpFg%KewpJegcR*0=qHIX26pX_xg}4-%Y;+w!}F`> z=MP-6$dV@Ija{8jb!W_3v_m6xxJEm8*8Iw%Pij0?wKC>CY4mL$-`5$zPFq;YJR<@` zxTD=XwrPe775zSE)bHN?=I)WYhBSa1YTH&_daF&g>7s30Qw{&@QWie^FPAc_(hh4H z2ec)6b?Qh?@iEYa{9d|7eM+Xt#2m35ib>*8I#iNAkPypJU^Wq5#d@=aVau5`CnDr1 zms!em{g^Ev8k>vFG;^DWH1#uawz{5Xrouo87^fWVbYvg5%Guu|^YqnhMCjh)1G8uu zOdFC3hqb+;o>5qP{6bGsa%R^}TAFd;d~;&^v|UQCl-)fNm@o0#>0CfAekJZjirz5%$#iVL*kF|n@*r_6^h{c z4z1KESwm+xX>2rGkuSZHDbAo%qD|u4i&w=j?Ihvf$c*4HLAKT8LU%T3>!`fwB-n>g z!f_2BYwX*-Qz|iD^~memoXJf$B?fCE`NG_?#>h z^-VQ>a%2`2_d8g!z1sum?S6I$^`Q@Jmyi=z-^?|cT{fv zzZhiC!lZG6mY|SOD!2(3ny~IiAvL_WK%oewPVlcaNuCQX7TL_|tVpZLc$9WNeNerZ zwAv_HNd&r_7`Mh7@v+k8SF9ysq$~`Vx(|cnuoiix1Be~?io|A?`|;2%5sZnCGx5?! zGQB_fg`fTEP3TRU@mu-r4JMxJa=WV4{1Ox6Ry1|@)CT>zv{s;T(s` zI2loQ-1~Y<*wHS(SGTYfv6`QRdB!jFtKtvb0DxXDfICef{LLH zItfC%E5{*ZlGt-%5uLAv!sB7?jb)v%3R{9Q+6u~3Oah?JJvGZ>RDXWpvyGk>va2? z*UD2;-1G!L2cI{(ip3rWt(ErP9rYUaY!iWrrVxz9A0Rh^vzS~w>%F!~3l5V0ZW5qn zfZWj*W1)2?)nkvs7!(NlUod#iojb$PM0`yjoq0ubgxe*;=y>~w`5rBVT-lF;VHuQa zJ<@V|N7X|aK!%oCny16hM1~+H=8pTffkigKiZR=#Z}WVdvE}>j94x_Pooj@NNabU9 zBMbofd|TPCZTSK{iSVB81|)s4aWe8u+8rD;6)Ca=ZKWK{h(j12k=G^%=~OWAjPLLj zHYi48nfxUH_BkfFHEvVF)ly`sJHlYNdoUO7&w6kydnoOS$R!e7P}{i*wQR?`pI@LP zqDG^K1!iBH0j#1{qiA3stuPZA5EfsgEuiL+rNZ}G)DU_0gWQ{# zybdRFZMUrq4GYW8yNzv+n~`jL)Ub$o)t&nUQVzdvN4bW$>9C`Mp#H-b%BN%Q2@Zi~ z(}}&o|3&G=6;o^t7UVWcX@;M?N}&P>lOLzPq=V;@q~co>5ze!mAnz>}`#X=T7h*ww zB10~sH`8$CNY^r7oQCy=H3<%vHmCOwJCni6ss%*jVSWPQ;f~UEg0$NJ*?^Z{ejBPY zvz>*{fJbUhH2r<3tT7{PRJ!+J-upHP0Ua8U1hhACe6M?|PftUS5yh3lITbGOcC{u1 zS2woZuUNMT)~V?gMN>iZykhoyn!!Um?|Fw+z6?288)l5`8RjOOPuF4%|C86Kw(%JH zpFXZWO7)&$_!86eemORQ2go5DAubc$XLZxtHDTt2w?=N7GOv=SnTyI;(#M`!Qy!HO zKEFlf#Nfp^D4s7sP<8L8lk|2&#F*LVfp^Vjdppo=KlCctpuad~?ZS0DVVDJy?g6PT zo&ohx*lkbNWY+k1l0}f%2~>okum(IwgKcKv-*F8Gpa3Q~bxwCj$P+?(%7HU0Hny6p zTXgEdCfL_^kK1s|Srx`Z>mj?^FyyO1?PK1+nuM6zg5+X^->V$mIr|lMic^y7FO~JT zRft?&XxIaLPDL<^iR#oaNkPE!no|r`DWC#fi`NWl@m~jeJTiRed~T;MY`>0ldlHk| z*W5n0EVmCi{%&Y_-QN2PizX8+oEY^J6?KA7@QAgnE~KyLOFzU6LAa&;P=JMQMXc?q z*q7I%xp`DLYidxHl%UH`DT7W3tSxzmG+Tm91A;%;I~VUC)6z^Km3K-F(l1@md9)wB z2T{5KH2<1x$F)RK3zN`t6dWsa!SjzjDP~kobTW$AgnF~k{=L(wRh++(>W9-Yj0{a# zhcbSmGXt$X^j6MUWk34H>-sZh{lX8u=JJ-aU;T(W_x>};+{&RjlH{>Ee&WQ6RkiZ3 z_C4_xk7f*73Xh`PEDDi456}KZ5MxEje@&3pCv zLGx>&)W;w49&|~Z4cHV`lD=|yUhY()%rD=l7&Rq0=HM;S#y7=@k;1J@^V7~TMHt&; zkk-1LN|KV>rQ~v(YiQt0Uu#3~b^wF%RQatBC0!Hc1$HFp>qzVHbB$X`d>3XPe)GA3 zlR{g}sA8U*o#R?<*56*``1(>xvR<>Cvzzr);BK=C5>07Wg|H9KcyZdzR zv$i;H_HRyj9obit_AN%Y+GXppu&8~$UTfj;##OZQoXrr*3LiW8W=>w%F!^o~)&5bZ z3sHZ#0!@DBr>)Cp9TfPg&o7$c5l)H-_&4FUKF)^2H!zZMmjYyMd?ah5879|>M&p?6 zKYr)myED)X{hKHkZwcXnDP>!VM?Ye)^6nA@Wj1EM>HQJw1D!(6ytr1CGmG9&Y~MgT ze115$EnR-{tzwC%rm4C5T>7vLFHX2EV(ysq&QDudARQI1;dAln!jr!$P+h$_Hu+}i zs%y_=-;7cEwLa+tp|muUabI7Xtna%R3&&@zGM+kT56l*4*M_q}mFnIHrJ6bpeFqfn zA<@^QEz0_IthFjebH-p#TLg#ktRKBXW9v=Cj4aMo_%sFoWuLS=+zKSkFH6`c-4b@) zSoGG5^-_4?vcEX{t=Y;IX2Rd>74#QFzeme2s$p$X@cWz;oxZ`cvo>=HJE7ce$ zEBuJ=dQ;H?yA{eYQ`CD#mpm>SeA(X?79;!l;2@Enk1RO&LWs@jul9X&yqtYhsEjn) zt#2MT<=h%qC9H4}Pgcqi+J!V8HupR$7Rv5R(f{fmtiN!Xb=ce@sbi_HtA843{LNeO zoCxjg#N=e{i<$kmQq7tIKYD$EUwCWTX#*@S^mG&LFJ=c_gxD7Sok!nmiCM(O!iOO^ zJf7e5!lP5z{~lxx4WMWd9|_}@Lve-f^`Md&}%Iu#;E{*Mr z1-uoCrZmXSqe7Z5!}4Wh4sU-ZWiGrrgJ}H?zFuun8(CUovA}OxE8_!us14kYlMO90 ztfY$h6!_DO&RpF;{R)OkGs9&2JrPALGe4e>hA;w3t=}5v{ru*SAOHQU-Y`7ZtQ_G_ zKOXge`Re~K`NKM9idX-!W53$n^wys~ZCc>c%Hr*2T>{J1HGBos1E*1_G)6Z5pI-#6 zDS0h-VD8$fem42jU4Qd=Tu)uN*`22}OyuV)|NW=On_0-HkaTNt z`pp0Ev7hgTpTk|@xcxnjKi%NJ|9x8;uc6(krw6C#nZNr*HYSCn)xW{!?Z3YaojN;> zzP5AKKj`F8G)!p2)xSQjziSjaHi(-N@+4N|(|_MA8lx5(#-6d^A3VvDqk(tcRYdLm z2X{{sM8g=(7yp~K|Mf@B+9j_)I_j$aWw8GBV}I(;$iO?!G^tbn;7RrhHoFgJr!4v> coxH}r>q!cwGAHBaH2l%kHq^SJVSnI%0E=X@P5=M^ literal 0 HcmV?d00001 diff --git a/doc/developer-guide/img/generic_function_specialization.png b/doc/developer-guide/img/generic_function_specialization.png new file mode 100644 index 0000000000000000000000000000000000000000..e3245e15da3f55b6a086e37d020593fbf9c472f2 GIT binary patch literal 106257 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

%YB7yV(xBl)D>ixKrf&{ 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 AC;$Ke literal 0 HcmV?d00001 diff --git a/doc/developer-guide/img/specialized_statement_gen.png b/doc/developer-guide/img/specialized_statement_gen.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7bbebf640f32879f18d02585a74c636ad4f241 GIT binary patch literal 186531 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%0D6ya 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�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¢i1>^~%CRL*W8kXD6J%f6{o;j*hI>K^2j_k8M%>i*Ng0}GeVWp|VXoSD z0d$+Li~5FHtI>vy>?PXpNM#7bbntnNTFEc4=s!=fOg*4H_=L+G^8Wo*q&b)3N^;=> zoxtw$6QsG>4laAJH~q?BD4PhrZf4i@qRMt2QIM93RVAPdOFZV=pOorOVaRH^o4nKN zyJ4BybIXO668h+xrMr836VQGLLHg#$sa-)3jEFiG96EeSIb?^xCAqD23KZmYJt?-A zz4q;^z3^m?t%Dw52#isqyt&p|{7xi6O9vbpN+OQ)qR`O~ca@$Wcnr!x$Akvvk|m9R z?sSEU%v!5U>U+ufp#Ljbnv(AZD3w9M4VG@_L0h|ukp=Cw%V-Q3C!(0AMc~Mo2g?9y zJ|&-Zb@@Sa0?b8o@AWD&L`|*TsArI$wh`%lqlr;Jw`&QNupKumtFoe^;`nzjyabs! zmGX1$Y%VhyyY*s8%0W;>rcXR@v!KBAl!i@;+i(R`qginO(jE)!}4 z+)6z_NDQD)k+@)3Js4?R@W#Wv8RD1`{bEu?Ul0MO@RMI-TAN0loF|o`c zYn)~faK8{+HWJqeu-(4rcPS8`-JCVFgAF@8GE!~C4?E`Ea5&qbbX6=!Y8!m|^r`Vl zJIJnwvS+A&t+%!CaT9b;S1)NTKW2=F(!TZ!N<#cv--hhp3%o3bW@tffdY77kp+T9V zso2OC@hgo!kx1guW|F8rs4T()bL3)F5*QR@g6n{uM+fw)8lTFr5p+P!t%NCS5#s^} z6w)fTJb{e0u(&uTf&HKFQruHVRq#Za84AqF(G@lz(-YbXLQ~<{(Y?;7(mljRL%Buf3SM6Yu z)NuYdgTrfgEZN|LG)xCdZ$;u7BGJ4^9m&ptXluowkvVH#)UenJ57qi`53(z2EBH`D`nKwqZ*(&>!t*t}0Oa7Vm{mVd8@ydioLBH|CI z>w0DU9{TTG#2Hq0NX&rI+XO)517Ok{@iL_Zm>JnRgi#vF?sqr>%0Y`gmf4|{cu&0Q zgh!WYcRh%0m_`G@P2-7(uzpi&sLJxAllVjqZ#td?1;tz=xyWejkbjk;ix5+`nsPii z12X9OGw+Jo&;3%Nt)V%sbtEm5d1M}MoF>je81WmUFL-s~rkJy{^Ek{JbM>mRl;Rh* zre1So5o9VRyks@|*7{Vq5C&EHBM3UGJvpDPS8UeBIMDk=uS7+Se6--L>xr<`#g4K3GXMwt2h*^=k(hQAc%XD>{lXB^e2 zr=>(L2pSri=3u<2>Fcqx1OyJY4|^ zvq% zDsw(HL7m=I>7i7S#qK0+bZ>53^sT%W{@~M;Vs+5uB8PcOIL}g92XA)#ol1xRrslG> zwYAZvQT&bZ_{sy1YRRadBl3xnrrK#L8CR*P#jx-%U4x;)&3HwZ=_{TosNw+#Hd!`&sJ`9+J|IHyjrQ+|iv)Zi7kctsvAJVXIKtYO(o{)j5eV})=8 z%gXVqwI;?1;<^eCUh7oW@{lUJsS~J0@+v%i`}3H6?th1ehN--YhN1HX`f2->bxmC!p3Vc{!vW`6FQ z*qo>&656J^x&T;t9v*%5*6OCk>!6A*74jKGqO4=AY(_gO_{hfZ)bSM)eo&Y;c!lJes7%=A;}s#Ssu|%sh8x1n)3I!D@KB zJ$-8RS>sa&uD-d`IOQKgZ`mvXWyTa?cMmAWVQ3~;d|}D62f!mRP>Vu^*~$6s`zTUi%e>UHUs~`9c{+1 z5}{qLQdVXKLT|49YSu6|DBRaMs!waqjC{_)OE0jl=;pvR;`5Q~BI*l)r8jBa7bEI4 z@{v1-AD+Gw#XUC

  • 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

    vcGaZ%f<+)}{7~jRpzc3% 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 literal 0 HcmV?d00001 diff --git a/doc/developer-guide/img/type_scan.png b/doc/developer-guide/img/type_scan.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5a7746d0cc152b1b818aca66724ceaf90d6069 GIT binary patch literal 63439 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 literal 0 HcmV?d00001 diff --git a/src/expression.ts b/src/expression.ts index 2692955a..ae13f7fa 100644 --- a/src/expression.ts +++ b/src/expression.ts @@ -5,21 +5,30 @@ import ts from 'typescript'; import { ParserContext } from './frontend.js'; -import { ClosureEnvironment, FunctionScope } from './scope.js'; -import { Variable } from './variable.js'; +import { + ClassScope, + ClosureEnvironment, + FunctionScope, + Scope, + importSearchTypes, +} from './scope.js'; +import { Variable, Parameter } from './variable.js'; import { getCurScope, addSourceMapLoc, isTypeGeneric, processEscape, + processGenericType, + getTypeArgumentsFromParameters, + genericMethodSpecialization, } from './utils.js'; import { - TSArray, TSFunction, Type, TypeKind, - TypeResolver, builtinTypes, + TSTypeParameter, + TSClass, } from './type.js'; import { Logger } from './log.js'; import { SourceMapLoc } from './backend/binaryen/utils.js'; @@ -569,13 +578,15 @@ export default class ExpressionProcessor { } } } - /** in order to avoid there is narrowed type checking scope */ - let declNode = node; - const symbol = - this.parserCtx.typeChecker!.getSymbolAtLocation(node); - if (symbol && symbol.valueDeclaration) { - declNode = symbol.valueDeclaration; - exprType = this.typeResolver.generateNodeType(declNode); + if (exprType.kind == TypeKind.UNDEFINED) { + /** in order to avoid there is narrowed type checking scope */ + let declNode = node; + const symbol = + this.parserCtx.typeChecker!.getSymbolAtLocation(node); + if (symbol && symbol.valueDeclaration) { + declNode = symbol.valueDeclaration; + exprType = this.typeResolver.generateNodeType(declNode); + } } res.setExprType(exprType); break; @@ -660,145 +671,202 @@ export default class ExpressionProcessor { if ( callExprNode.expression.kind === ts.SyntaxKind.SuperKeyword ) { - res = new SuperExpression(args); - res.setExprType(this.typeResolver.generateNodeType(node)); + const newSuperExpression = new SuperExpression(args); + newSuperExpression.tsNode = ( + expr as SuperExpression + ).tsNode; + res = newSuperExpression; break; } - // iff a generic function is specialized and called - const origType = this.typeResolver.generateNodeType( - callExprNode.expression, - ) as TSFunction; - const originalFunctionScope = origType.belongedScope; - // without FunctionScope information, generic functions cannot be specialized - if (isTypeGeneric(origType) && originalFunctionScope) { - // the function name of the CallExpression is corrected to the specialized function name - let typeArguments: Type[] | undefined; - + // get the list of specialization types + const originalFuncType = expr.exprType as TSFunction; + let typeArguments: Type[] = []; + if (isTypeGeneric(originalFuncType)) { // explicitly declare specialization type typeArguments // e.g. // function genericFunc (v: T){...} // genericFunc(5); + + const typeParameters = originalFuncType.isMethod + ? originalFuncType.belongedClass!.typeArguments + ? originalFuncType.belongedClass!.typeArguments + : originalFuncType.typeArguments! + : originalFuncType.typeArguments!; if (callExprNode.typeArguments) { typeArguments = callExprNode.typeArguments.map((t) => { return this.typeResolver.generateNodeType(t); }); } // specialize by passing parameters - // e.g. - // function genericFunc (v: T){...} - // genericFunc('hello'); - if (!typeArguments) { - const _typeArguments: Type[] = []; + if (typeArguments.length == 0) { // argument type - const _arguments = callExprNode.arguments.map((t) => { + const argTypes = callExprNode.arguments.map((t) => { return this.typeResolver.generateNodeType(t); }); // paramter type - const _paramters = origType.getParamTypes(); - - // TODO: Handling optional parameters - for (let i = 0; i < _paramters.length; i++) { - if ( - isTypeGeneric(_paramters[i]) && - !isTypeGeneric(_arguments[i]) - ) { - if ( - _paramters[i].kind == - TypeKind.TYPE_PARAMETER - ) { - _typeArguments.push(_arguments[i]); - } else if ( - _paramters[i].kind == TypeKind.ARRAY - ) { - const elementType = ( - _arguments[i] as TSArray - ).elementType; - _typeArguments.push(elementType); - } - } - } - typeArguments = _typeArguments; + const formalParameters = + originalFuncType.getParamTypes(); + typeArguments = getTypeArgumentsFromParameters( + formalParameters, + typeParameters, + argTypes, + ); } - // there is a specialization types list + if (typeArguments.length > 0) { const typeNames = new Array(); typeArguments.forEach((v) => { - typeNames.push(`${v.kind}`); + if (v.kind !== TypeKind.TYPE_PARAMETER) { + typeNames.push(`${v.kind}`); + } }); - const typeSignature = '<' + typeNames.join(',') + '>'; - + const typeSignature = + typeNames.length > 0 + ? '<' + typeNames.join(',') + '>' + : ''; + const isUpdateTypeParameters = + typeArguments.filter((type) => isTypeGeneric(type)) + .length == typeArguments.length; if ( callExprNode.expression.kind === ts.SyntaxKind.Identifier ) { - let genericInheritance = false; - typeArguments.forEach((t) => { - if (isTypeGeneric(t)) { - genericInheritance = true; - } - }); - if (!genericInheritance) { + const newFuncType = processGenericType( + originalFuncType, + typeArguments, + typeParameters, + this.parserCtx, + ); + if (!isUpdateTypeParameters) { const newIdentifierName = (expr as IdentifierExpression) .identifierName + typeSignature; expr = new IdentifierExpression( newIdentifierName, ); - - // the function type of the CallExpression is corrected to the specialized function type const specializedType = this.parserCtx.currentScope!.findIdentifier( newIdentifierName, + true, + importSearchTypes.Type, ); if (specializedType) expr.setExprType(specializedType as Type); + } else { + expr = new IdentifierExpression( + ( + expr as IdentifierExpression + ).identifierName, + ); + expr.setExprType(newFuncType); } } else if ( callExprNode.expression.kind === ts.SyntaxKind.PropertyAccessExpression ) { - const classType = origType.belongedClass!; - // if a generic function in a generic class is called, it will be processed according to the logic for processing generic class - if (!classType.typeArguments) { - const propertyName = ( - (expr as PropertyAccessExpression) - .propertyExpr as IdentifierExpression + // process class method + const propertyAccess = + expr as PropertyAccessExpression; + if ( + propertyAccess.propertyAccessExpr instanceof + IdentifierExpression && + propertyAccess.propertyAccessExpr + .exprType instanceof TSClass + ) { + const identifierName = ( + propertyAccess.propertyAccessExpr as IdentifierExpression ).identifierName; - const newPropertyName = - propertyName + typeSignature; - const newPropertyIdentifier = - new IdentifierExpression(newPropertyName); - let res = classType.getMethod(newPropertyName); - if (!res.method) { - const origType = - classType.getMethod(propertyName); - TypeResolver.specializeClassMethod( - classType, - propertyName, - typeArguments, + const ownerVariable = + this.parserCtx.currentScope!.findIdentifier( + identifierName, + ) as Variable; + const classType = + ownerVariable.varType as TSClass; + const methodName = ( + propertyAccess.propertyExpr as IdentifierExpression + ).identifierName; + + /** + * class A { + * a: number; + * echo(param: T) {...}; + * } + * const a = new A(); + * this class type does not contain 'typeParameters', and newExpression does not contain 'typeArguments'. + */ + if ( + !classType.typeArguments && + originalFuncType.typeArguments + ) { + if ( + !isUpdateTypeParameters && + originalFuncType.belongedScope + ) { + const newMethodName = + methodName + typeSignature; + const newPropertyIdentifier = + new IdentifierExpression( + newMethodName, + ); + let res = + classType.getMethod(newMethodName); + if (!res.method) { + const origType = + classType.getMethod(methodName); + genericMethodSpecialization( + origType.method!.type, + typeArguments, + this.parserCtx, + ); + res = + classType.getMethod( + newMethodName, + ); + } + if (res.method) + newPropertyIdentifier.setExprType( + res.method.type, + ); + const tsNode = expr.tsNode; + expr = new PropertyAccessExpression( + ( + expr as PropertyAccessExpression + ).propertyAccessExpr, + newPropertyIdentifier, + ); + expr.tsNode = tsNode; + if (res.method) + expr.setExprType(res.method.type); + } + } else { + const propertyAccessExpr = + new IdentifierExpression( + identifierName, + ); + propertyAccessExpr.setExprType(classType); + + const propertyType = classType.getMethod( + methodName, + originalFuncType.funcKind, + )!.method!.type; + const propertyExpr = + new IdentifierExpression(methodName); + propertyExpr.setExprType(propertyType); + + const tsNode = expr.tsNode; + expr = new PropertyAccessExpression( + propertyAccessExpr, + propertyExpr, ); - res = classType.getMethod(newPropertyName); + expr.tsNode = tsNode; + expr.setExprType(propertyType); } - if (res.method) - newPropertyIdentifier.setExprType( - res.method.type, - ); - - const tsNode = expr.tsNode; - expr = new PropertyAccessExpression( - ( - expr as PropertyAccessExpression - ).propertyAccessExpr, - newPropertyIdentifier, - ); - expr.tsNode = tsNode; - if (res.method) - expr.setExprType(res.method.type); } } } } + // get the list of specialization types end const callExpr = new CallExpression( expr, @@ -831,76 +899,131 @@ export default class ExpressionProcessor { const newExprNode = node; const expr = this.visitNode(newExprNode.expression); const newExpr = new NewExpression(expr); - if ( - expr.expressionKind === ts.SyntaxKind.Identifier && - (expr).identifierName === 'Array' - ) { - if (!newExprNode.typeArguments) { - if (!this.typeResolver.arrayTypeCheck(node)) { - throw new ExpressionError( - 'new Array without declare element type', - ); - } + if (newExprNode.arguments !== undefined) { + const args = new Array(); + for (const arg of newExprNode.arguments) { + args.push(this.visitNode(arg)); } - let isLiteral = false; - if (newExprNode.arguments) { - /* Check if it's created from a literal */ - const argLen = newExprNode.arguments.length; - if (argLen > 1) { - isLiteral = true; - } else if (argLen === 1) { - const elem = newExprNode.arguments[0]; - const elemExpr = this.visitNode(elem); - if ( - elemExpr.exprType.kind !== TypeKind.NUMBER && - elemExpr.exprType.kind !== TypeKind.WASM_I32 && - elemExpr.exprType.kind !== TypeKind.WASM_I64 && - elemExpr.exprType.kind !== TypeKind.WASM_F32 && - elemExpr.exprType.kind !== TypeKind.WASM_F64 - ) { - isLiteral = true; + if (args.length > 0) + (newExpr as NewExpression).setArgs(args); + } + if (newExprNode.typeArguments) { + newExpr.setTypeArguments( + this.buildTypeArguments(newExprNode.typeArguments)!, + ); + } + + if (expr.expressionKind === ts.SyntaxKind.Identifier) { + if ( + (expr).identifierName === 'Array' + ) { + if (!newExprNode.typeArguments) { + if (!this.typeResolver.arrayTypeCheck(node)) { + throw new ExpressionError( + 'new Array without declare element type', + ); } } + let isLiteral = false; + if (newExprNode.arguments) { + /* Check if it's created from a literal */ + const argLen = newExprNode.arguments.length; + if (argLen > 1) { + isLiteral = true; + } else if (argLen === 1) { + const elem = newExprNode.arguments[0]; + const elemExpr = this.visitNode(elem); + if ( + elemExpr.exprType.kind !== + TypeKind.NUMBER && + elemExpr.exprType.kind !== + TypeKind.WASM_I32 && + elemExpr.exprType.kind !== + TypeKind.WASM_I64 && + elemExpr.exprType.kind !== + TypeKind.WASM_F32 && + elemExpr.exprType.kind !== TypeKind.WASM_F64 + ) { + isLiteral = true; + } + } - if (isLiteral) { - const elemExprs = newExprNode.arguments.map((a) => { - return this.visitNode(a); - }); - newExpr.setArrayLen(argLen); - newExpr.setArgs(elemExprs); - } else if (argLen === 1) { - newExpr.setLenExpr( - this.visitNode(newExprNode.arguments[0]), - ); + if (isLiteral) { + const elemExprs = newExprNode.arguments.map( + (a) => { + return this.visitNode(a); + }, + ); + newExpr.setArrayLen(argLen); + newExpr.setArgs(elemExprs); + } else if (argLen === 1) { + newExpr.setLenExpr( + this.visitNode(newExprNode.arguments[0]), + ); + } + /* else no arguments */ + } else { + newExpr.setLenExpr(new NumberLiteralExpression(0)); } - /* else no arguments */ - } else { - newExpr.setLenExpr(new NumberLiteralExpression(0)); - } - - if (newExprNode.typeArguments) { - newExpr.setTypeArguments( - this.buildTypeArguments(newExprNode.typeArguments)!, + newExpr.setExprType( + this.typeResolver.generateNodeType(node), ); - } - - newExpr.setExprType( - this.typeResolver.generateNodeType(node), - ); - } else { - if (newExprNode.arguments !== undefined) { - const args = new Array(); - for (const arg of newExprNode.arguments) { - args.push(this.visitNode(arg)); + } else { + // handling generic types chain + if ( + expr.exprType instanceof TSClass && + isTypeGeneric(expr.exprType) + ) { + const genericClassType = expr.exprType; + const typeParameters = + genericClassType.typeArguments; + + if (typeParameters) { + let typeArguments = new Array(); + if (newExpr.newArgs) { + // argument type + const argTypes: Type[] = []; + for (const arg of newExpr.newArgs) { + argTypes.push(arg.exprType); + } + // paramter type + const formalParameters = + genericClassType.ctorType.getParamTypes(); + typeArguments = + getTypeArgumentsFromParameters( + formalParameters, + typeParameters, + argTypes, + ); + } else if (newExpr.typeArguments) { + typeArguments = newExpr.typeArguments; + } + if (typeArguments.length > 0) { + const newClassType = processGenericType( + genericClassType, + typeArguments, + typeParameters, + this.parserCtx, + ); + const newIdentifierExpression = + new IdentifierExpression( + (newClassType as TSClass).className, + ); + newIdentifierExpression.setExprType( + newClassType, + ); + const newNewExpr = new NewExpression( + newIdentifierExpression, + newExpr.newArgs, + ); + newNewExpr.setExprType(newClassType); + res = newNewExpr; + break; + } + } } - (newExpr as NewExpression).setArgs(args); } } - if (newExprNode.typeArguments) { - newExpr.setTypeArguments( - this.buildTypeArguments(newExprNode.typeArguments)!, - ); - } newExpr.setExprType(this.typeResolver.generateNodeType(node)); res = newExpr; @@ -1002,7 +1125,6 @@ export default class ExpressionProcessor { } case ts.SyntaxKind.SuperKeyword: { res = new SuperExpression(); - res.setExprType(this.typeResolver.generateNodeType(node)); break; } case ts.SyntaxKind.SpreadElement: { @@ -1067,4 +1189,698 @@ export default class ExpressionProcessor { } return types; } + + specializeExpression( + expr: Expression, + typeArguments: Type[], + typeParameters: TSTypeParameter[], + currentFuncScope: Scope, + ): Expression { + let res = expr; + const exprType = expr.exprType; + if (typeArguments.length == 0 || typeParameters.length == 0) return res; + switch (expr.expressionKind) { + case ts.SyntaxKind.Identifier: { + const identifierExpression = expr as IdentifierExpression; + let identifierName = identifierExpression.identifierName; + if (identifierName == 'undefined') { + return expr; + } + if (identifierName == 'this') { + const newIdentifierExpression = new IdentifierExpression( + identifierName, + ); + const thisVarType = processGenericType( + identifierExpression.exprType, + typeArguments, + typeParameters, + this.parserCtx, + ); + newIdentifierExpression.setExprType(thisVarType); + res = newIdentifierExpression; + return res; + } + + const typeArgumentsSignature = new Array(); + const ret = currentFuncScope.findIdentifier(identifierName); + if (ret) { + if (ret instanceof TSClass || ret instanceof ClassScope) { + if ( + isTypeGeneric(exprType) && + (exprType as TSClass).typeArguments + ) { + const types = (exprType as TSClass).typeArguments!; + types.forEach((type) => { + const index = typeParameters.findIndex((t) => { + return t.name === type.name; + }); + if (index == -1) { + throw new ExpressionError( + `${type.name} not found in typeParameters`, + ); + } + if ( + typeArguments[index].kind !== + TypeKind.TYPE_PARAMETER + ) + typeArgumentsSignature.push( + `${typeArguments[index].kind}`, + ); + }); + } + } + if (ret instanceof FunctionScope) { + if (isTypeGeneric(exprType)) { + const types = (exprType as TSFunction) + .typeArguments!; + types.forEach((type) => { + const index = typeParameters.findIndex((t) => { + return t.name === type.name; + }); + if (index == -1) { + throw new ExpressionError( + `${type.name} not found in typeParameters`, + ); + } + if ( + typeArguments[index].kind !== + TypeKind.TYPE_PARAMETER + ) + typeArgumentsSignature.push( + `${typeArguments[index].kind}`, + ); + }); + } + } + const typeSignature = + typeArgumentsSignature.length > 0 + ? '<' + typeArgumentsSignature.join(',') + '>' + : ''; + identifierName = identifierName + typeSignature; + } + + const newIdentifierExpression = new IdentifierExpression( + identifierName, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newIdentifierExpression.setExprType(newExprType); + res = newIdentifierExpression; + break; + } + case ts.SyntaxKind.BinaryExpression: { + const binaryBinaryExpression = expr as BinaryExpression; + const leftExpr = this.specializeExpression( + binaryBinaryExpression.leftOperand, + typeArguments, + typeParameters, + currentFuncScope, + ); + const rightExpr = this.specializeExpression( + binaryBinaryExpression.rightOperand, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newBinaryExpression = new BinaryExpression( + binaryBinaryExpression.operatorKind, + leftExpr, + rightExpr, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newBinaryExpression.setExprType(newExprType); + res = newBinaryExpression; + break; + } + case ts.SyntaxKind.PrefixUnaryExpression: { + const prefixUnaryExpression = expr as UnaryExpression; + const newOperand = this.specializeExpression( + prefixUnaryExpression.operand, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newprefixUnaryExpression = new UnaryExpression( + ts.SyntaxKind.PrefixUnaryExpression, + prefixUnaryExpression.operatorKind, + newOperand, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newprefixUnaryExpression.setExprType(newExprType); + res = newprefixUnaryExpression; + break; + } + case ts.SyntaxKind.PostfixUnaryExpression: { + const postfixUnaryExpression = expr as UnaryExpression; + const newOperand = this.specializeExpression( + postfixUnaryExpression.operand, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newUnaryExpression = new UnaryExpression( + ts.SyntaxKind.PostfixUnaryExpression, + postfixUnaryExpression.operatorKind, + newOperand, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newUnaryExpression.setExprType(newExprType); + res = newUnaryExpression; + break; + } + case ts.SyntaxKind.ConditionalExpression: { + const conditionalExpression = expr as ConditionalExpression; + const newCondition = this.specializeExpression( + conditionalExpression.condtion, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newTrueExpr = this.specializeExpression( + conditionalExpression.whenTrue, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newFalseExpr = this.specializeExpression( + conditionalExpression.whenFalse, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newConditionalExpression = new ConditionalExpression( + newCondition, + newTrueExpr, + newFalseExpr, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newConditionalExpression.setExprType(newExprType); + res = newConditionalExpression; + break; + } + case ts.SyntaxKind.CallExpression: { + const callExpression = expr as CallExpression; + let callExpr = callExpression.callExpr; + const args = new Array( + callExpression.callArgs.length, + ); + for (let i = 0; i != args.length; ++i) { + args[i] = this.specializeExpression( + callExpression.callArgs[i], + typeArguments, + typeParameters, + currentFuncScope, + ); + } + + if (callExpr.expressionKind === ts.SyntaxKind.Identifier) { + const identifierExpression = + callExpr as IdentifierExpression; + const exprType = + identifierExpression.exprType as TSFunction; + if (isTypeGeneric(exprType)) { + const typeArguments: Type[] = []; + for (let idx = 0; idx < args.length; idx++) { + typeArguments.push(args[idx].exprType); + } + callExpr = this.specializeExpression( + identifierExpression, + typeArguments, + exprType.typeArguments!, + currentFuncScope, + ); + } + } else if ( + callExpr.expressionKind === + ts.SyntaxKind.PropertyAccessExpression + ) { + const propertyAccessExpression = + callExpr as PropertyAccessExpression; + callExpr = this.specializeExpression( + propertyAccessExpression, + typeArguments, + typeParameters, + currentFuncScope, + ); + } + const newCallExpression = new CallExpression(callExpr, args); + if (callExpr instanceof PropertyAccessExpression) + callExpr.parent = newCallExpression; + + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newCallExpression.setExprType(newExprType); + res = newCallExpression; + break; + } + case ts.SyntaxKind.PropertyAccessExpression: { + const propertyAccessExpression = + expr as PropertyAccessExpression; + let propertyAccessExpr = + propertyAccessExpression.propertyAccessExpr; + let propertyExpr = propertyAccessExpression.propertyExpr; + + if ( + propertyAccessExpr.exprType instanceof TSClass && + isTypeGeneric(propertyAccessExpr.exprType) + ) { + const ownerType = propertyAccessExpr.exprType; + let propertyName = (propertyExpr as IdentifierExpression) + .identifierName; + let propertyType: Type = propertyExpr.exprType; + + propertyAccessExpr = this.specializeExpression( + propertyAccessExpr, + typeArguments, + typeParameters, + currentFuncScope, + ); + // method call + if (propertyExpr.exprType instanceof TSFunction) { + const funcKind = propertyExpr.exprType.funcKind; + if (ownerType.typeArguments) { + propertyType = ( + propertyAccessExpr.exprType as TSClass + ).getMethod(propertyName, funcKind)!.method!.type; + } else { + const typeArgumentsSignature: Array = []; + const _typeParameters = + propertyExpr.exprType.typeArguments; + if (_typeParameters) { + typeArguments.forEach((t) => { + if (t.kind !== TypeKind.TYPE_PARAMETER) + typeArgumentsSignature.push( + `${t.kind}`, + ); + }); + } + const typeSignature = + typeArgumentsSignature.length > 0 + ? '<' + + typeArgumentsSignature.join(',') + + '>' + : ''; + propertyName = propertyName + typeSignature; + propertyType = ( + propertyAccessExpr.exprType as TSClass + ).getMethod(propertyName, funcKind)!.method!.type; + } + } else { + // field access + //member field + (propertyAccessExpr.exprType as TSClass).fields.forEach( + (f) => { + if (f.name == propertyName) { + propertyType = f.type; + } + }, + ); + //static field + ( + propertyAccessExpr.exprType as TSClass + ).staticFields.forEach((f) => { + if (f.name == propertyName) { + propertyType = f.type; + } + }); + } + propertyExpr = new IdentifierExpression(propertyName); + propertyExpr.setExprType(propertyType); + } else { + propertyAccessExpr = this.specializeExpression( + propertyAccessExpr, + typeArguments, + typeParameters, + currentFuncScope, + ); + propertyExpr = this.specializeExpression( + propertyExpr, + typeArguments, + typeParameters, + currentFuncScope, + ); + } + + const newPropertyAccessExpression = + new PropertyAccessExpression( + propertyAccessExpr, + propertyExpr, + ); + newPropertyAccessExpression.setExprType(propertyExpr.exprType); + res = newPropertyAccessExpression; + break; + } + case ts.SyntaxKind.ParenthesizedExpression: { + const parenthesizedExpression = expr as ParenthesizedExpression; + const newParentesizedExpr = this.specializeExpression( + parenthesizedExpression.parentesizedExpr, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newParenthesizedExpression = new ParenthesizedExpression( + newParentesizedExpr, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newParenthesizedExpression.setExprType(newExprType); + res = newParenthesizedExpression; + break; + } + case ts.SyntaxKind.NewExpression: { + const newExpression = expr as NewExpression; + if (!newExpression.newArgs && !newExpression.typeArguments) + return newExpression; + + const args: Array = []; + if (newExpression.newArgs) { + for (let i = 0; i != newExpression.newArgs.length; ++i) { + const argExpr = this.specializeExpression( + newExpression.newArgs[i], + typeArguments, + typeParameters, + currentFuncScope, + ); + args.push(argExpr); + } + } + if ( + newExpression.newExpr.expressionKind === + ts.SyntaxKind.Identifier + ) { + const identifierExpression = + newExpression.newExpr as IdentifierExpression; + const newIdentifierExpression = this.specializeExpression( + identifierExpression, + typeArguments, + typeParameters, + currentFuncScope, + ); + res = new NewExpression(newIdentifierExpression, args); + res.setExprType(newIdentifierExpression.exprType); + } + break; + } + case ts.SyntaxKind.ObjectLiteralExpression: { + const objectLiteralExpression = expr as ObjectLiteralExpression; + const fields = new Array(); + const values = new Array(); + for (const f of objectLiteralExpression.objectFields) { + fields.push( + this.specializeExpression( + f, + typeArguments, + typeParameters, + currentFuncScope, + ) as IdentifierExpression, + ); + } + for (const v of objectLiteralExpression.objectValues) { + values.push( + this.specializeExpression( + v, + typeArguments, + typeParameters, + currentFuncScope, + ), + ); + } + + const newObjectLiteralExpression = new ObjectLiteralExpression( + fields, + values, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newObjectLiteralExpression.setExprType(newExprType); + res = newObjectLiteralExpression; + break; + } + case ts.SyntaxKind.ArrayLiteralExpression: { + const arrayLiteralExpression = expr as ArrayLiteralExpression; + const elements = new Array(); + for (const elem of arrayLiteralExpression.arrayValues) { + elements.push( + this.specializeExpression( + elem, + typeArguments, + typeParameters, + currentFuncScope, + ), + ); + } + const newArrayLiteralExpression = new ArrayLiteralExpression( + elements, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newArrayLiteralExpression.setExprType(newExprType); + res = newArrayLiteralExpression; + break; + } + case ts.SyntaxKind.AsExpression: { + const asExpression = expr as AsExpression; + const newExpr = this.specializeExpression( + asExpression.expression, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newAsExpression = new AsExpression(newExpr); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newAsExpression.setExprType(newExprType); + res = newAsExpression; + break; + } + case ts.SyntaxKind.ElementAccessExpression: { + const elementAccessExprNode = expr as ElementAccessExpression; + const newAccessExpr = this.specializeExpression( + elementAccessExprNode.accessExpr, + typeArguments, + typeParameters, + currentFuncScope, + ); + const newArgExpr = this.specializeExpression( + elementAccessExprNode.argExpr, + typeArguments, + typeParameters, + currentFuncScope, + ); + + const newElementAccessExpression = new ElementAccessExpression( + newAccessExpr, + newArgExpr, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newElementAccessExpression.setExprType(newExprType); + res = newElementAccessExpression; + break; + } + case ts.SyntaxKind.FunctionDeclaration: + case ts.SyntaxKind.FunctionExpression: + case ts.SyntaxKind.ArrowFunction: + case ts.SyntaxKind.MethodDeclaration: { + const functionExpression = expr as FunctionExpression; + const funcScope = functionExpression.funcScope; + const newFuncScope = new FunctionScope(currentFuncScope); + funcScope.specialize(newFuncScope); + // specialize this new FunctionScope + newFuncScope.setClassName(funcScope.className); + newFuncScope.debugFilePath = funcScope.debugFilePath; + newFuncScope.setFuncName(funcScope.funcName); + const newFuncType = isTypeGeneric(funcScope.funcType) + ? processGenericType( + funcScope.funcType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : funcScope.funcType; + newFuncScope.setFuncType(newFuncType as TSFunction); + newFuncScope.setGenericOwner(funcScope); + funcScope.addSpecializedScope(funcScope.funcName, newFuncScope); + newFuncScope.hasFreeVar = funcScope.hasFreeVar; + newFuncScope.mangledName = + newFuncScope.parent!.mangledName + + '|' + + newFuncScope.getName(); + funcScope.paramArray.forEach((v) => { + let varType = v.varType; + let initExpression = v.initExpression; + if (typeArguments) { + varType = processGenericType( + v.varType, + typeArguments, + typeParameters, + this.parserCtx, + ); + initExpression = initExpression + ? this.specializeExpression( + initExpression, + typeArguments, + typeParameters, + newFuncScope, + ) + : initExpression; + } + const new_parameter = new Parameter( + v.varName, + varType, + v.varModifiers, + v.varIndex, + v.isOptional, + v.destructuring, + initExpression, + v.isLocalVar(), + ); + newFuncScope.addParameter(new_parameter); + }); + funcScope.varArray.forEach((v) => { + if (v.varName == '@context') { + const contextVar = new Variable( + '@context', + v.varType, + v.varModifiers, + v.varIndex, + v.isLocalVar(), + v.initExpression, + ); + contextVar.scope = newFuncScope; + newFuncScope.contextVariable = contextVar; + newFuncScope.addVariable(contextVar); + } + }); + + funcScope.statements.forEach((s) => { + const stmt = + this.parserCtx.statementSpecializationProcessor.processStatement( + s, + typeArguments, + typeParameters, + currentFuncScope, + ); + newFuncScope.addStatement(stmt); + }); + + const newFunctionExpression = new FunctionExpression( + newFuncScope, + ); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newFunctionExpression.setExprType(newExprType); + res = newFunctionExpression; + break; + } + case ts.SyntaxKind.SuperKeyword: { + const superExpression = expr as SuperExpression; + const args: Array = []; + if (superExpression.callArgs) { + for (let i = 0; i != superExpression.callArgs.length; ++i) { + args.push( + this.specializeExpression( + superExpression.callArgs[i], + typeArguments, + typeParameters, + currentFuncScope, + ), + ); + } + } + const newSuperExpression = new SuperExpression(args); + const newExprType = isTypeGeneric(exprType) + ? processGenericType( + exprType, + typeArguments, + typeParameters, + this.parserCtx, + ) + : exprType; + newSuperExpression.setExprType(newExprType); + newSuperExpression.tsNode = superExpression.tsNode; + res = newSuperExpression; + break; + } + default: + res = expr; + } + return res; + } } diff --git a/src/frontend.ts b/src/frontend.ts index 109dae76..b5d09ccd 100644 --- a/src/frontend.ts +++ b/src/frontend.ts @@ -16,7 +16,10 @@ import { } from './scope.js'; import { VariableScanner, VariableInit } from './variable.js'; import ExpressionProcessor from './expression.js'; -import StatementProcessor from './statement.js'; +import { + StatementProcessor, + StatementSpecializationProcessor, +} from './statement.js'; import path from 'path'; import { Logger } from './log.js'; import { SyntaxError } from './error.js'; @@ -45,6 +48,7 @@ export class ParserContext { private _customTypeResolver; private _exprProcessor; private _stmtProcessor; + private _stmtSpecializationProcessor; private _sematicChecker; private _errorMessage: ts.Diagnostic[] | null = null; /** These types form a circular reference and need to be created as wasm types using rec. */ @@ -79,6 +83,8 @@ export class ParserContext { this._customTypeResolver = new CustomTypeResolver(this); this._exprProcessor = new ExpressionProcessor(this); this._stmtProcessor = new StatementProcessor(this); + this._stmtSpecializationProcessor = + new StatementSpecializationProcessor(this); this._sematicChecker = new SemanticChecker(this); } @@ -128,6 +134,7 @@ export class ParserContext { mangling(this.globalScopes); /* Step6: Add statements to scopes */ this._stmtProcessor.visit(); + this._stmtSpecializationProcessor.visit(); /* Step7: Resolve context type and this type */ this._customTypeResolver.visit(); /* Step8: Additional semantic check */ @@ -165,6 +172,10 @@ export class ParserContext { return this._stmtProcessor; } + get statementSpecializationProcessor(): StatementSpecializationProcessor { + return this._stmtSpecializationProcessor; + } + get semanticChecker(): SemanticChecker { return this._sematicChecker; } diff --git a/src/scope.ts b/src/scope.ts index ba97deac..4a788502 100644 --- a/src/scope.ts +++ b/src/scope.ts @@ -51,6 +51,7 @@ export enum importSearchTypes { Type = 'type', Function = 'function', Namespace = 'namespace', + Class = 'class', All = 'all', } @@ -72,8 +73,10 @@ export class Scope { private localIndex = -1; public mangledName = ''; private modifiers: ts.Node[] = []; - // iff this Scope is specialized + // iff this Scope is specialized scope private _genericOwner?: Scope; + // iff this Scope is a generic scope + private _specializedScopes?: Map; constructor(parent: Scope | null) { this.parent = parent; @@ -188,7 +191,7 @@ export class Scope { this.modifiers.push(modifier); } - setGenericOwner(genericOwner: Scope) { + setGenericOwner(genericOwner: Scope | undefined) { this._genericOwner = genericOwner; } @@ -196,6 +199,15 @@ export class Scope { return this._genericOwner; } + addSpecializedScope(typeSignature: string, s: Scope) { + if (!this._specializedScopes) this._specializedScopes = new Map(); + this._specializedScopes.set(typeSignature, s); + } + + get specializedScopes() { + return this._specializedScopes; + } + protected _nestFindScopeItem( name: string, searchFunc: (scope: Scope) => T | undefined, @@ -303,6 +315,23 @@ export class Scope { ); } + public findClassScope( + className: string, + nested = true, + ): ClassScope | undefined { + return this._nestFindScopeItem( + className, + (scope) => { + return scope.children.find((c) => { + return ( + c instanceof ClassScope && c.className === className // not mangled + ); + }) as ClassScope; + }, + nested, + ); + } + public findNamespaceScope( name: string, nested = true, @@ -388,6 +417,9 @@ export class Scope { /* Step4: Find namespace */ (matchStep(importSearchTypes.Namespace) && scope.findNamespaceScope(oriName, false)) || + /* Step5: Find class in current scope */ + (matchStep(importSearchTypes.Class) && + scope.findClassScope(oriName, false)) || undefined; if (res) { return res; @@ -542,7 +574,6 @@ export class Scope { scope.kind = this.kind; scope.name = this.name; scope.children = new Array(); - scope.parent = this.parent; scope.namedTypeMap = new Map(); scope.debugFilePath = this.debugFilePath; scope.tempVarArray = new Array(); @@ -551,7 +582,6 @@ export class Scope { scope.localIndex = this.localIndex; scope.mangledName = this.mangledName; scope.modifiers = this.modifiers; - if (this.genericOwner) scope.setGenericOwner(this.genericOwner); } } @@ -576,7 +606,6 @@ export class ClosureEnvironment extends Scope { super.specialize(scope); scope.kind = this.kind; scope.hasFreeVar = this.hasFreeVar; - scope.contextVariable = this.contextVariable; } } @@ -737,6 +766,7 @@ export class FunctionScope extends ClosureEnvironment { funcScope.functionType = this.functionType; funcScope._className = this._className; funcScope.realParamCtxType = this.realParamCtxType; + funcScope.mangledName = this.mangledName; funcScope.oriFuncName = this.oriFuncName; funcScope.debugLocations = new Array(); } @@ -813,6 +843,7 @@ export class ScopeScanner { /* block index to represent current block's count */ blockIndex = 0; static literal_obj_count = 0; + static specializedScopeCache = new Map[]>(); constructor(private parserCtx: ParserContext) { this.globalScopes = this.parserCtx.globalScopes; diff --git a/src/semantics/builder_context.ts b/src/semantics/builder_context.ts index 4eccda3b..f7fcbd50 100644 --- a/src/semantics/builder_context.ts +++ b/src/semantics/builder_context.ts @@ -260,6 +260,10 @@ export class BuildContext { return this.findSymbol(id, importSearchTypes.Function); } + findClass(id: string): SymbolValue | undefined { + return this.findSymbol(id, importSearchTypes.Class); + } + findNamespace(id: string): SymbolValue | undefined { return this.findSymbol(id, importSearchTypes.Namespace); } diff --git a/src/semantics/expression_builder.ts b/src/semantics/expression_builder.ts index 48752b7f..d24d8f89 100644 --- a/src/semantics/expression_builder.ts +++ b/src/semantics/expression_builder.ts @@ -788,7 +788,6 @@ function buildIdentiferExpression( context: BuildContext, ): SemanticsValue { const name = expr.identifierName; - if (name == 'undefined') { return new LiteralValue(Primitive.Undefined, undefined); } @@ -806,6 +805,10 @@ function buildIdentiferExpression( } if (!ret) { Logger.debug(`=== try find identifer "${name}" as Function Faield`); + ret = context.findClass(name); + } + if (!ret) { + Logger.debug(`=== try find identifer "${name}" as Class Faield`); ret = builtinTypes.get(name) ? builtinTypes.get(name) : context.findType(name); diff --git a/src/semantics/index.ts b/src/semantics/index.ts index e32b4303..b981323c 100644 --- a/src/semantics/index.ts +++ b/src/semantics/index.ts @@ -30,7 +30,11 @@ import { ObjectType, EnumType, } from './value_types.js'; -import { PredefinedTypeId, isNativeSignatureComment } from '../utils.js'; +import { + PredefinedTypeId, + isNativeSignatureComment, + processGenericType, +} from '../utils.js'; import { GetPredefinedType } from './predefined_types.js'; import { flattenFunction } from './flatten.js'; import { BuildContext, SymbolKey, SymbolValue } from './builder_context.js'; @@ -212,41 +216,10 @@ function createFunctionDeclareNode( reverse[0] = '@' + reverse[0]; name = reverse.reverse().join('|'); } - /* maybe can be replace to context.findSymbolKey(f.funcType) as FunctionType */ const func_type = createType(context, f.funcType) as FunctionType; const this_type = getMethodClassType(f, context); const parameters: VarDeclareNode[] = []; - if (f.genericOwner) { - const genericOwner = f.genericOwner as FunctionScope; - const specializedArgs = f.funcType.specializedArguments!; - genericOwner.paramArray.forEach((v) => { - const specializedType = TypeResolver.createSpecializedType( - v.varType, - specializedArgs, - (f.genericOwner as FunctionScope).funcType, - ); - const newParam = new Parameter( - v.varName, - specializedType, - v.varModifiers, - v.varIndex, - v.isOptional, - v.destructuring, - ); - if (v.initExpression) newParam.setInitExpr(v.initExpression); - newParam.setIsLocalVar(v.isLocalVar()); - newParam.needReBinding = v.needReBinding; - newParam.tsNode = v.tsNode; - f.addParameter(newParam); - }); - /* at this time, we set parameters for the specialized FunctionScope, - * so we need to initialize their index once - */ - f.resetLocalIndex(); - f.initVariableIndex(); - f.initParamIndex(); - } const paramArray = f.paramArray; for (let i = 0; i < paramArray.length; i++) { @@ -537,11 +510,6 @@ function generateFunctionScopeNodes( generateChildrenFunctionScope(context, scope); - if (scope.genericOwner) { - scope.genericOwner.statements.forEach((s) => { - scope.addStatement(s); - }); - } const statements = buildStatements(context, scope.statements); func.body.statements = statements; diff --git a/src/semantics/statement_builder.ts b/src/semantics/statement_builder.ts index 805111c9..ef6121de 100644 --- a/src/semantics/statement_builder.ts +++ b/src/semantics/statement_builder.ts @@ -38,9 +38,7 @@ import { } from './semantics_nodes.js'; import { Variable } from '../variable.js'; -import { TypeResolver } from '../type.js'; -import { isTypeGeneric } from '../utils.js'; -import { ClassScope, FunctionScope, Scope, ScopeKind } from '../scope.js'; +import { Scope, ScopeKind } from '../scope.js'; import { Statement, @@ -111,7 +109,6 @@ export function createFromVariable( v.scope ? v.scope!.mangledName : '' })" type: ${type}`, ); - return new VarDeclareNode( storageType, type!, @@ -136,62 +133,6 @@ export function createLocalSymbols( ): [VarDeclareNode[] | undefined, Map | undefined] { let varList: VarDeclareNode[] | undefined = undefined; let symbols: Map | undefined = undefined; - - if (scope.genericOwner) { - const origVarArr = scope.genericOwner.varArray; - if (scope instanceof FunctionScope) { - const specializedArgs = scope.funcType.specializedArguments!; - origVarArr.forEach((v) => { - if (v.varName == '@context' || v.varName == 'this') return; - if (!isTypeGeneric(v.varType)) { - scope.addVariable(v); - } else { - const newType = TypeResolver.createSpecializedType( - v.varType, - specializedArgs, - (scope.genericOwner as FunctionScope).funcType, - ); - const newVar = new Variable( - v.varName, - newType, - v.varModifiers, - v.varIndex, - v.isLocalVar(), - ); - if (v.initExpression) newVar.setInitExpr(v.initExpression); - newVar.needReBinding = v.needReBinding; - newVar.tsNode = v.tsNode; - scope.addVariable(newVar); - } - }); - } else if (scope instanceof ClassScope) { - const specializedArgs = scope.classType.specializedArguments!; - origVarArr.forEach((v) => { - if (v.varName == '@context' || v.varName == 'this') return; - if (!isTypeGeneric(v.varType)) { - scope.addVariable(v); - } else { - const newType = TypeResolver.createSpecializedType( - v.varType, - specializedArgs, - (scope.genericOwner as ClassScope).classType, - ); - const newVar = new Variable( - v.varName, - newType, - v.varModifiers, - v.varIndex, - v.isLocalVar(), - ); - if (v.initExpression) newVar.setInitExpr(v.initExpression); - newVar.needReBinding = v.needReBinding; - newVar.tsNode = v.tsNode; - scope.addVariable(newVar); - } - }); - } - } - const vararr = scope!.varArray; if (vararr.length > 0) { symbols = new Map(); diff --git a/src/semantics/type_creator.ts b/src/semantics/type_creator.ts index 36d04c34..b2a43aa7 100644 --- a/src/semantics/type_creator.ts +++ b/src/semantics/type_creator.ts @@ -6,8 +6,6 @@ import { Type, TSClass, - TsClassField, - TsClassFunc, FunctionKind, TypeKind, TSFunction, @@ -456,6 +454,14 @@ export function createObjectType( if (objectType) { return objectType as ObjectType; } + // filter out useless class types + if ( + clazz.typeKind == TypeKind.CLASS && + !clazz.isLiteral && + !clazz.belongedScope + ) { + return undefined; + } if (clazz.mangledName.includes(BuiltinNames.builtinTypeManglePrefix)) { if (IsBuiltinObject(clazz.className)) { return createBuiltinObjectType(clazz, context); diff --git a/src/semantics/value_types.ts b/src/semantics/value_types.ts index 088de955..2de32310 100644 --- a/src/semantics/value_types.ts +++ b/src/semantics/value_types.ts @@ -406,43 +406,6 @@ export class ObjectType extends ValueTypeWithArguments { } if (this.meta === other_type.meta) return true; - - if ( - !this.typeArguments && - !other_type.typeArguments && - (this.genericOwner || other_type.genericOwner) - ) { - const self_generic = this.genericOwner - ? (this.genericOwner as ObjectType) - : this; - const other_generic = other_type.genericOwner - ? (other_type.genericOwner as ObjectType) - : other_type; - return self_generic.meta === other_generic.meta; - } - - if (!(this.genericOwner && other_type.genericOwner)) return false; - - // is the same specialized object? - if (!this.genericOwner!.equals(other_type.genericOwner!)) return false; - // compare the specialTypeArguments - if ( - this.specialTypeArguments && - other_type.specialTypeArguments && - this.specialTypeArguments.length == - other_type.specialTypeArguments.length - ) { - for (let i = 0; i < this.specialTypeArguments.length; i++) { - if ( - !this.specialTypeArguments[i].equals( - other_type.specialTypeArguments[i], - ) - ) { - return false; - } - } - return true; - } return false; } diff --git a/src/statement.ts b/src/statement.ts index 1439e87e..b325c8a9 100644 --- a/src/statement.ts +++ b/src/statement.ts @@ -21,7 +21,7 @@ import { StringLiteralExpression, EnumerateKeysExpression, } from './expression.js'; -import { Scope, ScopeKind, FunctionScope } from './scope.js'; +import { Scope, ScopeKind, FunctionScope, BlockScope } from './scope.js'; import { parentIsFunctionLike, Stack, @@ -30,15 +30,16 @@ import { SourceLocation, addSourceMapLoc, getCurScope, + processGenericType, } from './utils.js'; -import { ModifierKind, Variable } from './variable.js'; +import { ModifierKind, Variable, Parameter } from './variable.js'; import { TSArray, TSClass, - TSFunction, Type, TypeKind, builtinTypes, + TSTypeParameter, } from './type.js'; import { Logger } from './log.js'; import { StatementError, UnimplementError } from './error.js'; @@ -64,6 +65,11 @@ export class Statement { getScope(): Scope | null { return this._scope; } + + clone() { + const stmt = new Statement(this.statementKind); + return stmt; + } } /** in order to keep order of namespace in parent level scope, creat a corresponding statement @@ -73,6 +79,11 @@ export class ModDeclStatement extends Statement { constructor(public scope: Scope) { super(ts.SyntaxKind.ModuleDeclaration); } + + clone(): ModDeclStatement { + const stmt = new ModDeclStatement(this.scope); + return stmt; + } } export class IfStatement extends Statement { @@ -95,12 +106,28 @@ export class IfStatement extends Statement { get ifIfFalse(): Statement | null { return this.ifFalse; } + + clone(): IfStatement { + const stmt = new IfStatement( + this.ifCondition, + this.ifIfTrue, + this.ifIfFalse, + ); + return stmt; + } } export class BlockStatement extends Statement { constructor() { super(ts.SyntaxKind.Block); } + + clone(): BlockStatement { + const stmt = new BlockStatement(); + const scope = this.getScope(); + if (scope !== null) stmt.setScope(scope); + return stmt; + } } export class ReturnStatement extends Statement { @@ -111,6 +138,11 @@ export class ReturnStatement extends Statement { get returnExpression(): Expression | null { return this.expr; } + + clone(): ReturnStatement { + const stmt = new ReturnStatement(this.returnExpression); + return stmt; + } } // create 'while' or 'do...while' loop @@ -145,6 +177,18 @@ export class BaseLoopStatement extends Statement { get loopBody(): Statement { return this.body; } + + clone(): BaseLoopStatement { + const stmt = new BaseLoopStatement( + this.statementKind, + this.loopLabel, + this.loopBlockLabel, + this.loopContinueLable, + this.loopCondtion, + this.loopBody, + ); + return stmt; + } } export class ForStatement extends Statement { @@ -188,6 +232,19 @@ export class ForStatement extends Statement { get forLoopIncrementor(): Expression | null { return this.incrementor; } + + clone(): ForStatement { + const stmt = new ForStatement( + this.forLoopLabel, + this.forLoopBlockLabel, + this.forContinueLable, + this.forLoopCondtion, + this.forLoopBody, + this.forLoopInitializer, + this.forLoopIncrementor, + ); + return stmt; + } } export class ExpressionStatement extends Statement { @@ -198,12 +255,22 @@ export class ExpressionStatement extends Statement { get expression(): Expression { return this.expr; } + + clone(): ExpressionStatement { + const stmt = new ExpressionStatement(this.expression); + return stmt; + } } export class EmptyStatement extends Statement { constructor() { super(ts.SyntaxKind.EmptyStatement); } + + clone(): EmptyStatement { + const stmt = new EmptyStatement(); + return stmt; + } } export class CaseClause extends Statement { @@ -218,6 +285,11 @@ export class CaseClause extends Statement { get caseStatements(): Statement[] { return this.statements; } + + clone(): CaseClause { + const stmt = new CaseClause(this.caseExpr, this.caseStatements); + return stmt; + } } export class DefaultClause extends Statement { @@ -228,6 +300,11 @@ export class DefaultClause extends Statement { get caseStatements(): Statement[] { return this.statements; } + + clone(): DefaultClause { + const stmt = new DefaultClause(this.caseStatements); + return stmt; + } } export class CaseBlock extends Statement { @@ -250,6 +327,15 @@ export class CaseBlock extends Statement { get caseCauses(): Statement[] { return this.causes; } + + clone(): CaseBlock { + const stmt = new CaseBlock( + this.switchLabel, + this.breakLabel, + this.caseCauses, + ); + return stmt; + } } export class SwitchStatement extends Statement { constructor(private cond: Expression, private caseBlock: Statement) { @@ -263,6 +349,14 @@ export class SwitchStatement extends Statement { get switchCaseBlock(): Statement { return this.caseBlock; } + + clone(): SwitchStatement { + const stmt = new SwitchStatement( + this.switchCondition, + this.switchCaseBlock, + ); + return stmt; + } } export class BreakStatement extends Statement { @@ -273,6 +367,11 @@ export class BreakStatement extends Statement { get breakLabel(): string { return this.label; } + + clone(): BreakStatement { + const stmt = new BreakStatement(this.breakLabel); + return stmt; + } } export class ContinueStatement extends Statement { @@ -283,6 +382,11 @@ export class ContinueStatement extends Statement { get continueLabel(): string { return this.label; } + + clone(): ContinueStatement { + const stmt = new ContinueStatement(this.continueLabel); + return stmt; + } } export class FunctionDeclarationStatement extends Statement { @@ -295,6 +399,11 @@ export class FunctionDeclarationStatement extends Statement { get funcScope(): FunctionScope { return this._funcScope; } + + clone(): FunctionDeclarationStatement { + const stmt = new FunctionDeclarationStatement(this.funcScope); + return stmt; + } } export class VariableStatement extends Statement { @@ -311,6 +420,14 @@ export class VariableStatement extends Statement { get varArray(): Variable[] { return this.variableArray; } + + clone(): VariableStatement { + const stmt = new VariableStatement(); + this.varArray.forEach((v) => { + stmt.addVariable(v); + }); + return stmt; + } } export class ImportDeclaration extends Statement { @@ -319,6 +436,11 @@ export class ImportDeclaration extends Statement { constructor() { super(ts.SyntaxKind.ImportDeclaration); } + + clone(): ImportDeclaration { + const stmt = new ImportDeclaration(); + return stmt; + } } export class ThrowStatement extends Statement { @@ -328,6 +450,11 @@ export class ThrowStatement extends Statement { super(ts.SyntaxKind.ThrowStatement); this.expr = expr; } + + clone(): ThrowStatement { + const stmt = new ThrowStatement(this.expr); + return stmt; + } } export class CatchClauseStatement extends Statement { @@ -338,6 +465,12 @@ export class CatchClauseStatement extends Statement { super(ts.SyntaxKind.CatchClause); this.catchBlockStmt = catchBlock; } + + clone(): CatchClauseStatement { + const stmt = new CatchClauseStatement(this.catchBlockStmt); + stmt.catchVar = this.catchVar; + return stmt; + } } export class TryStatement extends Statement { @@ -351,9 +484,16 @@ export class TryStatement extends Statement { this.label = tryLable; this.tryBlockStmt = tryBlock; } + + clone(): TryStatement { + const stmt = new TryStatement(this.label, this.tryBlockStmt); + stmt.catchClauseStmt = this.catchClauseStmt; + stmt.finallyBlockStmt = this.finallyBlockStmt; + return stmt; + } } -export default class StatementProcessor { +export class StatementProcessor { private loopLabelStack = new Stack(); private breakLabelsStack = new Stack(); // mark if continue statement in a loop @@ -368,6 +508,7 @@ export default class StatementProcessor { visit() { this.emitSourceMap = getConfig().sourceMap; this.parserCtx.nodeScopeMap.forEach((scope, node) => { + this.parserCtx.currentScope = scope; this.currentScope = scope; /** arrow function body is a ts.expression */ if (ts.isArrowFunction(node) && !ts.isBlock(node.body)) { @@ -1394,3 +1535,441 @@ export default class StatementProcessor { return loopLabel + '_continue'; } } + +export class StatementSpecializationProcessor { + currentScope: Scope | null = null; + constructor(private parserCtx: ParserContext) {} + + visit() { + for (const g of this.parserCtx.globalScopes) { + this.currentScope = g; + this.visitScope(g); + } + } + + visitScope(scope: Scope) { + switch (scope.kind) { + case ScopeKind.FunctionScope: + this.currentScope = scope as FunctionScope; + if (scope.genericOwner) { + const originalFuncType = ( + scope.genericOwner as FunctionScope + ).funcType; + const typeParameters = originalFuncType.isMethod + ? originalFuncType.belongedClass!.typeArguments + ? originalFuncType.belongedClass!.typeArguments + : originalFuncType.typeArguments! + : originalFuncType.typeArguments!; + const specializedFuncType = (scope as FunctionScope) + .funcType; + const typeArguments = specializedFuncType.isMethod + ? specializedFuncType.belongedClass! + .specializedArguments + ? specializedFuncType.belongedClass! + .specializedArguments + : specializedFuncType.specializedArguments! + : specializedFuncType.specializedArguments!; + + const genericFunctionScope = + scope.genericOwner as FunctionScope; + //prcocess parameters and variables + genericFunctionScope.paramArray.forEach((v) => { + let varType = v.varType; + let initExpression = v.initExpression; + if (typeArguments) { + varType = processGenericType( + v.varType, + typeArguments, + typeParameters, + this.parserCtx, + ); + initExpression = initExpression + ? this.parserCtx.expressionProcessor.specializeExpression( + initExpression, + typeArguments, + typeParameters, + scope, + ) + : initExpression; + } + const new_parameter = new Parameter( + v.varName, + varType, + v.varModifiers, + v.varIndex, + v.isOptional, + v.destructuring, + initExpression, + v.isLocalVar(), + ); + + if (v.varIsClosure) new_parameter.setVarIsClosure(); + (scope as FunctionScope).addParameter(new_parameter); + }); + genericFunctionScope.varArray.forEach((v, index) => { + if (v.varName == '@context') { + const contextVar = new Variable( + '@context', + v.varType, + v.varModifiers, + v.varIndex, + v.isLocalVar(), + v.initExpression, + ); + contextVar.scope = scope; + (scope as FunctionScope).contextVariable = + contextVar; + scope.addVariable(contextVar); + } else if (v.varName == 'this') { + const thisVar = new Variable( + 'this', + processGenericType( + v.varType, + typeArguments, + typeParameters, + this.parserCtx, + ), + v.varModifiers, + v.varIndex, + v.isLocalVar(), + v.initExpression, + ); + thisVar.setVarIsClosure(); + thisVar.scope = scope; + scope.addVariable(thisVar); + } + }); + + scope.genericOwner.statements.forEach((s) => { + const stmt = this.processStatement( + s, + typeArguments, + typeParameters, + this.currentScope!, + ); + scope.addStatement(stmt); + }); + } + break; + default: + this.foreachScopeChildren(scope); + break; + } + } + + foreachScopeChildren(scope: Scope) { + for (const c of scope.children) { + this.currentScope = c; + this.visitScope(c); + } + } + + processStatement( + s: Statement, + typeArguments: Type[], + typeParameters: TSTypeParameter[], + currentScope: Scope, + ): Statement { + const stmt = s.clone(); + switch (stmt.statementKind) { + case ts.SyntaxKind.VariableStatement: { + const variableStatement = stmt as VariableStatement; + const newVariableStatement = new VariableStatement(); + variableStatement.varArray.forEach((v) => { + const initExpression = v.initExpression; + if (!initExpression) { + newVariableStatement.addVariable(v); + } else { + const newInitExpression = + this.parserCtx.expressionProcessor.specializeExpression( + initExpression, + typeArguments, + typeParameters, + currentScope, + ); + const newVar = new Variable( + v.varName, + newInitExpression.exprType, + v.varModifiers, + v.varIndex, + v.isLocalVar(), + newInitExpression, + ); + if (v.varIsClosure) newVar.setVarIsClosure(); + newVariableStatement.addVariable(newVar); + currentScope.addVariable(newVar); + newVar.scope = currentScope; + } + }); + return newVariableStatement; + } + case ts.SyntaxKind.IfStatement: { + const ifStatement = stmt as IfStatement; + const newIfCondition = + this.parserCtx.expressionProcessor.specializeExpression( + ifStatement.ifCondition, + typeArguments, + typeParameters, + this.currentScope! as FunctionScope, + ); + const newIfTrue = this.processStatement( + ifStatement.ifIfTrue, + typeArguments, + typeParameters, + currentScope, + ); + let newIfFalse: Statement | null = null; + if (ifStatement.ifIfFalse) { + newIfFalse = this.processStatement( + ifStatement.ifIfFalse, + typeArguments, + typeParameters, + currentScope, + ); + } + const newIfStatement = new IfStatement( + newIfCondition, + newIfTrue, + newIfFalse, + ); + return newIfStatement; + } + case ts.SyntaxKind.Block: { + const blockStatement = stmt as BlockStatement; + const newBlockStatement = new BlockStatement(); + if (blockStatement.getScope() !== null) { + const genericBlockScope = + blockStatement.getScope() as BlockScope; + const newBlockScope = new BlockScope( + currentScope, + genericBlockScope.getName(), + this.currentScope as FunctionScope, + ); + genericBlockScope.specialize(newBlockScope); + // initialize the properties of BlockScope; + newBlockScope.setGenericOwner(genericBlockScope); + genericBlockScope.addSpecializedScope( + genericBlockScope.getName(), + newBlockScope, + ); + if (genericBlockScope.mangledName !== '') { + newBlockScope.mangledName = + currentScope.mangledName !== '' + ? currentScope.mangledName + + '|' + + newBlockScope.getName() + : newBlockScope.getName(); + } + + //process variable '@context' + genericBlockScope.varArray.forEach((v) => { + if (v.varName == '@context') { + const contextVar = new Variable( + '@context', + v.varType, + v.varModifiers, + v.varIndex, + v.isLocalVar(), + v.initExpression, + ); + contextVar.scope = newBlockScope; + newBlockScope.addVariable(contextVar); + } + }); + + // processing statement + genericBlockScope.statements.forEach((s) => { + const newStmt = this.processStatement( + s, + typeArguments, + typeParameters, + newBlockScope, + ); + newBlockScope.addStatement(newStmt); + }); + newBlockStatement.setScope(newBlockScope); + } + + return newBlockStatement; + } + case ts.SyntaxKind.ReturnStatement: { + const returnStatement = stmt as ReturnStatement; + if (!returnStatement.returnExpression) return returnStatement; + const returnExpression = + this.parserCtx.expressionProcessor.specializeExpression( + returnStatement.returnExpression, + typeArguments, + typeParameters, + this.currentScope! as FunctionScope, + ); + const newReturnStatement = new ReturnStatement( + returnExpression, + ); + return newReturnStatement; + } + case ts.SyntaxKind.WhileStatement: { + const baseLoopStatement = stmt as BaseLoopStatement; + const newLoopLabel = baseLoopStatement.loopLabel; + const newBlockLabel = baseLoopStatement.loopBlockLabel; + const newContinueLable = baseLoopStatement.loopContinueLable; + const newLoopCondtion = + this.parserCtx.expressionProcessor.specializeExpression( + baseLoopStatement.loopCondtion, + typeArguments, + typeParameters, + currentScope, + ); + const newLoopBody = this.processStatement( + baseLoopStatement.loopBody, + typeArguments, + typeParameters, + currentScope, + ); + const newBaseLoopStatement = new BaseLoopStatement( + baseLoopStatement.statementKind, + newLoopLabel, + newBlockLabel, + newContinueLable, + newLoopCondtion, + newLoopBody, + ); + return newBaseLoopStatement; + } + case ts.SyntaxKind.ExpressionStatement: { + const expressionStatement = stmt as ExpressionStatement; + const expression = + this.parserCtx.expressionProcessor.specializeExpression( + expressionStatement.expression, + typeArguments, + typeParameters, + currentScope, + ); + const newExpressionStatement = new ExpressionStatement( + expression, + ); + return newExpressionStatement; + } + case ts.SyntaxKind.SwitchStatement: { + const switchStatement = stmt as SwitchStatement; + const newSwitchCondition = + this.parserCtx.expressionProcessor.specializeExpression( + switchStatement.switchCondition, + typeArguments, + typeParameters, + currentScope, + ); + const newSwitchCaseBlock = this.processStatement( + switchStatement.switchCaseBlock, + typeArguments, + typeParameters, + currentScope, + ); + const newSwitchStatement = new SwitchStatement( + newSwitchCondition, + newSwitchCaseBlock, + ); + return newSwitchStatement; + } + case ts.SyntaxKind.CaseBlock: { + const caseBlock = stmt as CaseBlock; + const newSwitchLabel = caseBlock.switchLabel; + const newBreakLabel = caseBlock.breakLabel; + const stmtArray: Statement[] = []; + caseBlock.caseCauses.forEach((s) => { + const newStmt = this.processStatement( + s, + typeArguments, + typeParameters, + currentScope, + ); + stmtArray.push(newStmt); + }); + const newCaseBlock = new CaseBlock( + newSwitchLabel, + newBreakLabel, + stmtArray, + ); + return newCaseBlock; + } + case ts.SyntaxKind.CaseClause: { + const caseClause = stmt as CaseClause; + const newCaseExpr = + this.parserCtx.expressionProcessor.specializeExpression( + caseClause.caseExpr, + typeArguments, + typeParameters, + currentScope, + ); + const stmtArray: Statement[] = []; + caseClause.caseStatements.forEach((s) => { + const newStmt = this.processStatement( + s, + typeArguments, + typeParameters, + currentScope, + ); + stmtArray.push(newStmt); + }); + const newCaseClause = new CaseClause(newCaseExpr, stmtArray); + return newCaseClause; + } + case ts.SyntaxKind.DefaultClause: { + const defaultClause = stmt as DefaultClause; + const stmtArray: Statement[] = []; + defaultClause.caseStatements.forEach((s) => { + const newStmt = this.processStatement( + s, + typeArguments, + typeParameters, + currentScope, + ); + stmtArray.push(newStmt); + }); + const newDefaultClause = new DefaultClause(stmtArray); + return newDefaultClause; + } + case ts.SyntaxKind.ThrowStatement: { + const throwStatement = stmt as ThrowStatement; + const newExpr = + this.parserCtx.expressionProcessor.specializeExpression( + throwStatement.expr, + typeArguments, + typeParameters, + currentScope, + ); + const newThrowStatement = new ThrowStatement(newExpr); + return newThrowStatement; + } + case ts.SyntaxKind.CatchClause: { + const catchClauseStatement = stmt as CatchClauseStatement; + const newCatchBlockStmt = this.processStatement( + catchClauseStatement.catchBlockStmt, + typeArguments, + typeParameters, + currentScope, + ) as BlockStatement; + const newCatchClauseStatement = new CatchClauseStatement( + newCatchBlockStmt, + ); + return newCatchClauseStatement; + } + case ts.SyntaxKind.TryStatement: { + const tryStatement = stmt as TryStatement; + const newLable = tryStatement.label; + const newTryBlockStmt = this.processStatement( + tryStatement.tryBlockStmt, + typeArguments, + typeParameters, + currentScope, + ) as BlockStatement; + const newTryStatement = new TryStatement( + newLable, + newTryBlockStmt, + ); + return newTryStatement; + } + default: + return stmt; + } + } +} diff --git a/src/type.ts b/src/type.ts index be3e839c..418acf0c 100644 --- a/src/type.ts +++ b/src/type.ts @@ -14,18 +14,21 @@ import { NamespaceScope, Scope, ScopeKind, + importSearchTypes, } from './scope.js'; import { Parameter, Variable } from './variable.js'; -import { Expression, IdentifierExpression } from './expression.js'; +import { Expression } from './expression.js'; import { Logger } from './log.js'; import { DefaultTypeId, - createClassScopeByClassType, - createFunctionScopeByFunctionType, + processGenericType, isTypeGeneric, + createScopeBySpecializedType, + genericClassTransformation, } from './utils.js'; -import { TypeError, UnimplementError } from './error.js'; +import { TypeError } from './error.js'; import { BuiltinNames } from '../lib/builtin/builtin_name.js'; +import { INSPECT_MAX_BYTES } from 'buffer'; export const enum TypeKind { VOID = 'void', @@ -833,7 +836,7 @@ export class TypeResolver { builtInTsTypeMap = new Map(); private symbolTypeMap = new Map(); nodeTypeCache = new Map(); - specializedTypeCache = new Map[]>(); + static specializedTypeCache = new Map[]>(); static typeParameterIndex = 0; private loopEntry: TSClass | null = null; @@ -938,12 +941,12 @@ export class TypeResolver { return this.tsTypeToType(t); }, ); - const specificType = TypeResolver.createSpecializedType( + const specificType = processGenericType( type, aliasTypes, - type as TSClass, + (type as TSClass).typeArguments!, + this.parserCtx, ) as TSClass; - specificType.setSpecializedArguments(aliasTypes); specificType.isLiteral = true; // TODO: in this case, specificType can't be recursive this.typeIdAllocate(specificType); @@ -953,57 +956,38 @@ export class TypeResolver { } } else { type = this.generateNodeType(symbolNode); - // specialization of generic types when using type alias - if ( - tsType.aliasTypeArguments && - this.noTypeParmeters(tsType.aliasTypeArguments) && - type instanceof TSTypeWithArguments - ) { - const specializedTypes = tsType.aliasTypeArguments.map( - (t) => { - return this.tsTypeToType(t); - }, - ); - // generate a name for the new specialized type - const typeNames = new Array(); - specializedTypes.forEach((v) => { - typeNames.push(`${v.kind}`); - }); - const typeSignature = '<' + typeNames.join(',') + '>'; - - // if a specialized type already exists - const cache = this.specializedTypeCache.get(type); - let found: Type | undefined; - if (cache) { - cache.forEach((v) => { - if (v.has(typeSignature)) { - found = v.get(typeSignature); - } - }); - } - if (found) break; - - // perform specialization operation - type = TypeResolver.createSpecializedType( - type, - specializedTypes, - type, - ); - if (type instanceof TSTypeWithArguments) - type.setSpecializedArguments(specializedTypes); - const origType = this.generateNodeType(symbolNode); - - // update specializedTypeCache - if (this.specializedTypeCache.has(origType)) { - const value = new Map(); - value.set(typeSignature, type); - this.specializedTypeCache - .get(origType)! - .push(value); - } else { - const value = new Map(); - value.set(typeSignature, type); - this.specializedTypeCache.set(origType, [value]); + // if type is generic, may need to deal with the generic chain + if (isTypeGeneric(type)) { + if (type instanceof TSTypeWithArguments) { + let typeArguments: Type[] = []; + const typeParameters = type.typeArguments; + // e.g. + // type ItemGenerator = (item: T, index: U) => void + // function test_func(func: ItemGenerator, a: T, b: U) {...} + if (tsType.aliasTypeArguments) { + typeArguments = tsType.aliasTypeArguments!.map( + (t) => { + return this.tsTypeToType(t); + }, + ); + } else if (this.isTypeReference(tsType)) { + // e.g. + // class Foo {...}; + // function bar(a: Foo, data: Y[]) {...} + typeArguments = + this.typechecker!.getTypeArguments( + tsType as ts.TypeReference, + ).map((t) => { + return this.tsTypeToType(t); + }); + } + if (typeParameters) + type = processGenericType( + type, + typeArguments, + typeParameters, + this.parserCtx, + ); } } } @@ -1080,166 +1064,6 @@ export class TypeResolver { this.currentScope!.addType(typeName, type); break; } - case ts.SyntaxKind.CallExpression: { - // When a generic function is called, it first needs to be specialized - const callExprNode = node; - const origType = this.generateNodeType( - callExprNode.expression, - ) as TSFunction; - const originalFunctionScope = origType.belongedScope; - // without FunctionScope information, generic functions cannot be specialized - if (isTypeGeneric(origType) && originalFunctionScope) { - let typeArguments: Type[] | undefined; - - // explicitly declare specialization type typeArguments - // e.g. - // function genericFunc (v: T){...} - // genericFunc(5); - if (callExprNode.typeArguments) { - typeArguments = callExprNode.typeArguments.map((t) => { - return this.generateNodeType(t); - }); - } - // specialize by passing parameters - // e.g. - // function genericFunc (v: T){...} - // genericFunc('hello'); - if (!typeArguments) { - const _typeArguments: Type[] = []; - // argument type - const _arguments = callExprNode.arguments.map((t) => { - return this.generateNodeType(t); - }); - // paramter type - const _paramters = origType.getParamTypes(); - - // TODO: Handling optional parameters - for (let i = 0; i < _paramters.length; i++) { - if ( - isTypeGeneric(_paramters[i]) && - !isTypeGeneric(_arguments[i]) - ) { - if ( - _paramters[i].kind == - TypeKind.TYPE_PARAMETER - ) { - _typeArguments.push(_arguments[i]); - } else if ( - _paramters[i].kind == TypeKind.ARRAY - ) { - const elementType = ( - _arguments[i] as TSArray - ).elementType; - _typeArguments.push(elementType); - } - } - } - typeArguments = _typeArguments; - } - - // there is a specialization types list - if (typeArguments.length > 0) { - const typeNames = new Array(); - typeArguments.forEach((v) => { - typeNames.push(`${v.kind}`); - }); - const typeSignature = '<' + typeNames.join(',') + '>'; - // if a specialized type already exists - const cache = this.specializedTypeCache.get(origType); - let found; - if (cache) { - cache.forEach((v) => { - if (v.has(typeSignature)) { - found = v.get(typeSignature); - } - }); - } - if (found) break; - - // default function call - if ( - callExprNode.expression.kind === - ts.SyntaxKind.Identifier - ) { - // create a new specialized function type - const specializedType = - TypeResolver.createSpecializedType( - origType, - typeArguments, - origType, - ) as TSFunction; - specializedType.setSpecializedArguments( - typeArguments, - ); - - // generate a name for the new specialized FunctionScope - const newScopeName = - originalFunctionScope.getName() + typeSignature; - - createFunctionScopeByFunctionType( - originalFunctionScope as FunctionScope, - originalFunctionScope.parent!, - specializedType, - newScopeName, - ); - originalFunctionScope.parent?.addType( - newScopeName, - specializedType, - ); - - if (this.specializedTypeCache.has(origType)) { - const value = new Map(); - value.set(typeSignature, specializedType); - this.specializedTypeCache - .get(origType)! - .push(value); - } else { - const value = new Map(); - value.set(typeSignature, specializedType); - this.specializedTypeCache.set(origType, [ - value, - ]); - } - } else if ( - callExprNode.expression.kind === - ts.SyntaxKind.PropertyAccessExpression - ) { - // method function call - /** - * e.g. - * class A { - * x: number; - * constructor(x: number) { - * this.x = x; - * } - * - * func(param: T) { - * return param; - * } - * } - * const a: A = new A(1); - * const ret = a.func(2); - */ - const classType = origType.belongedClass!; - // generate a name for the new specialized method FunctionScope - const origScopeName = - originalFunctionScope.getName(); - const newScopeName = origScopeName + typeSignature; - // whether the specialized generic method already exists - const existMethod = - classType.getMethod(newScopeName); - if (existMethod.method) return; - - TypeResolver.specializeClassMethod( - classType, - origScopeName, - typeArguments, - ); - } - } - } - break; - } case ts.SyntaxKind.AsExpression: { const asExprNode = node; const typeNode = asExprNode.type; @@ -1289,7 +1113,6 @@ export class TypeResolver { private addTypeToTypeMap(type: Type, node: ts.Node) { const tsTypeString = this.getTsTypeName(node); - if ( this.currentScope!.kind === ScopeKind.FunctionScope && type.kind === TypeKind.FUNCTION && @@ -1646,41 +1469,12 @@ export class TypeResolver { return this.tsTypeToType(t); }); - // generate a string signature of typeArguments to facilitate information storage - const typeNames = new Array(); - typeArguments.forEach((v) => { - typeNames.push(`${v.kind}`); - }); - const typeSignature = '<' + typeNames.join(',') + '>'; - - // Determine whether a specialized type already exists - // If it exists, return it directly - const cache = this.specializedTypeCache.get(tsType); - if (cache) { - let found: Type | undefined; - cache.forEach((v) => { - if (v.has(typeSignature)) { - found = v.get(typeSignature); - } - }); - if (found) return found; - } - - res = TypeResolver.createSpecializedType( + res = processGenericType( tsType, typeArguments, - tsType as TSClass, + (tsType as TSClass).typeArguments!, + this.parserCtx, ); - (res as TSClass).setSpecializedArguments(typeArguments); - if (this.specializedTypeCache.has(tsType)) { - const value = new Map(); - value.set(typeSignature, res); - this.specializedTypeCache.get(tsType)!.push(value); - } else { - const value = new Map(); - value.set(typeSignature, res); - this.specializedTypeCache.set(tsType, [value]); - } } else { res = tsType; } @@ -1962,24 +1756,37 @@ export class TypeResolver { } const tsType = this.typechecker!.getTypeAtLocation(valueDecl); let customType = this.tsTypeToType(tsType); - // e.g. - // type ItemGenerator = (item: T, index: U) => void - // function test_func(func: ItemGenerator, a: T, b: U) {...} - if ( - customType instanceof TSTypeWithArguments && - isTypeGeneric(customType) - ) { - const param = valueDecl as ts.ParameterDeclaration; - const type = this.typechecker!.getTypeAtLocation(param.type!); - if (type.aliasTypeArguments) { - const typeArguments = type.aliasTypeArguments!.map((t) => { - return this.tsTypeToType(t); - }); - customType = TypeResolver.createSpecializedType( - customType, - typeArguments, - customType, - ); + // if this parameter type is generic, may need to deal with the generic chain + if (isTypeGeneric(customType)) { + //function and class + if (customType instanceof TSTypeWithArguments) { + let typeArguments: Type[] = []; + // e.g. + // type ItemGenerator = (item: T, index: U) => void + // function test_func(func: ItemGenerator, a: T, b: U) {...} + if (tsType.aliasTypeArguments) { + typeArguments = tsType.aliasTypeArguments!.map((t) => { + return this.tsTypeToType(t); + }); + } else if (this.isTypeReference(tsType)) { + // e.g. + // class Foo {...}; + // function bar(a: Foo, data: Y[]) {...} + typeArguments = this.typechecker!.getTypeArguments( + tsType as ts.TypeReference, + ).map((t) => { + return this.tsTypeToType(t); + }); + } + if (customType.typeArguments) + customType = processGenericType( + customType, + typeArguments, + customType.typeArguments, + this.parserCtx, + ); + } else { + //TODO } } @@ -2073,7 +1880,7 @@ export class TypeResolver { const heritages = node.heritageClauses; const baseClassType: TSClass | null = null; let baseInfcType: TSInterface | null = null; - const effectTypeArguments = new Array(); + const typeArguments = new Array(); /** if extends more than two classes, an error will be thrown, * if extends a class, implements some interface, the subclass is subtype of supclass, * but do not guarantee that it will be a subtype of the interface either. @@ -2092,7 +1899,7 @@ export class TypeResolver { const baseType = this.symbolTypeMap.get(baseDecl); if (type.typeArguments) { type.typeArguments.forEach((t) => { - effectTypeArguments.push( + typeArguments.push( this.generateNodeType(t) as TSTypeParameter, ); }); @@ -2131,29 +1938,27 @@ export class TypeResolver { } } - if (baseInfcType && isTypeGeneric(baseInfcType)) { - const _infc = infc; - const _effectTypeArguments = effectTypeArguments; - + if ( + baseInfcType && + isTypeGeneric(baseInfcType) && + typeArguments.length > 0 + ) { // For the same interface base on different inheritance chains, we will regenerate a new base infc type. // The purpose is to prevent these base types from affecting each other. // e.g. // interface IGeneric {...}; // interface IGenericBase1 extends IGeneric {...}; // interface IGenericBase2 extends IGeneric {...}; - const newName = infc.className + '_' + baseInfcType.className; - baseInfcType = TypeResolver.createSpecializedType( - baseInfcType, - _effectTypeArguments, + baseInfcType = processGenericType( baseInfcType, - newName, + typeArguments, + baseInfcType.typeArguments!, + this.parserCtx, ) as TSInterface; infc.setBase(baseInfcType); - baseInfcType.setSpecializedArguments(_effectTypeArguments); baseInfcType.overrideOrOwnMethods.forEach((t) => { infc.overrideOrOwnMethods.add(t); }); - this.currentScope!.addType(newName, baseInfcType); } if (baseInfcType) { @@ -2251,7 +2056,6 @@ export class TypeResolver { this.nodeTypeCache.set(node, classType); classType.setClassName(node.name!.getText()); - const scope = this.parserCtx.nodeScopeMap.get(node)!; this.parseTypeParameters(classType, node, scope); @@ -2260,7 +2064,7 @@ export class TypeResolver { const heritages = node.heritageClauses; let baseClassType: TSClass | null = null; let baseInfcType: TSInterface | null = null; - const effectTypeArguments = new Array(); + const typeArguments = new Array(); /** if extends more than two classes, an error will be thrown, * if extends a class, implements some interface, the subclass is subtype of supclass, * but do not guarantee that it will be a subtype of the interface either. @@ -2278,7 +2082,7 @@ export class TypeResolver { const baseType = this.symbolTypeMap.get(baseDecl); if (type.typeArguments) { type.typeArguments.forEach((t) => { - effectTypeArguments.push( + typeArguments.push( this.generateNodeType(t) as TSTypeParameter, ); }); @@ -2320,16 +2124,17 @@ export class TypeResolver { } } - if (baseInfcType && isTypeGeneric(baseInfcType)) { - const _effectTypeArguments = effectTypeArguments; - const newName = classType.className + '_' + baseInfcType.className; - baseInfcType = TypeResolver.createSpecializedType( - baseInfcType, - _effectTypeArguments, + if ( + baseInfcType && + isTypeGeneric(baseInfcType) && + typeArguments.length > 0 + ) { + baseInfcType = processGenericType( baseInfcType, - newName, + typeArguments, + baseInfcType.typeArguments!, + this.parserCtx, ) as TSInterface; - baseInfcType.setSpecializedArguments(_effectTypeArguments); classType.setImplInfc(baseInfcType); let _baseInfcType: TSClass | null = baseInfcType; while (_baseInfcType) { @@ -2349,27 +2154,36 @@ export class TypeResolver { // On the inheritance chain, the type parameter of Generic is Y, // and in its class definition, the type parameter is X. // So it needs to be corrected based on the actual type parameters on the inheritance chain. - if (baseClassType && isTypeGeneric(baseClassType)) { - const _effectTypeArguments = effectTypeArguments; - + if ( + baseClassType && + isTypeGeneric(baseClassType) && + typeArguments.length > 0 + ) { // For the same class base on different inheritance chains, we will regenerate a new base class type. // The purpose is to prevent these base types from affecting each other. // e.g. // class Generic {...}; // class GenericBase1 extends Generic {...}; // class GenericBase2 extends Generic {...}; - if (_effectTypeArguments.length > 0) { - const newName = - classType.className + '_' + baseClassType.className; - baseClassType = TypeResolver.createSpecializedType( - baseClassType, - _effectTypeArguments, + baseClassType = genericClassTransformation( + baseClassType, + typeArguments, + baseClassType.typeArguments!, + this.parserCtx, + classType.className, + ) as TSClass; + classType.setBase(baseClassType); + baseClassType.setDrivedClass(classType); + // create base generic class scope + const geneicOwner = baseClassType.genericOwner + ? baseClassType.genericOwner + : baseClassType; + if (geneicOwner.belongedScope) { + createScopeBySpecializedType( baseClassType, - newName, - ) as TSClass; - baseClassType.setSpecializedArguments(_effectTypeArguments); - classType.setBase(baseClassType); - baseClassType.setDrivedClass(classType); + geneicOwner.belongedScope.parent!, + this.parserCtx, + ); } } @@ -2421,17 +2235,15 @@ export class TypeResolver { const paramTypes = baseCtorType.getParamTypes(); for (let i = 0; i < paramTypes.length; i++) { const paramType = paramTypes[i]; - const newType = TypeResolver.createSpecializedType( + const newType = processGenericType( paramType, - effectTypeArguments, - classType, + typeArguments, + classType.typeArguments!, + this.parserCtx, ); if (!newType) throw new TypeError('unimpl TSTypeParameter exchange'); - if (newType instanceof TSTypeWithArguments) - newType.setSpecializedArguments(effectTypeArguments); - ctorType.addParamType(paramTypes[i]); ctorScope.addParameter( new Parameter(`@anonymous${i}`, paramTypes[i]), @@ -2531,6 +2343,7 @@ export class TypeResolver { if (ts.isConstructorDeclaration(member)) { const ctorType = this.parseConstructor(member); ctorScope.setFuncType(ctorType); + ctorType.setBelongedScope(ctorScope); classType.ctorType = ctorType; ctorType.belongedClass = classType; } @@ -2925,378 +2738,6 @@ export class TypeResolver { } } - public static createSpecializedType( - type: Type, - specializedArgs: Type[], - containType: TSTypeWithArguments, - newName?: string, - ): Type { - // the type that need to be specialized must be generic - if (!isTypeGeneric(type)) return type; - - // SpecializedArgs MAY contain generic type. - // This situation currently occurs in the generic inheritance chain. - // e.g. - // class Generic {...}; - // class GenericBase extends Generic {...}; - // - // At this time, we need to change the type parameter of the generic Generic on the inheritance chain from X to Y. - let genericInheritance = false; - specializedArgs.forEach((t) => { - if (isTypeGeneric(t)) { - genericInheritance = true; - } - }); - - switch (type.kind) { - case TypeKind.VOID: - case TypeKind.BOOLEAN: - case TypeKind.NUMBER: - case TypeKind.ANY: - case TypeKind.UNDEFINED: - case TypeKind.STRING: - case TypeKind.UNKNOWN: - case TypeKind.NULL: - case TypeKind.WASM_I32: - case TypeKind.WASM_I64: - case TypeKind.WASM_F32: - case TypeKind.WASM_F64: - case TypeKind.WASM_ANYREF: { - return type; - } - case TypeKind.ARRAY: { - return new TSArray( - this.createSpecializedType( - (type as TSArray).elementType, - specializedArgs, - containType as TSTypeWithArguments, - ), - ); - } - case TypeKind.UNION: { - const unionType = type as TSUnion; - const newUnion = new TSUnion(); - unionType.types.forEach((t) => { - if (t.kind == TypeKind.UNDEFINED) { - newUnion.addType(t); - } else { - const newType = this.createSpecializedType( - t, - specializedArgs, - containType as TSTypeWithArguments, - ); - newUnion.addType(newType); - } - }); - return newUnion; - } - case TypeKind.FUNCTION: { - const funcType = type as TSFunction; - const newFuncType = funcType.clone(); - newFuncType.setTypeParameters(undefined); - // specialized function does not have '_typeArguments' property - if (genericInheritance && funcType.typeArguments) { - funcType.typeArguments.forEach((t) => { - const newTypeArg = this.createSpecializedType( - t, - specializedArgs, - containType as TSTypeWithArguments, - ) as TSTypeParameter; - newFuncType.addTypeParameter(newTypeArg); - }); - } - // specialized function type need to reset belongedClass and belongedScope - newFuncType.belongedClass = undefined; - newFuncType.setBelongedScope(undefined); - - // regenerate the parameter list - newFuncType.setParamTypes([]); - funcType.getParamTypes().forEach((paramType) => { - const newParamType = this.createSpecializedType( - paramType, - specializedArgs, - containType as TSTypeWithArguments, - ); - if (newParamType instanceof TSTypeWithArguments) - newParamType.setSpecializedArguments(specializedArgs); - newFuncType.addParamType(newParamType); - }); - - // prevent infinite recursive call - if ( - funcType.isMethod && - funcType.returnType instanceof TSClass && - funcType.returnType.typeId == funcType.belongedClass?.typeId - ) - return newFuncType; - - newFuncType.returnType = this.createSpecializedType( - funcType.returnType, - specializedArgs, - containType as TSTypeWithArguments, - ); - if (newFuncType.returnType instanceof TSTypeWithArguments) - newFuncType.returnType.setSpecializedArguments( - specializedArgs, - ); - return newFuncType; - } - case TypeKind.CLASS: - case TypeKind.INTERFACE: { - const classType = type as TSClass; - if (classType.typeArguments) { - let newType: TSClass; - if (type.kind === TypeKind.CLASS) { - newType = new TSClass(); - } else { - newType = new TSInterface(); - } - - // generate the class name of the new class - const typeNames = new Array(); - specializedArgs.forEach((v) => { - typeNames.push(`${v.kind}`); - }); - if (genericInheritance) { - // e.g. - // In this generic inheritance chain case: class GenericBase extends Generic {...} - // The name of the new generic class will be changed from a to Generic to Generic_GenericBase - const specializedName = newName - ? newName - : classType.className; - newType.setClassName(specializedName); - specializedArgs.forEach((v) => { - newType.addTypeParameter(v as TSTypeParameter); - }); - } else { - // e.g. - // Generic -> Generic - const specializedName = - classType.className + - '<' + - typeNames.join(',') + - '>'; - newType.setClassName(specializedName); - newType.setGenericOwner(classType); - } - - // set the property value of the basic property - if (classType.getBase()) { - const base = classType.getBase(); - const base_typeArguments = base!.typeArguments; - if (base_typeArguments) { - const baseSpecializedArgs = new Array(); - if (specializedArgs) { - for ( - let i = 0; - i < base_typeArguments.length; - i++ - ) { - const genericType = base_typeArguments[ - i - ] as TSTypeParameter; - const type = - TypeResolver.createSpecializedType( - genericType, - specializedArgs, - classType, - ); - if (type instanceof TSTypeWithArguments) - type.setSpecializedArguments( - specializedArgs, - ); - baseSpecializedArgs.push(type); - } - } - const newName = - newType.className + - '_' + - base?.className.split('_').reverse()[0]; - const newBaseType = - TypeResolver.createSpecializedType( - base!, - baseSpecializedArgs, - base!, - newName, - ) as TSClass; - newBaseType.setSpecializedArguments( - baseSpecializedArgs, - ); - newType.setBase(newBaseType); - newBaseType.setDrivedClass(newType); - } else { - newType.setBase(base!); - base!.setDrivedClass(newType); - } - } - - newType.hasDeclareCtor = classType.hasDeclareCtor; - const implInfc = classType.getImplInfc(); - if (implInfc && isTypeGeneric(implInfc)) { - const infc_typeArguments = implInfc.typeArguments; - if (infc_typeArguments) { - const infcSpecializedArgs = new Array(); - if (specializedArgs) { - for ( - let i = 0; - i < infc_typeArguments.length; - i++ - ) { - const genericType = infc_typeArguments[ - i - ] as TSTypeParameter; - const type = - TypeResolver.createSpecializedType( - genericType, - specializedArgs, - classType, - ); - if (type instanceof TSTypeWithArguments) - type.setSpecializedArguments( - specializedArgs, - ); - infcSpecializedArgs.push(type); - } - } - const infc = TypeResolver.createSpecializedType( - implInfc, - infcSpecializedArgs, - implInfc, - ) as TSInterface; - infc.setSpecializedArguments(infcSpecializedArgs); - newType.setImplInfc(infc); - } - } else { - newType.setImplInfc(implInfc); - } - newType.isDeclare = classType.isDeclare; - newType.isLiteral = classType.isLiteral; - newType.overrideOrOwnMethods = - classType.overrideOrOwnMethods; - newType.traverseStatus = classType.traverseStatus; - - // specialized member variables - classType.fields.forEach((field) => { - const newFieldType = this.createSpecializedType( - field.type, - specializedArgs, - containType as TSTypeWithArguments, - ); - if (newFieldType instanceof TSTypeWithArguments) - newFieldType.setSpecializedArguments( - specializedArgs, - ); - newType.addMemberField({ - name: field.name, - type: newFieldType, - }); - }); - // specialized member functions - classType.memberFuncs.forEach((func) => { - const newFuncType = this.createSpecializedType( - func.type, - specializedArgs, - containType as TSTypeWithArguments, - ) as TSFunction; - newFuncType.setSpecializedArguments(specializedArgs); - newType.addMethod({ - name: func.name, - type: newFuncType, - }); - }); - classType.staticFields.forEach((field) => { - const newStaticFieldType = this.createSpecializedType( - field.type, - specializedArgs, - containType as TSTypeWithArguments, - ); - if (newStaticFieldType instanceof TSTypeWithArguments) - newStaticFieldType.setSpecializedArguments( - specializedArgs, - ); - newType.addStaticMemberField({ - name: field.name, - type: newStaticFieldType, - }); - }); - // specialized constructor - if (classType.ctorType) { - newType.ctorType = this.createSpecializedType( - classType.ctorType, - specializedArgs, - containType as TSTypeWithArguments, - ) as TSFunction; - newType.ctorType.setSpecializedArguments( - specializedArgs, - ); - newType.ctorType.returnType = newType; - newType.ctorType.belongedClass = newType; - } - - // create the classScope to which the new class type belongs, but it doesn't always exist - const originalClassScope = classType.belongedScope; - if (!originalClassScope) return newType; - originalClassScope.parent?.addType( - newType.className, - newType, - ); - const newClassScope = createClassScopeByClassType( - originalClassScope as ClassScope, - originalClassScope.parent!, - newType, - ); - newType.setBelongedScope(newClassScope); - return newType; - } else { - classType.memberFuncs.forEach((func) => { - if (isTypeGeneric(func.type)) { - const origType = func.type; - const originalFunctionScope = - origType.belongedScope!; - // generate the class name of the new class - const typeNames = new Array(); - specializedArgs.forEach((v) => { - typeNames.push(`${v.kind}`); - }); - const typeSignature = - '<' + typeNames.join(',') + '>'; - const origScopeName = - originalFunctionScope.getName(); - const newScopeName = origScopeName + typeSignature; - // whether the specialized generic method already exists - const existMethod = - classType.getMethod(newScopeName); - if (existMethod.method) return classType; - - TypeResolver.specializeClassMethod( - classType, - origScopeName, - specializedArgs, - ); - } - }); - return classType; - } - } - case TypeKind.TYPE_PARAMETER: { - const genericType = type as TSTypeParameter; - const typeArgs = containType.typeArguments; - if (specializedArgs && typeArgs) { - for (let i = 0; i < typeArgs.length; i++) { - if (typeArgs[i].name === genericType.name) { - return specializedArgs[i]; - } - } - } - - return builtinTypes.get('any')!; - } - default: { - throw new UnimplementError('Not implemented type: ${type}'); - } - } - } - public arrayTypeCheck(node: ts.Node): boolean { const parentNode = node.parent; if ( @@ -3311,60 +2752,6 @@ export class TypeResolver { } return false; } - - /** - * @describe specialize a generic member function on the inheritance chain - * @param classType the base class where the generic member function is located - * @param funcName the name of function - * @param specializedArgs list of specialization types - * @returns void - */ - public static specializeClassMethod( - classType: TSClass, - funcName: string, - specializedArgs: Type[], - ) { - const origType = classType.getMethod(funcName).method?.type; - if (!origType) return; - - const typeNames = new Array(); - specializedArgs.forEach((v) => { - typeNames.push(`${v.kind}`); - }); - const newFuncName = funcName + '<' + typeNames.join(',') + '>'; - - const originalFunctionScope = origType.belongedScope; - if (!originalFunctionScope) return; - - const specializedType = TypeResolver.createSpecializedType( - origType, - specializedArgs, - origType, - ) as TSFunction; - specializedType.setSpecializedArguments(specializedArgs); - - createFunctionScopeByFunctionType( - originalFunctionScope as FunctionScope, - originalFunctionScope.parent!, - specializedType, - newFuncName, - ); - - const optional = classType.getMethod(funcName).method!.optional; - classType.addMethod({ - name: newFuncName, - type: specializedType, - optional: optional, - }); - classType.overrideOrOwnMethods.add(newFuncName); - - // specialize a generic member function on the inheritance chain - const drivedClasses = classType.getDrivedClasses(); - if (!drivedClasses) return; - drivedClasses.forEach((c) => { - this.specializeClassMethod(c, funcName, specializedArgs); - }); - } } export class CustomTypeResolver { diff --git a/src/utils.ts b/src/utils.ts index f36bba6f..b01dd4f2 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -19,6 +19,7 @@ import ExpressionProcessor, { IdentifierExpression, } from './expression.js'; import { BuiltinNames } from '../lib/builtin/builtin_name.js'; +import { ParserContext } from './frontend.js'; import { FunctionKind, getMethodPrefix, @@ -32,10 +33,11 @@ import { TSUnion, builtinTypes, builtinWasmTypes, + TypeResolver, + TSTypeWithArguments, } from './type.js'; import { UnimplementError } from './error.js'; import { Statement } from './statement.js'; -import { Variable, Parameter } from './variable.js'; import { Logger } from './log.js'; export interface importGlobalInfo { @@ -476,111 +478,1346 @@ function decimalizationInternal(value: string, systemNumeration: number) { return decimal.toString(); } +export function genericFunctionSpecialization( + genericFuncType: TSFunction, + typeArguments: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): TSFunction { + if ( + !genericFuncType.typeArguments || + typeArguments.length == 0 || + typeParameters.length == 0 + ) + return genericFuncType; + + const typeArgumentsSignature: Array = []; + const _typeParameters = genericFuncType.typeArguments!; + _typeParameters.forEach((type) => { + const index = typeParameters.findIndex((t) => { + return t.name === type.name; + }); + if (index == -1) { + throw new UnimplementError( + `${type.name} not found in typeParameters`, + ); + } + typeArgumentsSignature.push(`${typeArguments[index].kind}`); + }); + + const genericOwner = genericFuncType.genericOwner + ? genericFuncType.genericOwner + : genericFuncType; + const typeSignature = + typeArgumentsSignature.length > 0 + ? '<' + typeArgumentsSignature.join(',') + '>' + : ''; + const cache = TypeResolver.specializedTypeCache.get(genericOwner); + let found: Type | undefined; + if (cache) { + cache.forEach((v) => { + if (v.has(typeSignature)) { + found = v.get(typeSignature); + } + }); + } + if (found) return found as TSFunction; + + const funcType = genericFuncType as TSFunction; + const newFuncType = funcType.clone(); + // specialized function does not have typeArguments + newFuncType.setTypeParameters(undefined); + // specialized function type need to reset belongedClass and belongedScope + newFuncType.belongedClass = undefined; + newFuncType.setBelongedScope(undefined); + + // regenerate the parameter list + newFuncType.setParamTypes([]); + funcType.getParamTypes().forEach((paramType) => { + const newParamType = genericTypeSpecialization( + paramType, + typeArguments, + typeParameters, + context, + ); + newFuncType.addParamType(newParamType); + }); + newFuncType.setGenericOwner(genericOwner); + + // update specializedTypeCache + newFuncType.setSpecializedArguments(typeArguments); + if (TypeResolver.specializedTypeCache.has(genericOwner)) { + const value = new Map(); + value.set(typeSignature, newFuncType); + TypeResolver.specializedTypeCache.get(genericOwner)!.push(value); + } else { + const value = new Map(); + value.set(typeSignature, newFuncType); + TypeResolver.specializedTypeCache.set(genericOwner, [value]); + } + + newFuncType.returnType = genericTypeSpecialization( + funcType.returnType, + typeArguments, + typeParameters, + context, + ); + return newFuncType; +} + +export function genericClassMethodSpecialization( + genericMethodType: TSFunction, + typeArguments: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): TSFunction { + if (typeArguments.length == 0 || typeParameters.length == 0) + return genericMethodType; + + const typeArgumentsSignature: Array = []; + const _typeParameters = genericMethodType.typeArguments + ? genericMethodType.typeArguments + : genericMethodType.belongedClass!.typeArguments!; + _typeParameters.forEach((type) => { + const index = typeParameters.findIndex((t) => { + return t.name === type.name; + }); + if (index == -1) { + throw new UnimplementError( + `${type.name} not found in typeParameters`, + ); + } + typeArgumentsSignature.push(`${typeArguments[index].kind}`); + }); + + const genericOwner = genericMethodType.genericOwner + ? genericMethodType.genericOwner + : genericMethodType; + const newMethodType = genericMethodType.clone(); + // specialized function does not have typeArguments + newMethodType.setTypeParameters(undefined); + // specialized function type need to reset belongedClass and belongedScope + newMethodType.belongedClass = undefined; + newMethodType.setBelongedScope(undefined); + + // regenerate the parameter list + newMethodType.setParamTypes([]); + genericMethodType.getParamTypes().forEach((paramType) => { + const newParamType = genericTypeSpecialization( + paramType, + typeArguments, + typeParameters, + context, + ); + newMethodType.addParamType(newParamType); + }); + newMethodType.setGenericOwner(genericOwner); + + // update specializedTypeCache + if (genericMethodType.typeArguments) { + newMethodType.setSpecializedArguments(typeArguments); + } + + // prevent infinite recursive call + if ( + genericMethodType.funcKind == FunctionKind.CONSTRUCTOR || + (genericMethodType.returnType instanceof TSClass && + genericMethodType.returnType.toString === + genericMethodType.belongedClass!.toString) + ) + return newMethodType; + + newMethodType.returnType = genericTypeSpecialization( + genericMethodType.returnType, + typeArguments, + typeParameters, + context, + ); + return newMethodType; +} + /** - * @describe create a new classScope based on classType information - * @param originalClassScope the original ClassScope to be specialized - * @param parent the parent of the original ClassScope - * @param classType the new class type corresponding to specialized ClassScope: TSClass => ClassScope - * @param newName the name of new ClassScope - * @returns a new specialized ClassScope + * class A { + * a: number; + * echo(param: T) {...}; + * } + * const a = new A(); + * this class type does not contain 'typeParameters'. */ -export function createClassScopeByClassType( - originalClassScope: ClassScope, - parent: Scope, - classType: TSClass, - newName?: string, +export function genericMethodSpecialization( + genericMethodType: TSFunction, + typeArguments: Type[], + context: ParserContext, ) { - const newClassScope = new ClassScope(parent); - originalClassScope.specialize(newClassScope); - newClassScope.setGenericOwner(originalClassScope); - const name = newName ? newName : classType.className; - newClassScope.setName(name); - newClassScope.setClassType(classType); - - originalClassScope.children.forEach((s) => { - if (s.kind == ScopeKind.FunctionScope) { - const functionScope = s as FunctionScope; - const funcName = functionScope.getName(); - const funcKind = functionScope.funcType.funcKind; - // constructor is not in the memberFuncs - if (funcKind == FunctionKind.CONSTRUCTOR) { - createFunctionScopeByFunctionType( - functionScope, - newClassScope, - classType.ctorType, + const classType = genericMethodType.belongedClass; + const originalFunctionScope = genericMethodType.belongedScope; + const typeParameters = genericMethodType.typeArguments; + + // insufficient information used for specialization + if (!classType || !typeParameters || !originalFunctionScope) return; + + const typeNames = new Array(); + typeArguments.forEach((v) => { + typeNames.push(`${v.kind}`); + }); + const typeSignature = '<' + typeNames.join(',') + '>'; + const newFuncName = originalFunctionScope.getName() + typeSignature; + const specializedFunctionType = genericClassMethodSpecialization( + genericMethodType, + typeArguments, + typeParameters, + context, + ) as TSFunction; + specializedFunctionType.belongedClass = classType; + + // create new function scope begin + const newFuncScope = new FunctionScope(originalFunctionScope.parent!); + originalFunctionScope.specialize(newFuncScope); + newFuncScope.setClassName(classType.className); + newFuncScope.setFuncName(newFuncName); + newFuncScope.setFuncType(specializedFunctionType); + specializedFunctionType.setBelongedScope(newFuncScope); + if (originalFunctionScope.mangledName !== '') { + const genericMangledName = originalFunctionScope.mangledName; + const reverse = genericMangledName.split('|').reverse(); + // class name + reverse[0] = newFuncName; + newFuncScope.mangledName = reverse.reverse().join('|'); + } + newFuncScope.setGenericOwner(originalFunctionScope); + originalFunctionScope.addSpecializedScope(typeSignature, newFuncScope); + const optional = classType.getMethod(originalFunctionScope.getName()) + .method!.optional; + classType.addMethod({ + name: newFuncName, + type: specializedFunctionType, + optional: optional, + }); + classType.overrideOrOwnMethods.add(newFuncName); + + // specialize a generic member function on the inheritance chain + const drivedClasses = classType.getDrivedClasses(); + if (!drivedClasses) return; + drivedClasses.forEach((c) => { + if (c.memberFuncs.length > 0) { + c.memberFuncs.forEach((m) => { + genericMethodSpecialization(m.type, typeArguments, context); + }); + } + }); +} + +export function genericClassSpecialization( + genericClassType: TSClass, + typeArguments: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): TSClass { + if (typeArguments.length == 0 || typeParameters.length == 0) + return genericClassType; + + const typeArgumentsSignature: Array = []; + const _typeParameters = genericClassType.typeArguments; + if (_typeParameters) { + _typeParameters.forEach((type) => { + const index = typeParameters.findIndex((t) => { + return t.name === type.name; + }); + if (index == -1) { + throw new UnimplementError( + `${type.name} not found in typeParameters`, ); + } + typeArgumentsSignature.push(`${typeArguments[index].kind}`); + }); + } + + const genericOwner = genericClassType.genericOwner + ? genericClassType.genericOwner + : genericClassType; + const typeSignature = + typeArgumentsSignature.length > 0 + ? '<' + typeArgumentsSignature.join(',') + '>' + : ''; + const cache = TypeResolver.specializedTypeCache.get(genericOwner); + let found: Type | undefined; + if (cache) { + cache.forEach((v) => { + if (v.has(genericClassType.className + typeSignature)) { + found = v.get(genericClassType.className + typeSignature); + } + }); + } + if (found) return found as TSClass; + + /** + * class Base { + * x: T; + * action(param: T) {....} + * } + */ + if (genericClassType.typeArguments) { + let newClassType: TSClass; + if (genericClassType.kind === TypeKind.CLASS) { + newClassType = new TSClass(); + } else { + newClassType = new TSInterface(); + } + const specializedName = genericClassType.className + typeSignature; + newClassType.setClassName(specializedName); + if (genericClassType.mangledName !== '') { + const genericMangledName = genericClassType.mangledName; + const reverse = genericMangledName.split('|').reverse(); + reverse[0] = specializedName; + newClassType.mangledName = reverse.reverse().join('|'); + } + newClassType.setGenericOwner(genericOwner as TSTypeWithArguments); + newClassType.setSpecializedArguments(typeArguments); + newClassType.hasDeclareCtor = genericClassType.hasDeclareCtor; + newClassType.isDeclare = genericClassType.isDeclare; + newClassType.isLiteral = genericClassType.isLiteral; + newClassType.overrideOrOwnMethods = + genericClassType.overrideOrOwnMethods; + newClassType.traverseStatus = genericClassType.traverseStatus; + + // update specializedTypeCache + if (TypeResolver.specializedTypeCache.has(genericOwner)) { + const value = new Map(); + value.set(specializedName, newClassType); + TypeResolver.specializedTypeCache.get(genericOwner)!.push(value); + } else { + const value = new Map(); + value.set(specializedName, newClassType); + TypeResolver.specializedTypeCache.set(genericOwner, [value]); + } + + // base class type + if (genericClassType.getBase()) { + let baseType = genericClassType.getBase(); + if (baseType) { + if (isTypeGeneric(baseType)) { + baseType = genericTypeSpecialization( + baseType, + typeArguments, + typeParameters, + context, + ) as TSClass; + } + newClassType.setBase(baseType); + } + } + + const implInfc = genericClassType.getImplInfc(); + if (implInfc && isTypeGeneric(implInfc)) { + const newInfcType = genericTypeSpecialization( + implInfc, + typeArguments, + typeParameters, + context, + ) as TSInterface; + newClassType.setImplInfc(newInfcType); + } else { + newClassType.setImplInfc(implInfc); + } + + // specialized member variables + genericClassType.fields.forEach((field) => { + const newFieldType = genericTypeSpecialization( + field.type, + typeArguments, + typeParameters, + context, + ); + newClassType.addMemberField({ + name: field.name, + type: newFieldType, + }); + }); + // specialized member functions + genericClassType.memberFuncs.forEach((func) => { + const funcName = func.name; + const funcKind = func.type.funcKind; + let realFuncName = funcName; + if (funcKind == FunctionKind.GETTER) { + realFuncName = 'get_' + funcName; + } else if (funcKind == FunctionKind.SETTER) { + realFuncName = 'set_' + funcName; + } + const isOwnMethod = + newClassType.overrideOrOwnMethods.has(realFuncName); + if (isOwnMethod) { + const newFuncType = genericClassMethodSpecialization( + func.type, + typeArguments, + typeParameters, + context, + ) as TSFunction; + newFuncType.belongedClass = newClassType; + newClassType.addMethod({ + name: funcName, + type: newFuncType, + }); } else { - let prefix = ''; - // the function names of the getter and setter contain 'get_' and 'set_' prefix strings. - if ( - funcKind == FunctionKind.GETTER || - funcKind == FunctionKind.SETTER - ) { - prefix = getMethodPrefix(funcKind); + let base = newClassType.getBase(); + let found = func; + while (base) { + const isOwnMethod = + base.overrideOrOwnMethods.has(realFuncName); + if (isOwnMethod) { + base.memberFuncs.forEach((f) => { + if ( + f.name == funcName && + f.type.funcKind == funcKind + ) { + found = f; + return; + } + }); + break; + } + base = base.getBase(); } - const res = classType.memberFuncs.findIndex((f) => { - return ( - funcName === prefix + f.name && - functionScope.funcType.funcKind === f.type.funcKind + newClassType.addMethod(found); + } + }); + genericClassType.staticFields.forEach((field) => { + const newStaticFieldType = genericTypeSpecialization( + field.type, + typeArguments, + typeParameters, + context, + ); + if (newStaticFieldType instanceof TSTypeWithArguments) + newClassType.addStaticMemberField({ + name: field.name, + type: newStaticFieldType, + }); + }); + // specialized constructor + if (genericClassType.ctorType) { + const newCtor = genericClassMethodSpecialization( + genericClassType.ctorType, + typeArguments, + typeParameters, + context, + ) as TSFunction; + newCtor.belongedClass = newClassType; + newClassType.ctorType = newCtor; + newClassType.ctorType.returnType = newClassType; + } + + if (genericClassType.belongedScope) + genericClassType.belongedScope.parent?.addType( + newClassType.className, + newClassType, + ); + return newClassType; + } else { + /** + * class Base { + * x: number; + * action(param: T) {....} + * } + */ + genericClassType.memberFuncs.forEach((func) => { + if (isTypeGeneric(func.type)) { + const genericFuncType = func.type; + const genericFunctionScope = genericFuncType.belongedScope!; + // generate the name of the specialized function name + const typeNames = new Array(); + typeArguments.forEach((v) => { + if (v.kind !== TypeKind.TYPE_PARAMETER) + typeNames.push(`${v.kind}`); + }); + const typeSignature = + typeNames.length > 0 ? '<' + typeNames.join(',') + '>' : ''; + const genericFunctionScopeName = genericFunctionScope.getName(); + const specializedFunctionScopeName = + genericFunctionScopeName + typeSignature; + // whether the specialized generic method already exists + const existMethod = genericClassType.getMethod( + specializedFunctionScopeName, + ); + if (existMethod.method) return genericClassType; + + genericMethodSpecialization( + genericFuncType, + typeArguments, + context, + ); + } + }); + return genericClassType; + } +} + +/** + * @describe specialize a generic type + * @param genericType the generic type that need to be specialized + * @param typeArguments specialized type arguments list + * @param typeParameters generic parameter type list + * @returns a new specialized type,if the same specialization is executed for the second time, + * generictype is returned to prevent the scope from being created again. + */ +export function genericTypeSpecialization( + genericType: Type, + typeArguments: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): Type { + // the type that need to be specialized must be generic + if (!isTypeGeneric(genericType)) return genericType; + + switch (genericType.kind) { + case TypeKind.VOID: + case TypeKind.BOOLEAN: + case TypeKind.NUMBER: + case TypeKind.ANY: + case TypeKind.UNDEFINED: + case TypeKind.STRING: + case TypeKind.UNKNOWN: + case TypeKind.NULL: + case TypeKind.WASM_I32: + case TypeKind.WASM_I64: + case TypeKind.WASM_F32: + case TypeKind.WASM_F64: + case TypeKind.WASM_ANYREF: { + return genericType; + } + case TypeKind.ARRAY: { + return new TSArray( + genericTypeSpecialization( + (genericType as TSArray).elementType, + typeArguments, + typeParameters, + context, + ), + ); + } + case TypeKind.UNION: { + const unionType = genericType as TSUnion; + const newUnion = new TSUnion(); + unionType.types.forEach((t) => { + if (t.kind == TypeKind.UNDEFINED) { + newUnion.addType(t); + } else { + const newType = genericTypeSpecialization( + t, + typeArguments, + typeParameters, + context, ); + newUnion.addType(newType); + } + }); + return newUnion; + } + case TypeKind.FUNCTION: { + const newFuncType = genericFunctionSpecialization( + genericType as TSFunction, + typeArguments, + typeParameters, + context, + ); + return newFuncType; + } + case TypeKind.CLASS: + case TypeKind.INTERFACE: { + const newClassType = genericClassSpecialization( + genericType as TSClass, + typeArguments, + typeParameters, + context, + ); + return newClassType; + } + case TypeKind.TYPE_PARAMETER: { + const gType = genericType as TSTypeParameter; + if (typeArguments && typeParameters) { + for (let i = 0; i < typeParameters.length; i++) { + if (typeParameters[i].name === gType.name) { + return typeArguments[i]; + } + } + } + return builtinTypes.get('any')!; + } + default: { + throw new UnimplementError( + `Not implemented type: ${genericType.kind}`, + ); + } + } +} + +export function genericFuncTransformation( + genericFuncType: TSFunction, + newTypeParameters: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): TSFunction { + if ( + !genericFuncType.typeArguments || + newTypeParameters.length == 0 || + typeParameters.length == 0 + ) + return genericFuncType; + + const genericOwner = genericFuncType.genericOwner + ? genericFuncType.genericOwner + : genericFuncType; + const newFuncType = genericFuncType.clone(); + newFuncType.setBelongedScope(undefined); + newFuncType.setGenericOwner(genericOwner); + newFuncType.setSpecializedArguments(newTypeParameters); + + // regenerate typeParameters + newFuncType.setTypeParameters([]); + genericFuncType.typeArguments.forEach((t) => { + newFuncType.addTypeParameter( + genericTypeTransformation( + t, + newTypeParameters, + typeParameters, + context, + ) as TSTypeParameter, + ); + }); + // regenerate the parameter list + newFuncType.setParamTypes([]); + genericFuncType.getParamTypes().forEach((paramType) => { + const newParamType = genericTypeTransformation( + paramType, + newTypeParameters, + typeParameters, + context, + ); + newFuncType.addParamType(newParamType); + }); + newFuncType.returnType = genericTypeTransformation( + genericFuncType.returnType, + newTypeParameters, + typeParameters, + context, + ); + return newFuncType; +} + +export function genericMethodTransformation( + genericMethodType: TSFunction, + newTypeParameters: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): TSFunction { + if (newTypeParameters.length == 0 || typeParameters.length == 0) + return genericMethodType; + + const genericOwner = genericMethodType.genericOwner + ? genericMethodType.genericOwner + : genericMethodType; + const newMethodType = genericMethodType.clone(); + newMethodType.setBelongedScope(undefined); + newMethodType.setGenericOwner(genericOwner); + + // regenerate the parameter list + newMethodType.setParamTypes([]); + genericMethodType.getParamTypes().forEach((paramType) => { + const newParamType = genericTypeTransformation( + paramType, + newTypeParameters, + typeParameters, + context, + ); + newMethodType.addParamType(newParamType); + }); + + // prevent infinite recursive call + if ( + genericMethodType.funcKind == FunctionKind.CONSTRUCTOR || + (genericMethodType.returnType instanceof TSClass && + genericMethodType.returnType.toString === + genericMethodType.belongedClass!.toString) + ) + return newMethodType; + + newMethodType.returnType = genericTypeTransformation( + genericMethodType.returnType, + newTypeParameters, + typeParameters, + context, + ); + return newMethodType; +} + +export function genericClassTransformation( + genericClassType: TSClass, + newTypeParameters: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, + namePrefix?: string, +): TSClass { + if ( + !genericClassType.typeArguments || + newTypeParameters.length == 0 || + typeParameters.length == 0 + ) + return genericClassType; + + const genericOwner = genericClassType.genericOwner + ? genericClassType.genericOwner + : genericClassType; + if (genericClassType.typeArguments) { + let newClassType: TSClass; + if (genericClassType.kind === TypeKind.CLASS) { + newClassType = new TSClass(); + } else { + newClassType = new TSInterface(); + } + newClassType.hasDeclareCtor = genericClassType.hasDeclareCtor; + newClassType.isDeclare = genericClassType.isDeclare; + newClassType.isLiteral = genericClassType.isLiteral; + newClassType.overrideOrOwnMethods = + genericClassType.overrideOrOwnMethods; + newClassType.traverseStatus = genericClassType.traverseStatus; + const newClassName = namePrefix + ? namePrefix + '_' + genericClassType.className + : genericClassType.className; + newClassType.setClassName(newClassName); + newClassType.setGenericOwner(genericOwner as TSClass); + newClassType.setSpecializedArguments(newTypeParameters); + + // regenerate typeParameters + newClassType.setTypeParameters([]); + genericClassType.typeArguments!.forEach((t) => { + newClassType.addTypeParameter( + genericTypeTransformation( + t, + newTypeParameters, + typeParameters, + context, + ) as TSTypeParameter, + ); + }); + + // base class type + if (genericClassType.getBase()) { + let baseType = genericClassType.getBase(); + if (baseType) { + if (isTypeGeneric(baseType)) { + baseType = genericClassTransformation( + baseType, + newTypeParameters, + typeParameters, + context, + namePrefix ? namePrefix : undefined, + ) as TSClass; + } + newClassType.setBase(baseType); + } + } + + const implInfc = genericClassType.getImplInfc(); + if (implInfc && isTypeGeneric(implInfc)) { + const newInfcType = genericTypeTransformation( + implInfc, + newTypeParameters, + typeParameters, + context, + ) as TSInterface; + newClassType.setImplInfc(newInfcType); + } else { + newClassType.setImplInfc(implInfc); + } + + genericClassType.fields.forEach((field) => { + const newFieldType = genericTypeTransformation( + field.type, + newTypeParameters, + typeParameters, + context, + ); + newClassType.addMemberField({ + name: field.name, + type: newFieldType, + }); + }); + genericClassType.memberFuncs.forEach((func) => { + const funcName = func.name; + const funcKind = func.type.funcKind; + let realFuncName = funcName; + if (funcKind == FunctionKind.GETTER) { + realFuncName = 'get_' + funcName; + } else if (funcKind == FunctionKind.SETTER) { + realFuncName = 'set_' + funcName; + } + const isOwnMethod = + newClassType.overrideOrOwnMethods.has(realFuncName); + if (isOwnMethod) { + const newFuncType = genericMethodTransformation( + func.type, + newTypeParameters, + typeParameters, + context, + ) as TSFunction; + newFuncType.belongedClass = newClassType; + newClassType.addMethod({ + name: funcName, + type: newFuncType, + }); + } else { + let base = newClassType.getBase(); + let found = func; + while (base) { + const isOwnMethod = + base.overrideOrOwnMethods.has(realFuncName); + if (isOwnMethod) { + base.memberFuncs.forEach((f) => { + if ( + f.name == funcName && + f.type.funcKind == funcKind + ) { + found = f; + return; + } + }); + break; + } + base = base.getBase(); + } + newClassType.addMethod(found); + } + }); + genericClassType.staticFields.forEach((field) => { + const newStaticFieldType = genericTypeTransformation( + field.type, + newTypeParameters, + typeParameters, + context, + ); + if (newStaticFieldType instanceof TSTypeWithArguments) + newClassType.addStaticMemberField({ + name: field.name, + type: newStaticFieldType, }); - if (res !== -1) { - const functionType = classType.memberFuncs[res].type; - createFunctionScopeByFunctionType( - functionScope, - newClassScope, - functionType, + }); + if (genericClassType.ctorType) { + const newCtor = genericMethodTransformation( + genericClassType.ctorType, + newTypeParameters, + typeParameters, + context, + ) as TSFunction; + newCtor.belongedClass = newClassType; + newClassType.ctorType = newCtor; + newClassType.ctorType.returnType = newClassType; + } + + if (genericClassType.belongedScope) { + const typeNames = new Array(); + newTypeParameters.forEach((v) => { + typeNames.push(`${(v as TSTypeParameter).name}`); + }); + const typeSignature = '<' + typeNames.join(',') + '>'; + genericClassType.belongedScope.parent?.addType( + newClassType.className + typeSignature, + newClassType, + ); + } + return newClassType; + } + return genericClassType; +} + +/** + * @describe update the type parameters of the generic type, and return a new generic type + * @param genericType the generic type that need to update type parameter list + * @param newTypeParameters target parameter type list + * @param typeParameters generic parameter type list + * @param context the parser context + * @returns a new generic type + */ +export function genericTypeTransformation( + genericType: Type, + newTypeParameters: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): Type { + // the type that need to be update must be generic + if (!isTypeGeneric(genericType)) return genericType; + + switch (genericType.kind) { + case TypeKind.VOID: + case TypeKind.BOOLEAN: + case TypeKind.NUMBER: + case TypeKind.ANY: + case TypeKind.UNDEFINED: + case TypeKind.STRING: + case TypeKind.UNKNOWN: + case TypeKind.NULL: + case TypeKind.WASM_I32: + case TypeKind.WASM_I64: + case TypeKind.WASM_F32: + case TypeKind.WASM_F64: + case TypeKind.WASM_ANYREF: { + return genericType; + } + case TypeKind.ARRAY: { + return new TSArray( + genericTypeTransformation( + (genericType as TSArray).elementType, + newTypeParameters, + typeParameters, + context, + ), + ); + } + case TypeKind.UNION: { + const unionType = genericType as TSUnion; + const newUnion = new TSUnion(); + unionType.types.forEach((t) => { + if (t.kind == TypeKind.UNDEFINED) { + newUnion.addType(t); + } else { + const newType = genericTypeTransformation( + t, + newTypeParameters, + typeParameters, + context, ); + newUnion.addType(newType); + } + }); + return newUnion; + } + case TypeKind.FUNCTION: { + const newFuncType = genericFuncTransformation( + genericType as TSFunction, + newTypeParameters, + typeParameters, + context, + ); + return newFuncType; + } + case TypeKind.CLASS: + case TypeKind.INTERFACE: { + const newClassType = genericClassTransformation( + genericType as TSClass, + newTypeParameters, + typeParameters, + context, + ); + return newClassType; + } + case TypeKind.TYPE_PARAMETER: { + const gType = genericType as TSTypeParameter; + if (newTypeParameters && typeParameters) { + for (let i = 0; i < typeParameters.length; i++) { + if (typeParameters[i].name === gType.name) { + return newTypeParameters[i]; + } } } + return builtinTypes.get('any')!; + } + default: { + throw new UnimplementError( + `Not implemented type: ${genericType.kind}`, + ); + } + } +} + +/** + * @describe specialize a generic type, or update the parameter type list of this generic type + * @param genericType the generic type that need to be processed + * @param typeArguments specialized type arguments list + * @param typeParameters generic parameter type list + * @param context the parser context + * @returns a new type + */ +export function processGenericType( + genericType: Type, + typeArguments: Type[], + typeParameters: TSTypeParameter[], + context: ParserContext, +): Type { + if ( + !isTypeGeneric(genericType) || + typeArguments.length == 0 || + typeParameters.length == 0 + ) + return genericType; + + if (genericType instanceof TSUnion) { + const newUnionType = new TSUnion(); + genericType.types.forEach((t) => { + newUnionType.addType( + processGenericType(t, typeArguments, typeParameters, context), + ); + }); + return newUnionType; + } + if (genericType instanceof TSArray) { + const newArrayType = new TSArray( + processGenericType( + genericType.elementType, + typeArguments, + typeParameters, + context, + ), + ); + return newArrayType; + } + + let newType: Type = genericType; + // if updating the parameter type list + const isUpdateTypeParameters = + typeArguments.filter((type) => isTypeGeneric(type)).length == + typeArguments.length; + if (isUpdateTypeParameters) { + // determine whether typeArguments is equal to typeParameters + let isSame = true; + for (let i = 0; i < typeParameters.length; i++) { + if ( + typeParameters[i].name !== + (typeArguments[i] as TSTypeParameter).name + ) { + isSame = false; + } + } + if (!isSame) + newType = genericTypeTransformation( + genericType, + typeArguments, + typeParameters, + context, + ); + } else { + if (genericType instanceof TSTypeWithArguments) { + const typeArgumentsSignature: Array = []; + const _typeParameters = genericType.typeArguments; + if (_typeParameters) { + _typeParameters.forEach((type) => { + const index = typeParameters.findIndex((t) => { + return t.name === type.name; + }); + if (index == -1) { + throw new UnimplementError( + `${type.name} not found in typeParameters`, + ); + } + typeArgumentsSignature.push(`${typeArguments[index].kind}`); + }); + } + + const genericOwner = genericType.genericOwner + ? genericType.genericOwner + : genericType; + const typeSignature = + typeArgumentsSignature.length > 0 + ? '<' + typeArgumentsSignature.join(',') + '>' + : ''; + const cache = TypeResolver.specializedTypeCache.get(genericOwner); + let found: Type | undefined; + if (cache) { + cache.forEach((v) => { + if (v.has(typeSignature)) { + found = v.get(typeSignature); + } + }); + } + if (found) return found; + } + newType = genericTypeSpecialization( + genericType, + typeArguments, + typeParameters, + context, + ); + if (genericType instanceof TSTypeWithArguments) { + const genericOwner = genericType.genericOwner + ? genericType.genericOwner + : genericType; + if (genericOwner.belongedScope) + createScopeBySpecializedType( + newType as TSTypeWithArguments, + genericOwner.belongedScope.parent!, + context, + ); + } + } + return newType; +} + +export function createScopeBySpecializedType( + specializeType: TSTypeWithArguments, + parentScope: Scope, + context: ParserContext, +) { + const genericOwner = specializeType.genericOwner; + if (!genericOwner) return; + + const genericScope = genericOwner.belongedScope; + if (!genericScope) return; + + switch (genericScope.kind) { + case ScopeKind.ClassScope: { + createClassScope(specializeType as TSClass, parentScope, context); + break; + } + case ScopeKind.FunctionScope: { + createFunctionScope( + specializeType as TSFunction, + parentScope, + context, + ); + break; + } + default: + return; + } +} + +/** + * @describe create a new specialized classScope + * @param specializedClassType the specialized class type + * @param parentScope the parent scope + * @param context the parser context + * @returns a new specialized ClassScope + */ +function createClassScope( + specializedClassType: TSClass, + parentScope: Scope, + context: ParserContext, +) { + const genericClassType = specializedClassType.genericOwner; + if ( + !genericClassType || + (genericClassType && !genericClassType.belongedScope) || + !specializedClassType.specializedArguments + ) + return; + + const genericClassScope = genericClassType.belongedScope! as ClassScope; + const name = specializedClassType.className; + // check if a specialized scope already exists + if ( + genericClassScope.specializedScopes && + genericClassScope.specializedScopes.has(name) + ) + return; + + const newClassScope = new ClassScope(parentScope); + genericClassScope.specialize(newClassScope); + newClassScope.setName(name); + + newClassScope.setGenericOwner(genericClassScope); + genericClassScope.addSpecializedScope(name, newClassScope); + newClassScope.setClassType(specializedClassType); + specializedClassType.setBelongedScope(newClassScope); + + if (genericClassScope.mangledName !== '') { + const genericMangledName = genericClassScope.mangledName; + const reverse = genericMangledName.split('|').reverse(); + reverse[0] = name; + newClassScope.mangledName = reverse.reverse().join('|'); + specializedClassType.mangledName = newClassScope.mangledName; + } + genericClassScope.children.forEach((s) => { + const genericFuncScope = s as FunctionScope; + const funcKind = genericFuncScope.funcType.funcKind; + // constructor is not in the memberFuncs + if (funcKind == FunctionKind.CONSTRUCTOR) { + createMethodScope( + specializedClassType.ctorType, + newClassScope, + context, + ); + } else { + let funcName = genericFuncScope.getName(); + // the function names of the getter and setter contain 'get_' and 'set_' prefix strings + if ( + funcKind == FunctionKind.GETTER || + funcKind == FunctionKind.SETTER + ) { + funcName = funcName.substring(4); + } + const res = specializedClassType.memberFuncs.findIndex((f) => { + return funcName === f.name && funcKind === f.type.funcKind; + }); + if (res !== -1) { + const specializedFunctionType = + specializedClassType.memberFuncs[res].type; + createMethodScope( + specializedFunctionType, + newClassScope, + context, + ); + } } }); + const genericBaseClassType = genericClassScope.classType.getBase(); + const specializedBaseClassType = specializedClassType.getBase(); + if (genericBaseClassType && specializedBaseClassType) { + const genericBaseClassScope = genericBaseClassType.belongedScope; + if (isTypeGeneric(genericBaseClassType) && genericBaseClassScope) { + createScopeBySpecializedType( + specializedBaseClassType, + genericBaseClassScope.parent!, + context, + ); + } + } return newClassScope; } /** - * @describe create a new FunctionScope based on functionType information - * @param originalFunctionScope the original FunctionScope to be specialized - * @param parent the parent of the original FunctionScope - * @param functionType the new function type corresponding to specialized FunctionScope: TSFunction => FunctionScope - * @param newName the name of new FunctionScope + * @describe create a new specialize method FunctionScope + * @param specializedMethodType the new specialized method type + * @param parentScope the parent class scope + * @param context the parser context + * @returns a new specialized method FunctionScope + */ +function createMethodScope( + specializedMethodType: TSFunction, + parentScope: ClassScope, + context: ParserContext, +) { + const classType = parentScope.classType; + const typeArguments = classType.specializedArguments + ? classType.specializedArguments + : specializedMethodType.specializedArguments; + + if ( + !specializedMethodType.genericOwner || + (specializedMethodType.genericOwner && + !specializedMethodType.genericOwner.belongedScope) || + !typeArguments + ) + return; + + const genericMethodType = specializedMethodType.genericOwner as TSFunction; + const genericMethodScope = + genericMethodType.belongedScope! as FunctionScope; + const newMethodScope = new FunctionScope(parentScope); + genericMethodScope.specialize(newMethodScope); + newMethodScope.setClassName(classType.className); + newMethodScope.setFuncName(genericMethodScope.getName()); + + newMethodScope.setGenericOwner(genericMethodScope); + genericMethodScope.addSpecializedScope(classType.className, newMethodScope); + + newMethodScope.setFuncType(specializedMethodType); + specializedMethodType.setBelongedScope(newMethodScope); + + const typeParameters = genericMethodType.belongedClass!.typeArguments!; + if (!typeArguments) return; + + // process funcName, mangledName and className of FunctionScope + if (genericMethodScope.mangledName !== '') { + const genericMangledName = genericMethodScope.mangledName; + const reverse = genericMangledName.split('|').reverse(); + // class name + reverse[1] = classType.className; + newMethodScope.mangledName = reverse.reverse().join('|'); + } + + // process function parameters and create scope + for (let idx = 0; idx < genericMethodType.getParamTypes().length; idx++) { + const genericParamType = genericMethodType.getParamTypes()[idx]; + if ( + genericParamType instanceof TSTypeWithArguments && + genericParamType.belongedScope + ) + createScopeBySpecializedType( + specializedMethodType.getParamTypes()[ + idx + ] as TSTypeWithArguments, + genericParamType.belongedScope.parent!, + context, + ); + } + return newMethodScope; +} + +/** + * @describe create a new specialize FunctionScope + * @param specializedFunctionType the new specialized function type + * @param parentScope the parent scope + * @param context the parser context * @returns a new specialized FunctionScope */ -export function createFunctionScopeByFunctionType( - originalFunctionScope: FunctionScope, - parent: Scope, - functionType: TSFunction, - newName?: string, +function createFunctionScope( + specializedFunctionType: TSFunction, + parentScope: Scope, + context: ParserContext, ) { - const newFuncScope = new FunctionScope(parent); - const className = parent instanceof ClassScope ? parent.className : ''; - newFuncScope.setClassName(className); - const name = newName ? newName : originalFunctionScope.funcName; - newFuncScope.setFuncName(name); - newFuncScope.setGenericOwner(originalFunctionScope); + const typeArguments = specializedFunctionType.specializedArguments; + if ( + !specializedFunctionType.genericOwner || + (specializedFunctionType.genericOwner && + !specializedFunctionType.genericOwner.belongedScope) || + !typeArguments + ) + return; - // specialize local variables inside functions - originalFunctionScope.varArray.forEach((v, index) => { - if (v.varName == '@context') { - const context = newFuncScope.findVariable('@context') as Variable; - context.setVarIndex(v.varIndex); - context.scope = newFuncScope; + const genericFuncType = specializedFunctionType.genericOwner as TSFunction; + const genericFunctionScope = + genericFuncType.belongedScope! as FunctionScope; + // check if a specialized scope already exists + const typeArgumentsSignature: Array = []; + typeArguments.forEach((t) => { + if (t.kind !== TypeKind.TYPE_PARAMETER) { + typeArgumentsSignature.push(`${t.kind}`); } else { - const varType = v.varType; - const new_var = new Variable( - v.varName, - varType, - [], - v.varIndex, - v.isLocalVar(), - v.initExpression, - ); - new_var.scope = newFuncScope; - newFuncScope.addVariable(new_var); + typeArgumentsSignature.push(`${(t as TSTypeParameter).name}`); } }); - newFuncScope.setFuncType(functionType); - functionType.setBelongedScope(newFuncScope); + const typeSignature = + typeArgumentsSignature.length > 0 + ? '<' + typeArgumentsSignature.join(',') + '>' + : ''; + const newFuncName = genericFunctionScope.getName() + typeSignature; + if ( + genericFunctionScope.specializedScopes && + genericFunctionScope.specializedScopes.has(newFuncName) + ) + return; + + const newFuncScope = new FunctionScope(parentScope); + genericFunctionScope.specialize(newFuncScope); + newFuncScope.setClassName(''); + newFuncScope.setFuncName(newFuncName); + newFuncScope.setGenericOwner(genericFunctionScope); + genericFunctionScope.addSpecializedScope(newFuncName, newFuncScope); + newFuncScope.setFuncType(specializedFunctionType); + specializedFunctionType.setBelongedScope(newFuncScope); + + const typeParameters = genericFuncType.typeArguments; + if (!typeParameters) return; + + if (genericFunctionScope.mangledName !== '') { + const genericMangledName = genericFunctionScope.mangledName; + const reverse = genericMangledName.split('|').reverse(); + reverse[0] = newFuncName; + newFuncScope.mangledName = reverse.reverse().join('|'); + } + + // Process function parameters and create scope + for (let idx = 0; idx < genericFuncType.getParamTypes().length; idx++) { + const genericParamType = genericFuncType.getParamTypes()[idx]; + if ( + genericParamType instanceof TSTypeWithArguments && + genericParamType.belongedScope + ) + createScopeBySpecializedType( + specializedFunctionType.getParamTypes()[ + idx + ] as TSTypeWithArguments, + genericParamType.belongedScope.parent!, + context, + ); + } return newFuncScope; } @@ -593,6 +1830,7 @@ export function isTypeGeneric(type: Type): boolean { case TypeKind.ANY: case TypeKind.UNDEFINED: case TypeKind.STRING: + case TypeKind.ENUM: case TypeKind.UNKNOWN: case TypeKind.NULL: case TypeKind.WASM_I32: @@ -613,21 +1851,6 @@ export function isTypeGeneric(type: Type): boolean { } case TypeKind.FUNCTION: { const funcType = type as TSFunction; - /* Member functions do not have 'typeArguments' property. - * So when a function is a member function of a class, - * it is determined whether the function is a generic type by judging whether the class it belongs to is a generic type. - * The result is not always correct, but it does not affect the logic of specialization. - * - * e.g. - * class A { - * a: T; - * echo() { - * console.log('hello world'); - * } - * } - * - * 'A' is a generic class type, and at this time we will treat 'echo' as a generic function. - */ if ( (funcType.isMethod && funcType.belongedClass?.typeArguments) || funcType.typeArguments @@ -638,45 +1861,144 @@ export function isTypeGeneric(type: Type): boolean { case TypeKind.CLASS: case TypeKind.INTERFACE: { const classType = type as TSClass; - /** - * e.g. - * class A { - * x: T; - * constructor(x: T) { - * this.x = x; - * } - * - * func(param: T) { - * return param; - * } - * } - */ - if (classType.typeArguments) return true; - /** - * e.g. - * class A { - * x: number; - * constructor(x: number) { - * this.x = x; - * } - * - * func(param: T) { - * return param; - * } - * } - */ - return classType.memberFuncs.some((func) => { - return isTypeGeneric(func.type); - }); + if (classType.typeArguments) { + /* When the class type carries type parameters, its method member does not contain type parameter information. + * At this time, it is determined whether the function is a generic type by judging whether the class it belongs to is a generic type. + * e.g. + * class A { + * a: T; + * echo(param: T) {...}; + * } + */ + return true; + } else { + /** + * class A { + * a: number; + * echo(param: T) {...}; + * } + * const a = new A(); + * this class type does not contain 'typeParameters', and newExpression does not contain 'typeArguments'. + */ + return classType.memberFuncs.some((func) => { + return isTypeGeneric(func.type); + }); + } } case TypeKind.TYPE_PARAMETER: { return true; } default: { - throw new UnimplementError('Not implemented type: ${type}'); + throw new UnimplementError(`Not implemented type: ${type.kind}`); } } - return false; +} + +/** + * @describe calculate 'typeArguments' from the formal parameters and actual parameters + * @param formalParameters the formal parameters of this generic function + * @param typeParameters the typeParameter list of this generic function + * @param actualParameters the actual parameters of this generic function + * @returns typeArguments + */ +// Currently only some basic types can be processed +export function getTypeArgumentsFromParameters( + formalParameters: Type[], + typeParameters: TSTypeParameter[], + actualParameters: Type[], +) { + if ( + formalParameters.length == 0 || + typeParameters.length == 0 || + actualParameters.length == 0 + ) + return []; + + if (formalParameters.length > actualParameters.length) { + formalParameters = formalParameters.slice(0, actualParameters.length); + } + const typeArguments = new Array(typeParameters.length); + // argument type + const argTypes = actualParameters; + // TODO: Handling optional parameters + for (let i = 0; i < formalParameters.length; i++) { + const pType = formalParameters[i]; + if (!isTypeGeneric(pType)) continue; + + const aType = argTypes[i]; + if (pType instanceof TSTypeParameter) { + const index = typeParameters.findIndex((t) => { + return t.name === pType.name; + }); + if (index == -1) { + throw new UnimplementError( + `${pType.name} not found in typeParameters`, + ); + } + typeArguments[index] = aType; + } else if (pType instanceof TSTypeWithArguments) { + const genericTypeList = pType.typeArguments!; + const specializedTypeList = (aType as TSTypeWithArguments) + .specializedArguments; + if (specializedTypeList) { + let idx = 0; + genericTypeList.forEach((g) => { + const index = typeParameters.findIndex((t) => { + return t.name === g.name; + }); + if (index == -1) { + throw new UnimplementError( + `${g.name} not found in typeParameters`, + ); + } + typeArguments[index] = specializedTypeList[idx]; + idx++; + }); + } + } else if (pType instanceof TSArray) { + // workaround + const genericElemType = pType.elementType; + if (aType.kind !== TypeKind.ARRAY) { + typeArguments[i] = aType; + } else { + if (genericElemType instanceof TSTypeParameter) { + const specializedElemType = (aType as TSArray).elementType; + const index = typeParameters.findIndex((t) => { + return t.name === genericElemType.name; + }); + if (index == -1) { + throw new UnimplementError( + `${genericElemType.name} not found in typeParameters`, + ); + } + typeArguments[index] = specializedElemType; + } else { + throw new UnimplementError( + `generic Array specialization operation for complex elementType is not implemented`, + ); + } + } + } else if (pType instanceof TSUnion) { + const types = pType.types; + let i = 0; + types.forEach((t) => { + if (t.kind == TypeKind.TYPE_PARAMETER) return; + i++; + }); + const index = typeParameters.findIndex((t) => { + return t.name === (types[i] as TSTypeParameter).name; + }); + if (index == -1) { + throw new UnimplementError( + `${ + (types[i] as TSTypeParameter).name + } not found in typeParameters`, + ); + } + typeArguments[index] = aType; + } + } + return typeArguments; } export enum PredefinedTypeId { diff --git a/src/variable.ts b/src/variable.ts index 52edd0b6..61f562bc 100644 --- a/src/variable.ts +++ b/src/variable.ts @@ -5,14 +5,14 @@ import ts from 'typescript'; import { Expression, IdentifierExpression } from './expression.js'; -import { TypeResolver, Type, TypeKind, TSFunction, TSEnum } from './type.js'; +import { TypeResolver, Type, TypeKind, TSEnum } from './type.js'; import { ParserContext } from './frontend.js'; import { addSourceMapLoc, generateNodeExpression, isScopeNode, } from './utils.js'; -import { ClassScope, FunctionScope, GlobalScope, Scope } from './scope.js'; +import { FunctionScope, GlobalScope, Scope } from './scope.js'; import { getConfig } from '../config/config_mgr.js'; export enum ModifierKind { diff --git a/tests/samples/nest_generic.ts b/tests/samples/nest_generic.ts new file mode 100644 index 00000000..0321f8e5 --- /dev/null +++ b/tests/samples/nest_generic.ts @@ -0,0 +1,196 @@ +/* + * Copyright (C) 2023 Xiaomi Corporation. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + */ + +// case 1: +// Test when the type of typealias is generic +type ItemGenerator = (item: T, index?: U) => void +function func1(func: ItemGenerator, a: T, b: U) { + func(b, a); +} + +export function test1() { + const itemGenerator1: ItemGenerator = (index: number, item?: boolean) => {console.log(index); console.log(item)}; + func1(itemGenerator1, true, 1); + + const itemGenerator2: ItemGenerator = (item: string, index?: number) => {console.log(index); console.log(item)}; + func1(itemGenerator2, 2, 'hello'); +} + +// case 2 +// Test when function parameters are generic +class Foo { + foo(data: T[]) { + const a = data[0]; + console.log(a); + } +} +class Bar { + bar(a: Foo, data: T[]) { + a.foo(data); + } +} +class Foo1 { + _x: T; + + constructor(x: T) { + this._x = x; + } + set x(x: T) { + this._x = x; + } + get x() { + return this._x; + } + foo(data: T[]) { + console.log(this._x); + console.log(data[0]); + } +} +class Bar1 { + _y: U; + + constructor(y: U) { + this._y = y; + } + bar(a: Foo1, data: U[]) { + console.log(this._y); + a.foo(data); + } +} +function func2(a: Foo, b: Bar, data: U[]) { + b.bar(a, data); +} +function func3(a: Foo1, b: Bar1, data: U[]) { + b.bar(a, data); +} + +export function test2() { + const foo = new Foo(); + const bar = new Bar(); + bar.bar(foo, [1, 2]); + bar.bar(foo, ['hello', 'world']); +} + +export function test3() { + const foo1 = new Foo1(1); + foo1.x = 3; + console.log(foo1.x); + const bar1 = new Bar1(2); + bar1.bar(foo1, [1, 2]); + + const foo2 = new Foo1('11'); + foo2.x = '33'; + console.log(foo2.x); + const bar2 = new Bar1('22'); + bar2.bar(foo2, ['hello', 'world']); +} + +export function test4() { + const a = new Foo(); + const b = new Bar(); + func2(a, b, [1, 2]) + func2(a, b, ['hello', 'world']); + + const c = new Foo1(1); + const d = new Bar1(2); + const e = new Foo1('hello'); + const f = new Bar1('world'); + func3(c, d, [3, 4]); + func3(e, f, ['111', '222']); +} + +// case 3 +// Test when generic functions are nested +function func5(a: X, b: Y) { + const foo = new Foo1(a); + const bar = new Bar1(b); + console.log(foo.x); + console.log(bar._y); +} +function func6(a: U, b: T) { + func5(a, b); +} + +export function test5() { + func6(1, 'hello'); + func6(false, 2); +} + +// case 4 +type funcType = (key: string, value: V) => void +type AttrValue = undefined | string | number | boolean +function echo(key: string, value: string) { + console.log(key, value); +} + +class ArrayMap2 { + readonly keys: string[] = []; + readonly values: V[] = []; + + get size() { + return this.keys.length; + } + get(key: string): V | undefined { + const idx = this.keys.indexOf(key) + if (idx !== -1) { + return this.values[idx]; + } + return undefined; + } + set(key: string, value: V) { + const idx = this.keys.indexOf(key); + if (idx !== -1) { + this.values[idx] = value; + } else { + this.keys.push(key); + this.values.push(value); + } + } + delete(key: string) { + const idx = this.keys.indexOf(key); + if (idx !== -1) { + this.keys.splice(idx, 1); + this.values.splice(idx, 1); + } + } + clear() { + this.keys.splice(0, this.keys.length); + this.values.splice(0, this.values.length); + } + forEach2(fn: funcType) { + this.keys.forEach((key: string, index: number) => { + fn(key, this.values[index]); + }) + } +} + +export function test6() { + const a = new ArrayMap2(); + a.set('n1', 1); + a.set('n2', 2); + a.set('n3', 3); + console.log(a.get('n2')); + a.delete('n1'); + console.log(a.size); + + const b = new ArrayMap2(); + b.set('s1', '11'); + b.set('s2', '22'); + b.set('s3', '33'); + b.forEach2(echo); + console.log(b.get('s3')); + b.clear(); + console.log(b.size); + + const c = new ArrayMap2(); + c.set('u1', '11'); + c.set('u2', 22); + c.set('u3', true); + console.log(c.get('u1')); + console.log(c.get('u2')); + console.log(c.get('u3')); + c.clear(); + console.log(c.size); +} \ No newline at end of file diff --git a/tools/validate/wamr/validation.json b/tools/validate/wamr/validation.json index 4d667613..fecdb4cc 100644 --- a/tools/validate/wamr/validation.json +++ b/tools/validate/wamr/validation.json @@ -3174,6 +3174,41 @@ } ] }, + { + "module": "nest_generic", + "entries": [ + { + "name": "test1", + "args": [], + "result": "1\ntrue\n2\nhello" + }, + { + "name": "test2", + "args": [], + "result": "1\nhello" + }, + { + "name": "test3", + "args": [], + "result": "3\n2\n3\n1\n33\n22\n33\nhello" + }, + { + "name": "test4", + "args": [], + "result": "1\nhello\n2\n1\n3\nworld\nhello\n111" + }, + { + "name": "test5", + "args": [], + "result": "1\nhello\nfalse\n2" + }, + { + "name": "test6", + "args": [], + "result": "2\n2\ns1 11\ns2 22\ns3 33\n33\n0\n11\n22\ntrue\n0" + } + ] + }, { "module": "null_type_case1", "entries": [