From 1bf6351b4c08f7ff6069ce42c8a6b8537ee0b150 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Fri, 16 Feb 2024 11:06:25 +0100 Subject: [PATCH 01/12] :package: Update NativeWebSocket.dll --- Packages/NativeWebSocket.dll | Bin 20480 -> 19968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Packages/NativeWebSocket.dll b/Packages/NativeWebSocket.dll index 14c92f3a9b01ce1e5121845a06c7bfffb8c43e6e..fb71b82886a5c7f50babae74586c14a39f5a7887 100644 GIT binary patch delta 6666 zcmbuD3v?Cbwa5S8d^3~t&V)yJiYEbiCLst7C?Me>FDWG#d5JW^fEwyeAOs7Iat=Zu zXa&QOP{c}7pn%E(%=J;M7gUN;!K+qF(YAoK5nc46RIlizU3c$2lOa^Qym#G`HUI42 z-rxH%-^?T%RPs^vP;K_ceU~=D`<+I1JgoA8vE;B_=el`yk57*cn+JT49Z6uOuFGm0 zX#gU`gGzy$Q&~n%YL@C1dUy=E;&hEo-LLwo@u_E2FEuIkN0r@aA(gG;7-Q;gTb{kKu2izyzem_TAwUjvx--|g+}p2+T-TDx~NO^n^4)VkE6^vO|H?iuURpjGW70G`75p_>09Zg=zclH3@*0|2a%eX(Q|mR6VQD* zaE|^5GRU4~pL%#0grcK~ZzfGKz+LO^Qm_d_J zjJDP|vNBR%X7o>l$g=1HrUaGzw=q1ebJWIq(QECqk#vlSQd{u2-7a9`?zCwk8{I_T zv)R5VI!8QX#r~}|Efm7LkqxGePb@C2+R=d!o-#L>A%t!AZ;4!t+6jyc?FibqIkqDh zLT!ix|6#Icj?LM&hFC|5=XJcIY`jbjvXK|&^wst)ROsFy=epbCT)(4oY}5u=-wm>M z3ht#6CYzn3DWucdu<-?z6T*Y`{Zv|_5gh(Kxpv}l3ditBY-%`$?bg(=jr!=0U<`|* z?72_0jxJW{^Qf~>y+_@Is&!3lEoICW+HNtmC2FKf zeiW;rx;hbY^}UFSi26%IHI=f6Xn@fEP)%$I(IBDBc@$(EEck&Jyk00^xWx>YLLc!8 z9f2fOan>nNTt%Vu@R1l(7rGa?vDrjfDEDHsQ)%scCH@u$iqIGLK~w%VG!jL~K`nHa zgO`Q!u?_}V&jo;caV_eE>OI;h^omEDg?4%LQz>%_)mKFM8j*o!<0*soseZ;NN)Cw} zFzkfAPQ74EPcDufBJCMuebr(8mk4XUVx45L4v{pulIG{)?;B$Or8L&C*y|?|64ysxrGL*GZy6^3Mom#LL+`MfCrQ^t{y>^;ogs|{ z|IGe>65Sa43q>Ce9w2=;dcmN*75XpIxz<PP3a5t^-s7E8h*+g&nl<2KZs4UQL1$xr1vd~3nb;qY^J6h;2bR;k_kW19tjp3R| zp0+Svs2=CS1Bt%hDqkAz^kQQo!*m*Ud32v*I_%Mt!NLUL2Uld|rf6{W#YkfyI--VB z(`2^`6_{i6Wy&!pYg)yU(#^+bT}!@9gSWd&1?DuJ?i1%rwDHi**wzmYH666~slc2| zQ^P-Q3}>VhN65|B*&}Y~UAn7J1!kqb$|uej7Xpq%PX(9jtb~sr6K4B#Qm@i<@X7B; z^g|*#C_O5P+^^}h_2@35o<5y5AJV;i`i!WzPqkLP?$bin4`N%0y!ww=aqDNAPE7e7 zu?FZ}t*Fx3r~BcYH*3d&&*~gRq^rt}rhCFm z2_GH8*L*rir}8^K*>p?)gHH}ovrh+6fKPm~F$5QVa)^`+BRB0Ju0zBnTEOpNC~oR5 z{de0v6jLQwj|%HodZ>&<67}(s)-gTYr+L9Q^$k89)F*VIPZxu~*CQ{JeqWFBsXB62 zkM>Dh|Eb4dRd*TxdYnz`rf=7^EIXK3YKy#2+ z@b_WLB5n@y3NFSlk9Y-_ph}3RDchWjeLm%xrTEOJq2}#aD2x9v{+ec^4BLfPVNHOm^F9ba6N~z@zi&nMOIrxI`PoaZrI7UeHc`)U`{ZRNrDQLaq4R zVXnj>k9e3Dp@$8x0=uDE|<@^N2@zDV%;hvCTmq`^UeG4iA(r%%*IMw@aVY36s9MA z;EbAM^df2}?EB1-c4~4`UFL*>1m}NG3rM@y{qE$f)sUQW`Z%o=M z5b9W>#r2XD zv`nVJ&FqeZTiLe_BUjKmjoZtsWi@d1+&#z9Xzh77N}dF{+$mr^pm}h(UG9=;8FqIO zx$C2KpITS>zp+y!2Cgg<|#Y!Ba`3r^m|< zbalpDdg-<4nn2fldT)3-qUhz5A5J@whR}!9p*L^V>qJM2P7p0h$iG>lb4lA{5vh%} zq+Rd}(k#4)^>m~h#dUPd)PYZl2!5MBnCzG7RH!3+7*0yAk3_FioU2hDOxCI|okG-+ z$060}6S0iaPs3*N6qB8p?aW7`niQ+VT2&fdN*Xs3^gP3j*e$vr$ISKEk1w5#*sqR6 ze~MqIgTb9tL0;fVQck%aOU-@AP@|0Ja7H|=j@SpWne1Y8QX|60NRP(eMwa5I;&wQh zNc))ny^{7hPO3jSmO80Mhuf)kZV~E!Gh2P6GR-`7Mx9K{CjYfYx$26Yky_P5#-N9c zM-HWLP@UAJz)qEezXtY@o{xQuS*po;foyK#Eb8%5r3`M$EOjdQh8jfv1j9*vS`8y$ z`>gr78spg|k&rPj0feo&nmSKJj~E86Gpc8l9+68;jIas)w;mRq8&* z3UypRNgsbA7-0mcgVRYnVm4`4l#s?TpR@-SBly#$MBPm7IK1#V; z%{J(zbdR_`Cs!P$R9u#59>Vy*%%ks1eoj8iJlgPmEa=c7VBKmc<^~#vIW=3XHV)L|KV>LH=KZ zgY-EGY7H(5uf;{-2T)D7PN)Z=CH+?17GrKi2jOk#E$Mckj800>$Knm-HAErX*tkr){XC%k*wle>*-qokPq(dVx_Z=)dnA9Eykkk<)VXoV zYdznsMr}4~Ea9{4KxbY{%=eGL41vnw}XyQ*D?qr71S?D{VY9 Ns3~Lec~zI6_CH`puC4$8 delta 7225 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 l%jZ2VXVqtCXh-KI=Z%@6lF_oi>)P3Y$ Date: Sun, 25 Feb 2024 20:23:03 +0100 Subject: [PATCH 02/12] :bug: Fix Sign message on Solflare and Backpack (#215) --- .../SolanaWalletAdapterWebGL.jslib | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib b/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib index 4b44247..4264382 100644 --- a/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib +++ b/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib @@ -11,7 +11,7 @@ mergeInto(LibraryManager.library, { if (window.walletAdapterLib == undefined) { var script = document.createElement("script"); script.src = - "https://cdn.jsdelivr.net/gh/magicblock-labs/unity-js-wallet-adapter@v1.2.0/dist/wallet-adapter-lib.js"; + "https://cdn.jsdelivr.net/npm/@magicblock-labs/unity-wallet-adapter@1.2.1"; document.head.appendChild(script); script.onload = function () { Module.dynCall_vi(callback, isXnft); @@ -98,16 +98,23 @@ mergeInto(LibraryManager.library, { const messageBytes = Uint8Array.from(atob(base64Message), (c) => c.charCodeAt(0) ); - const signedMessage = await window.xnft.solana.signMessage( + var signedMessage = await window.xnft.solana.signMessage( messageBytes ); + if (typeof signedMessage === 'object' && signedMessage !== null && 'signature' in signedMessage) { + signedMessage = signedMessage.signature; + } signatureStr = btoa(String.fromCharCode(...signedMessage)); } else { var signature = await window.walletAdapterLib.signMessage( walletName, atob(base64Message) ); - signatureStr = signature.toString("base64"); + if(signature instanceof Uint8Array) { + signatureStr = btoa(String.fromCharCode(...signature)); + } else { + signatureStr = signature.toString("base64"); + } } var bufferSize = lengthBytesUTF8(signatureStr) + 1; var signaturePtr = _malloc(bufferSize); From 2ba36dea10320dec3b64b458ae5f17914ada2e12 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Sun, 17 Mar 2024 10:44:31 -0700 Subject: [PATCH 03/12] :pencil2: Fix typo --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4a19e4d..ec341e9 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ The SDK is also available on the [Unity Asset Store](https://assetstore.unity.co - Native DEX operations (Orca, Jupiter) - Websockets to register/trigger custom events (account change, signature status, programs, ...) - Solana Mobile Stack support -- Soalna Wallet Adapter +- Solana Wallet Adapter ## 🚩 Upcoming - Seed Vault @@ -60,8 +60,8 @@ The SDK is also available on the [Unity Asset Store](https://assetstore.unity.co - Solana.Unity.Dex - Solana.Unity.Gum - Solana.Unity.Extensions -- Soalana.Unity.KeyStore -- Soalana.Unity.Programs +- Solana.Unity.KeyStore +- Solana.Unity.Programs - Newtonsoft.Json - Chaos.NaCl.Standard - Portable.BouncyCastle From 695981a6fe264706c03234a5ba58b46b62e4b196 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Mon, 25 Mar 2024 11:52:09 +0100 Subject: [PATCH 04/12] :bug: Fix Web3Auth callback --- Runtime/Plugins/Web3AuthSDK/Web3Auth.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs b/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs index e38b026..11c9b09 100644 --- a/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs +++ b/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs @@ -302,6 +302,7 @@ public void setResultUrl(Uri uri) if (hash == null) throw new UserCancelledException(); #endif + if(hash.Length == 0) return; hash = hash.Remove(0, 1); Dictionary queryParameters = Utils.ParseQuery(uri.Query); From fe5466e3964706cf2c458203304afbb05f032595 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Mon, 22 Apr 2024 15:29:01 +0100 Subject: [PATCH 05/12] :sparkles: Update web3auth sdk to v2.1.1 (#224) --- Runtime/Plugins/Web3AuthSDK/Types/AES256CBC.cs | 2 +- Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs | 2 +- .../Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs | 4 ++-- .../Plugins/Web3AuthSDK/Types/Web3AuthResponse.cs | 2 +- Runtime/Plugins/Web3AuthSDK/Web3Auth.cs | 14 ++++++++------ 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Runtime/Plugins/Web3AuthSDK/Types/AES256CBC.cs b/Runtime/Plugins/Web3AuthSDK/Types/AES256CBC.cs index 1b2f6ae..1fc9f26 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/AES256CBC.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/AES256CBC.cs @@ -135,7 +135,7 @@ public byte[] hmacSha256Sign(byte[] key, byte[] data) public bool hmacSha256Verify(byte[] key, byte[] data, string sig) { byte[] expectedSig = hmacSha256Sign(key, data); - string expectedSigHex = BitConverter.ToString(expectedSig).Replace("-", "").ToLower(); + string expectedSigHex = BitConverter.ToString(expectedSig).Replace("-", "").ToLowerInvariant(); return expectedSigHex.Equals(sig); } } diff --git a/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs b/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs index 46fe62f..8c6aa62 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs @@ -18,5 +18,5 @@ public class LoginParams [Preserve] public MFALevel mfaLevel { get; set; } [Preserve] - public Curve curve { get; set; } + public Curve curve { get; set; } = Curve.SECP256K1; } \ No newline at end of file diff --git a/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs b/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs index 5dc9d0c..897bdfa 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; #nullable enable #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. @@ -20,7 +20,7 @@ public string sdkUrl { } set { } } - public const string openLoginVersion = "v5"; + public const string openLoginVersion = "v6"; public WhiteLabelData? whiteLabel { get; set; } public Dictionary? loginConfig { get; set; } diff --git a/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthResponse.cs b/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthResponse.cs index d3b4bf8..2067596 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthResponse.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthResponse.cs @@ -1,4 +1,4 @@ -using System; +using System; using UnityEngine.Scripting; [Serializable] diff --git a/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs b/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs index 11c9b09..a75bc3b 100644 --- a/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs +++ b/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; using System.Collections.Generic; @@ -62,7 +62,7 @@ public void Awake() this.initParams = new Dictionary(); this.initParams["clientId"] = clientId; - this.initParams["network"] = network.ToString().ToLower(); + this.initParams["network"] = network.ToString().ToLowerInvariant(); if (!string.IsNullOrEmpty(redirectUri)) this.initParams["redirectUrl"] = redirectUri; @@ -108,12 +108,13 @@ public void setOptions(Web3AuthOptions web3AuthOptions) if (this.web3AuthOptions.loginConfig != null) this.initParams["loginConfig"] = JsonConvert.SerializeObject(this.web3AuthOptions.loginConfig, settings); - if (!string.IsNullOrEmpty(this.web3AuthOptions.clientId)) + if (this.web3AuthOptions.clientId != null) this.initParams["clientId"] = this.web3AuthOptions.clientId; - this.initParams["buildEnv"] = this.web3AuthOptions.buildEnv.ToString().ToLower(); + if (this.web3AuthOptions.buildEnv != null) + this.initParams["buildEnv"] = this.web3AuthOptions.buildEnv.ToString().ToLowerInvariant(); - this.initParams["network"] = this.web3AuthOptions.network.ToString().ToLower(); + this.initParams["network"] = this.web3AuthOptions.network.ToString().ToLowerInvariant(); if (this.web3AuthOptions.useCoreKitKey.HasValue) this.initParams["useCoreKitKey"] = this.web3AuthOptions.useCoreKitKey.Value; @@ -124,7 +125,8 @@ public void setOptions(Web3AuthOptions web3AuthOptions) if (this.web3AuthOptions.mfaSettings != null) this.initParams["mfaSettings"] = JsonConvert.SerializeObject(this.web3AuthOptions.mfaSettings, settings); - this.initParams["sessionTime"] = this.web3AuthOptions.sessionTime; + if (this.web3AuthOptions.sessionTime != null) + this.initParams["sessionTime"] = this.web3AuthOptions.sessionTime; } private void onDeepLinkActivated(string url) From a064c455a605c9f7fca956a084e876a7230c6bbf Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Fri, 21 Jun 2024 09:21:33 +0200 Subject: [PATCH 06/12] :sparkles: Update Web3Auth SDK to 3.0.0 (#226) * :sparkles: Update Web3Auth SDK to 3.0.0 * :bookmark: Bump SDK version 1.2.5 --- .../Plugins/Web3AuthSDK/Api/Web3AuthApi.cs | 2 +- .../Plugins/Web3AuthSDK/Types/ChainConfig.cs | 13 ++ .../Web3AuthSDK/Types/ChainConfig.cs.meta | 11 ++ .../Plugins/Web3AuthSDK/Types/LoginParams.cs | 12 +- .../Plugins/Web3AuthSDK/Types/MfaSettings.cs | 10 +- Runtime/Plugins/Web3AuthSDK/Types/Provider.cs | 6 +- .../Web3AuthSDK/Types/SessionResponse.cs | 4 + .../Web3AuthSDK/Types/SessionResponse.cs.meta | 11 ++ Runtime/Plugins/Web3AuthSDK/Types/UserInfo.cs | 2 +- .../Web3AuthSDK/Types/Web3AuthOptions.cs | 20 +- Runtime/Plugins/Web3AuthSDK/Web3Auth.cs | 180 ++++++++++++++++-- package.json | 2 +- 12 files changed, 232 insertions(+), 41 deletions(-) create mode 100644 Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs create mode 100644 Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs.meta create mode 100644 Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs create mode 100644 Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs.meta diff --git a/Runtime/Plugins/Web3AuthSDK/Api/Web3AuthApi.cs b/Runtime/Plugins/Web3AuthSDK/Api/Web3AuthApi.cs index aaf4afe..5872b89 100644 --- a/Runtime/Plugins/Web3AuthSDK/Api/Web3AuthApi.cs +++ b/Runtime/Plugins/Web3AuthSDK/Api/Web3AuthApi.cs @@ -8,7 +8,7 @@ public class Web3AuthApi { static Web3AuthApi instance; - static string baseAddress = "https://broadcast-server.tor.us"; + static string baseAddress = "https://session.web3auth.io"; public static Web3AuthApi getInstance() { diff --git a/Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs b/Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs new file mode 100644 index 0000000..27df1de --- /dev/null +++ b/Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +#nullable enable +public class ChainConfig { + public Web3Auth.ChainNamespace? chainNamespace { get; set; } = Web3Auth.ChainNamespace.EIP155; + public int decimals { get; set; } = 18; + public string blockExplorerUrl { get; set; } = null; + public string chainId { get; set; } + public string displayName { get; set; } = null; + public string logo { get; set; } = null; + public string rpcTarget { get; set; } + public string ticker { get; set; } = null; + public string tickerName { get; set; } = null; +} \ No newline at end of file diff --git a/Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs.meta b/Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs.meta new file mode 100644 index 0000000..e6abf84 --- /dev/null +++ b/Runtime/Plugins/Web3AuthSDK/Types/ChainConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14f23cb8321c8456cab023bf500e0d6e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs b/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs index 8c6aa62..ff3f7f4 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs @@ -1,22 +1,14 @@ using System; -using UnityEngine.Scripting; -[Preserve] -[Serializable] public class LoginParams { - [Preserve] public Provider loginProvider { get; set; } - [Preserve] public string dappShare { get; set; } - [Preserve] public ExtraLoginOptions extraLoginOptions { get; set; } - [Preserve] public Uri redirectUrl { get; set; } - [Preserve] public string appState { get; set; } - [Preserve] public MFALevel mfaLevel { get; set; } - [Preserve] + public Curve curve { get; set; } = Curve.SECP256K1; + public string dappUrl { get; set; } } \ No newline at end of file diff --git a/Runtime/Plugins/Web3AuthSDK/Types/MfaSettings.cs b/Runtime/Plugins/Web3AuthSDK/Types/MfaSettings.cs index 975ffa9..aafdde1 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/MfaSettings.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/MfaSettings.cs @@ -1,22 +1,26 @@ -#pragma warning disable CS8632 // The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. - public class MfaSettings { public MfaSetting? deviceShareFactor { get; set; } public MfaSetting? backUpShareFactor { get; set; } public MfaSetting? socialBackupFactor { get; set; } public MfaSetting? passwordFactor { get; set; } + public MfaSetting? passkeysFactor { get; set; } + public MfaSetting? authenticatorFactor { get; set; } // Constructors public MfaSettings( MfaSetting? deviceShareFactor, MfaSetting? backUpShareFactor, MfaSetting? socialBackupFactor, - MfaSetting? passwordFactor) + MfaSetting? passwordFactor, + MfaSetting? passkeysFactor, + MfaSetting? authenticatorFactor) { this.deviceShareFactor = deviceShareFactor; this.backUpShareFactor = backUpShareFactor; this.socialBackupFactor = socialBackupFactor; this.passwordFactor = passwordFactor; + this.passkeysFactor = passkeysFactor; + this.authenticatorFactor = authenticatorFactor; } } \ No newline at end of file diff --git a/Runtime/Plugins/Web3AuthSDK/Types/Provider.cs b/Runtime/Plugins/Web3AuthSDK/Types/Provider.cs index a2269a8..3b926c8 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/Provider.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/Provider.cs @@ -38,5 +38,9 @@ public enum Provider [EnumMember(Value = "jwt")] JWT, [EnumMember(Value = "CUSTOM_VERIFIER")] - CUSTOM_VERIFIER + CUSTOM_VERIFIER, + [EnumMember(Value = "sms_passwordless")] + SMS_PASSWORDLESS, + [EnumMember(Value = "farcaster")] + FARCASTER } \ No newline at end of file diff --git a/Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs b/Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs new file mode 100644 index 0000000..ae516fe --- /dev/null +++ b/Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs @@ -0,0 +1,4 @@ +public class SessionResponse +{ + public string sessionId; +} \ No newline at end of file diff --git a/Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs.meta b/Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs.meta new file mode 100644 index 0000000..4505d66 --- /dev/null +++ b/Runtime/Plugins/Web3AuthSDK/Types/SessionResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: daf6cdeb659614fd6a31d7300f309c76 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/Web3AuthSDK/Types/UserInfo.cs b/Runtime/Plugins/Web3AuthSDK/Types/UserInfo.cs index db2b5aa..c76255d 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/UserInfo.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/UserInfo.cs @@ -1,4 +1,4 @@ -using System; +using System; using UnityEngine.Scripting; [Serializable] diff --git a/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs b/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs index 897bdfa..2fb8d67 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/Web3AuthOptions.cs @@ -1,7 +1,6 @@ -using System; +using System; using System.Collections.Generic; #nullable enable -#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. public class Web3AuthOptions { public string clientId { get; set; } @@ -12,20 +11,31 @@ public class Web3AuthOptions { public string sdkUrl { get { if (buildEnv == Web3Auth.BuildEnv.STAGING) - return "https://staging-auth.web3auth.io/{openLoginVersion}"; + return "https://staging-auth.web3auth.io/v8"; else if (buildEnv == Web3Auth.BuildEnv.TESTING) return "https://develop-auth.web3auth.io"; else - return "https://auth.web3auth.io/{openLoginVersion}"; + return "https://auth.web3auth.io/v8"; } set { } } - public const string openLoginVersion = "v6"; + public string walletSdkUrl { + get { + if (buildEnv == Web3Auth.BuildEnv.STAGING) + return "https://staging-wallet.web3auth.io/v2"; + else if (buildEnv == Web3Auth.BuildEnv.TESTING) + return "https://develop-wallet.web3auth.io"; + else + return "https://wallet.web3auth.io/v2"; + } + set { } + } public WhiteLabelData? whiteLabel { get; set; } public Dictionary? loginConfig { get; set; } public bool? useCoreKitKey { get; set; } = false; public Web3Auth.ChainNamespace? chainNamespace { get; set; } = Web3Auth.ChainNamespace.EIP155; public MfaSettings? mfaSettings { get; set; } = null; public int sessionTime { get; set; } = 86400; + public ChainConfig? chainConfig { get; set; } } \ No newline at end of file diff --git a/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs b/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs index a75bc3b..0d81332 100644 --- a/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs +++ b/Runtime/Plugins/Web3AuthSDK/Web3Auth.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; using System.Collections.Generic; @@ -35,7 +35,7 @@ public enum ThemeModes public enum Language { - en, de, ja, ko, zh, es, fr, pt, nl + en, de, ja, ko, zh, es, fr, pt, nl, tr } private Web3AuthOptions web3AuthOptions; @@ -45,6 +45,7 @@ public enum Language public event Action onLogin; public event Action onLogout; + public event Action onMFASetup; [SerializeField] private string clientId; @@ -232,7 +233,6 @@ private void IncomingHttpRequest(IAsyncResult result) System.IO.Stream output = httpResponse.OutputStream; output.Write(buffer, 0, buffer.Length); output.Close(); - string code = httpRequest.QueryString.Get("code"); if (!string.IsNullOrEmpty(code)) { @@ -244,7 +244,7 @@ private void IncomingHttpRequest(IAsyncResult result) } #endif - private async void request(string path, LoginParams loginParams = null, Dictionary extraParams = null) + private async void request(string path, LoginParams loginParams = null) { #if UNITY_STANDALONE || UNITY_EDITOR this.initParams["redirectUrl"] = StartLocalWebserver(); @@ -256,13 +256,14 @@ private async void request(string path, LoginParams loginParams = null, Dictiona Dictionary paramMap = new Dictionary(); paramMap["options"] = this.initParams; paramMap["params"] = loginParams == null ? (object)new Dictionary() : (object)loginParams; - paramMap["actionType"] = "login"; + paramMap["actionType"] = path; + + if (path == "enable_mfa") + { + string sessionId = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.SESSION_ID); + paramMap["sessionId"] = sessionId; + } - if (extraParams != null && extraParams.Count > 0) - foreach (KeyValuePair item in extraParams) - { - (paramMap["params"] as Dictionary)[item.Key] = item.Value; - } //Debug.Log("paramMap: =>" + JsonConvert.SerializeObject(paramMap)); string loginId = await createSession(JsonConvert.SerializeObject(paramMap, Formatting.None, new JsonSerializerSettings @@ -283,8 +284,16 @@ private async void request(string path, LoginParams loginParams = null, Dictiona }))); UriBuilder uriBuilder = new UriBuilder(this.web3AuthOptions.sdkUrl); - uriBuilder.Path = path; + if(this.web3AuthOptions.sdkUrl.Contains("develop")) + { + uriBuilder.Path = "/" + "start"; + } + else + { + uriBuilder.Path += "/" + "start"; + } uriBuilder.Fragment = "b64Params=" + hash; + //Debug.Log("finalUriBuilderToOpen: =>" + uriBuilder.ToString()); Utils.LaunchUrl(uriBuilder.ToString(), this.initParams["redirectUrl"].ToString(), gameObject.name); } @@ -294,6 +303,66 @@ private async void request(string path, LoginParams loginParams = null, Dictiona } } + public async void launchWalletServices(ChainConfig chainConfig, string path = "wallet") + { + string sessionId = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.SESSION_ID); + if (!string.IsNullOrEmpty(sessionId)) + { + #if UNITY_STANDALONE || UNITY_EDITOR + this.initParams["redirectUrl"] = StartLocalWebserver(); + #elif UNITY_WEBGL + this.initParams["redirectUrl"] = Utils.GetCurrentURL(); + #endif + + this.initParams["chainConfig"] = chainConfig; + Dictionary paramMap = new Dictionary(); + paramMap["options"] = this.initParams; + + //Debug.Log("paramMap: =>" + JsonConvert.SerializeObject(paramMap)); + string loginId = await createSession(JsonConvert.SerializeObject(paramMap, Formatting.None, + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + }), 600); + + if (!string.IsNullOrEmpty(loginId)) + { + var loginIdObject = new Dictionary + { + { "loginId", loginId }, + { "sessionId", sessionId }, + { "platform", "unity" } + }; + string hash = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(loginIdObject, Formatting.None, + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + }))); + + UriBuilder uriBuilder = new UriBuilder(this.web3AuthOptions.walletSdkUrl); + if(this.web3AuthOptions.sdkUrl.Contains("develop")) + { + uriBuilder.Path = "/" + path; + } + else + { + uriBuilder.Path += "/" + path; + } + uriBuilder.Fragment = "b64Params=" + hash; + //Debug.Log("finalUriBuilderToOpen: =>" + uriBuilder.ToString()); + + Utils.LaunchUrl(uriBuilder.ToString(), this.initParams["redirectUrl"].ToString(), gameObject.name); + } + else + { + throw new Exception("Some went wrong. Please try again later."); + } + } else + { + throw new Exception("SessionId not found. Please login first."); + } + } + public void setResultUrl(Uri uri) { string hash = uri.Fragment; @@ -304,20 +373,29 @@ public void setResultUrl(Uri uri) if (hash == null) throw new UserCancelledException(); #endif - if(hash.Length == 0) return; hash = hash.Remove(0, 1); - Dictionary queryParameters = Utils.ParseQuery(uri.Query); + Dictionary queryParameters = Utils.ParseQuery(uri.Query); if (queryParameters.Keys.Contains("error")) throw new UnKnownException(queryParameters["error"]); - string sessionId = hash.Split('&')[0].Split('=')[1]; - - //save new sessionId + string newUriString = "http://" + uri.Host + "?" + hash; + Uri newUri = new Uri(newUriString); + string b64Params = getQueryParamValue(newUri, "b64Params"); + string decodedString = decodeBase64Params(b64Params); + SessionResponse sessionResponse = null; + try + { + sessionResponse = JsonUtility.FromJson(decodedString); + } + catch (Exception e) + { + Debug.Log("Failed to decode JSON: " + e.Message); + } + string sessionId = sessionResponse.sessionId; this.Enqueue(() => KeyStoreManagerUtils.savePreferenceData(KeyStoreManagerUtils.SESSION_ID, sessionId)); //call authorize session API - // Debug.Log("publickey after successful redirection from web. =>" + sessionId); this.Enqueue(() => authorizeSession(sessionId)); #if !UNITY_EDITOR && UNITY_WEBGL @@ -328,6 +406,42 @@ public void setResultUrl(Uri uri) #endif } + private string getQueryParamValue(Uri uri, string key) + { + string value = ""; + if (uri.Query != null && uri.Query.Length > 0) + { + string[] queryParameters = uri.Query.Substring(1).Split('&'); + foreach (string queryParameter in queryParameters) + { + string[] keyValue = queryParameter.Split('='); + if (keyValue[0] == key) + { + value = keyValue[1]; + break; + } + } + } + return value; + } + + private string decodeBase64Params(string base64Params) + { + if(string.IsNullOrEmpty(base64Params)) + return string.Empty; + // Replace URL-safe characters + base64Params = base64Params.Replace('-', '+').Replace('_', '/'); + var d = base64Params.Length % 4; + if (d != 0) + { + base64Params = base64Params.TrimEnd('='); + base64Params += d % 2 > 0 ? "=" : "=="; + } + byte[] bytes = Convert.FromBase64String(base64Params); + var decodedString = System.Text.Encoding.UTF8.GetString(bytes); + return decodedString; + } + public void login(LoginParams loginParams) { if (web3AuthOptions.loginConfig != null) @@ -341,7 +455,7 @@ public void login(LoginParams loginParams) } } - request("start", loginParams); + request("login", loginParams); } public void logout(Dictionary extraParams) @@ -361,6 +475,32 @@ public void logout(Uri redirectUrl = null, string appState = null) logout(extraParams); } + public void enableMFA(LoginParams loginParams) + { + if(web3AuthResponse.userInfo.isMfaEnabled == true) + { + throw new Exception("MFA is already enabled for this user."); + } + string sessionId = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.SESSION_ID); + if (!string.IsNullOrEmpty(sessionId)) + { + if (web3AuthOptions.loginConfig != null) + { + var loginConfigItem = web3AuthOptions.loginConfig?.Values.First(); + var share = KeyStoreManagerUtils.getPreferencesData(loginConfigItem?.verifier); + if (!string.IsNullOrEmpty(share)) + { + loginParams.dappShare = share; + } + } + request("enable_mfa", loginParams); + } + else + { + throw new Exception("SessionId not found. Please login first."); + } + } + private void authorizeSession(string newSessionId) { string sessionId = ""; @@ -372,7 +512,6 @@ private void authorizeSession(string newSessionId) else { sessionId = newSessionId; - // Debug.Log("sessionId during authorizeSession in else part =>" + sessionId); } if (!string.IsNullOrEmpty(sessionId)) @@ -418,6 +557,7 @@ private void authorizeSession(string newSessionId) this.Enqueue(() => this.onLogout?.Invoke()); else this.Enqueue(() => this.onLogin?.Invoke(this.web3AuthResponse)); + this.Enqueue(() => this.onMFASetup?.Invoke(true)); } } @@ -491,6 +631,7 @@ private async Task createSession(string data, long sessionTime) { TaskCompletionSource createSessionResponse = new TaskCompletionSource(); var newSessionKey = KeyStoreManagerUtils.generateRandomSessionKey(); + // Debug.Log("newSessionKey =>" + newSessionKey); var ephemKey = KeyStoreManagerUtils.getPubKey(newSessionKey); var ivKey = KeyStoreManagerUtils.generateRandomBytes(); @@ -525,6 +666,7 @@ private async Task createSession(string data, long sessionTime) { try { + // Debug.Log("newSessionKey before saving into keystore =>" + newSessionKey); this.Enqueue(() => KeyStoreManagerUtils.savePreferenceData(KeyStoreManagerUtils.SESSION_ID, newSessionKey)); createSessionResponse.SetResult(newSessionKey); } diff --git a/package.json b/package.json index 4ab8282..e2b4afc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.solana.unity_sdk", - "version": "1.2.4", + "version": "1.2.5", "unity": "2019.4", "displayName": "Solana SDK", "description": "Open-Source Unity-Solana SDK with Full RPC coverage, NFT support and more", From c2b97d6e56dbecb2ef6cbd3d63ee2d51351063d6 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Fri, 28 Jun 2024 12:29:42 +0100 Subject: [PATCH 07/12] :bug: Add [Preserve] attribute to fix code stripping & Simplify Android manifest --- .../Plugins/Web3AuthSDK/Types/LoginParams.cs | 12 ++++++++++- .../Plugins/Android/AndroidManifest.xml | 20 ++++++++----------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs b/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs index ff3f7f4..460e5b6 100644 --- a/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs +++ b/Runtime/Plugins/Web3AuthSDK/Types/LoginParams.cs @@ -1,14 +1,24 @@ using System; +using UnityEngine.Scripting; +[Preserve] +[Serializable] public class LoginParams { + [Preserve] public Provider loginProvider { get; set; } + [Preserve] public string dappShare { get; set; } + [Preserve] public ExtraLoginOptions extraLoginOptions { get; set; } + [Preserve] public Uri redirectUrl { get; set; } + [Preserve] public string appState { get; set; } + [Preserve] public MFALevel mfaLevel { get; set; } - + [Preserve] public Curve curve { get; set; } = Curve.SECP256K1; + [Preserve] public string dappUrl { get; set; } } \ No newline at end of file diff --git a/Samples~/Solana Wallet/Plugins/Android/AndroidManifest.xml b/Samples~/Solana Wallet/Plugins/Android/AndroidManifest.xml index 7e52205..604540f 100644 --- a/Samples~/Solana Wallet/Plugins/Android/AndroidManifest.xml +++ b/Samples~/Solana Wallet/Plugins/Android/AndroidManifest.xml @@ -4,7 +4,7 @@ - + @@ -27,23 +27,19 @@ - + - - - - - - - - - - + + + + From a6ef21b7dc401766933f42c13dbbfe2dd82b5ec3 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Sun, 15 Sep 2024 10:33:48 +0800 Subject: [PATCH 08/12] :bug: Replace deprecated getFees --- Runtime/codebase/SessionWallet.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Runtime/codebase/SessionWallet.cs b/Runtime/codebase/SessionWallet.cs index ac0a71e..42436ab 100644 --- a/Runtime/codebase/SessionWallet.cs +++ b/Runtime/codebase/SessionWallet.cs @@ -238,13 +238,14 @@ public async Task CloseSession(Commitment commitment = Commitment.Confirmed) // Get balance and calculate refund var balance = (await GetBalance(Account.PublicKey)) * SolLamports; - var estimatedFees = await ActiveRpcClient.GetFeesAsync(Commitment.Confirmed); - var refund = balance - estimatedFees.Result.Value.FeeCalculator.LamportsPerSignature * 1; + var estimatedFees = await ActiveRpcClient.GetFeeForMessageAsync(tx.CompileMessage(), Commitment.Confirmed); + var refund = balance - estimatedFees.Result.Value * 1; Debug.Log($"LAMPORTS Balance: {balance}, Refund: {refund}"); tx.Add(RevokeSessionIX()); // Issue Refund - tx.Add(SystemProgram.Transfer(Account.PublicKey, _externalWallet.Account.PublicKey, (ulong)refund)); + if (refund != null) + tx.Add(SystemProgram.Transfer(Account.PublicKey, _externalWallet.Account.PublicKey, (ulong)refund)); var rest = await SignAndSendTransaction(tx, commitment: commitment); DeleteSessionWallet(); } From 90edc613ac977aa987727fec60df7c84f7e9a5f5 Mon Sep 17 00:00:00 2001 From: Sadegh <73638842+sadegh-askari@users.noreply.github.com> Date: Sat, 19 Oct 2024 19:27:07 +0330 Subject: [PATCH 09/12] Update deprecated code inside jslib plugins (#234) * Update deprecated code inside jslib plugins * Fix SolanaWalletAdapterWebGL SignAllTransaction bug * Rename callback parameter to reflect full transaction return --- .../NativeWebSocket/NativeWebSocket.jslib | 16 +++++++------ .../SolanaWalletAdapterWebGL.jslib | 24 +++++++++---------- .../WebGLSupport/WebGLInput/WebGLInput.jslib | 24 +++++++++---------- .../WebGLWindow/WebGLWindow.jslib | 10 ++++---- .../SolanaWalletAdapterWebGL.cs | 24 ++++++++----------- 5 files changed, 47 insertions(+), 51 deletions(-) diff --git a/Runtime/Plugins/NativeWebSocket/NativeWebSocket.jslib b/Runtime/Plugins/NativeWebSocket/NativeWebSocket.jslib index ebb7650..1841297 100644 --- a/Runtime/Plugins/NativeWebSocket/NativeWebSocket.jslib +++ b/Runtime/Plugins/NativeWebSocket/NativeWebSocket.jslib @@ -149,8 +149,9 @@ var LibraryWebSocket = { if (webSocketState.debug) console.log("[JSLIB WebSocket] Connected."); - if (webSocketState.onOpen) - Module.dynCall_vi(webSocketState.onOpen, instanceId); + if (webSocketState.onOpen) { + {{{ makeDynCall('vi', 'webSocketState.onOpen') }}}(instanceId); + } }; @@ -170,7 +171,7 @@ var LibraryWebSocket = { HEAPU8.set(dataBuffer, buffer); try { - Module.dynCall_viii(webSocketState.onMessage, instanceId, buffer, dataBuffer.length); + {{{ makeDynCall('viii', 'webSocketState.onMessage') }}}(instanceId, buffer, dataBuffer.length); } finally { _free(buffer); } @@ -182,7 +183,7 @@ var LibraryWebSocket = { HEAPU8.set(dataBuffer, buffer); try { - Module.dynCall_viii(webSocketState.onMessage, instanceId, buffer, dataBuffer.length); + {{{ makeDynCall('viii', 'webSocketState.onMessage') }}}(instanceId, buffer, dataBuffer.length); } finally { _free(buffer); } @@ -204,7 +205,7 @@ var LibraryWebSocket = { stringToUTF8(msg, buffer, length); try { - Module.dynCall_vii(webSocketState.onError, instanceId, buffer); + {{{ makeDynCall('vii', 'webSocketState.onError') }}}(instanceId, buffer); } finally { _free(buffer); } @@ -218,8 +219,9 @@ var LibraryWebSocket = { if (webSocketState.debug) console.log("[JSLIB WebSocket] Closed."); - if (webSocketState.onClose) - Module.dynCall_vii(webSocketState.onClose, instanceId, ev.code); + if (webSocketState.onClose) { + {{{ makeDynCall('vii', 'webSocketState.onClose') }}}(instanceId, ev.code); + } delete instance.ws; diff --git a/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib b/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib index 4264382..97dd98d 100644 --- a/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib +++ b/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib @@ -14,11 +14,11 @@ mergeInto(LibraryManager.library, { "https://cdn.jsdelivr.net/npm/@magicblock-labs/unity-wallet-adapter@1.2.1"; document.head.appendChild(script); script.onload = function () { - Module.dynCall_vi(callback, isXnft); + {{{ makeDynCall('vi', 'callback') }}}(isXnft); }; } else { window.walletAdapterLib.refreshWalletAdapters(); - Module.dynCall_vi(callback, isXnft); + {{{ makeDynCall('vi', 'callback') }}}(isXnft); } }, ExternGetWallets: async function (callback) { @@ -27,10 +27,10 @@ mergeInto(LibraryManager.library, { var bufferSize = lengthBytesUTF8(wallets) + 1; var walletsPtr = _malloc(bufferSize); stringToUTF8(wallets, walletsPtr, bufferSize); - Module.dynCall_vi(callback, walletsPtr); + {{{ makeDynCall('vi', 'callback') }}}(walletsPtr); } catch (err) { console.error(err.message); - Module.dynCall_vi(callback, null); + {{{ makeDynCall('vi', 'callback') }}}(null); } }, ExternConnectWallet: async function (walletNamePtr, callback) { @@ -48,10 +48,10 @@ mergeInto(LibraryManager.library, { var bufferSize = lengthBytesUTF8(pubKey) + 1; var pubKeyPtr = _malloc(bufferSize); stringToUTF8(pubKey, pubKeyPtr, bufferSize); - Module.dynCall_vi(callback, pubKeyPtr); + {{{ makeDynCall('vi', 'callback') }}}(pubKeyPtr); } catch (err) { console.error(err.message); - Module.dynCall_vi(callback, null); + {{{ makeDynCall('vi', 'callback') }}}(null); } }, ExternSignTransactionWallet: async function ( @@ -79,10 +79,10 @@ mergeInto(LibraryManager.library, { var bufferSize = lengthBytesUTF8(txStr) + 1; var txPtr = _malloc(bufferSize); stringToUTF8(txStr, txPtr, bufferSize); - Module.dynCall_vi(callback, txPtr); + {{{ makeDynCall('vi', 'callback') }}}(txPtr); } catch (err) { console.error(err.message); - Module.dynCall_vi(callback, null); + {{{ makeDynCall('vi', 'callback') }}}(null); } }, ExternSignMessageWallet: async function ( @@ -119,10 +119,10 @@ mergeInto(LibraryManager.library, { var bufferSize = lengthBytesUTF8(signatureStr) + 1; var signaturePtr = _malloc(bufferSize); stringToUTF8(signatureStr, signaturePtr, bufferSize); - Module.dynCall_vi(callback, signaturePtr); + {{{ makeDynCall('vi', 'callback') }}}(signaturePtr); } catch (err) { console.error(err.message); - Module.dynCall_vi(callback, null); + {{{ makeDynCall('vi', 'callback') }}}(null); } }, ExternSignAllTransactionsWallet: async function ( @@ -162,10 +162,10 @@ mergeInto(LibraryManager.library, { var bufferSize = lengthBytesUTF8(txsStr) + 1; var txsPtr = _malloc(bufferSize); stringToUTF8(txsStr, txsPtr, bufferSize); - Module.dynCall_vi(callback, txsPtr); + {{{ makeDynCall('vi', 'callback') }}}(txsPtr); } catch (err) { console.error(err.message); - Module.dynCall_vi(callback, null); + {{{ makeDynCall('vi', 'callback') }}}(null); } }, }); diff --git a/Runtime/Plugins/WebGLSupport/WebGLInput/WebGLInput.jslib b/Runtime/Plugins/WebGLSupport/WebGLInput/WebGLInput.jslib index c0b0748..f7290d1 100755 --- a/Runtime/Plugins/WebGLSupport/WebGLInput/WebGLInput.jslib +++ b/Runtime/Plugins/WebGLSupport/WebGLInput/WebGLInput.jslib @@ -1,9 +1,7 @@ var WebGLInput = { $instances: [], WebGLInputInit : function() { - // Remove the `Runtime` object from "v1.37.27: 12/24/2017" - // if Runtime not defined. create and add functon!! - if(typeof Runtime === "undefined") Runtime = { dynCall : dynCall } + // Initialization if needed }, WebGLInputCreate: function (canvasId, x, y, width, height, fontsize, text, placeholder, isMultiLine, isPassword, isHidden, isMobile) { var container = document.getElementById(UTF8ToString(canvasId)); @@ -100,7 +98,7 @@ var WebGLInput = { input.setSelectionRange(start + 1, start + 1); input.oninput(); // call oninput to exe ValueChange function!! } else { - Runtime.dynCall("vii", cb, [id, e.shiftKey ? -1 : 1]); + {{{ makeDynCall('vii', 'cb') }}}(id, e.shiftKey ? -1 : 1); } } }); @@ -112,13 +110,13 @@ var WebGLInput = { WebGLInputOnFocus: function (id, cb) { var input = instances[id]; input.onfocus = function () { - Runtime.dynCall("vi", cb, [id]); + {{{ makeDynCall('vi', 'cb') }}}(id); }; }, WebGLInputOnBlur: function (id, cb) { var input = instances[id]; input.onblur = function () { - Runtime.dynCall("vi", cb, [id]); + {{{ makeDynCall('vi', 'cb') }}}(id); }; }, WebGLInputIsFocus: function (id) { @@ -127,17 +125,19 @@ var WebGLInput = { WebGLInputOnValueChange:function(id, cb){ var input = instances[id]; input.oninput = function () { - var intArray = intArrayFromString(input.value); - var value = (allocate.length <= 2) ? allocate(intArray, ALLOC_NORMAL):allocate(intArray, 'i8', ALLOC_NORMAL); - Runtime.dynCall("vii", cb, [id,value]); + var lengthBytes = lengthBytesUTF8(input.value) + 1; + var stringOnHeap = _malloc(lengthBytes); + stringToUTF8(input.value, stringOnHeap, lengthBytes); + {{{ makeDynCall('vii', 'cb') }}}(id, stringOnHeap); }; }, WebGLInputOnEditEnd:function(id, cb){ var input = instances[id]; input.onchange = function () { - var intArray = intArrayFromString(input.value); - var value = (allocate.length <= 2) ? allocate(intArray, ALLOC_NORMAL):allocate(intArray, 'i8', ALLOC_NORMAL); - Runtime.dynCall("vii", cb, [id,value]); + var lengthBytes = lengthBytesUTF8(input.value) + 1; + var stringOnHeap = _malloc(lengthBytes); + stringToUTF8(input.value, stringOnHeap, lengthBytes); + {{{ makeDynCall('vii', 'cb') }}}(id, stringOnHeap); }; }, WebGLInputSelectionStart:function(id){ diff --git a/Runtime/Plugins/WebGLSupport/WebGLWindow/WebGLWindow.jslib b/Runtime/Plugins/WebGLSupport/WebGLWindow/WebGLWindow.jslib index 046cac9..8cfdb5f 100755 --- a/Runtime/Plugins/WebGLSupport/WebGLWindow/WebGLWindow.jslib +++ b/Runtime/Plugins/WebGLSupport/WebGLWindow/WebGLWindow.jslib @@ -1,22 +1,20 @@ var WebGLWindow = { WebGLWindowInit : function() { - // Remove the `Runtime` object from "v1.37.27: 12/24/2017" - // if Runtime not defined. create and add functon!! - if(typeof Runtime === "undefined") Runtime = { dynCall : dynCall } + // Initialization if needed }, WebGLWindowOnFocus: function (cb) { window.addEventListener('focus', function () { - Runtime.dynCall("v", cb, []); + {{{ makeDynCall('v', 'cb') }}}(); }); }, WebGLWindowOnBlur: function (cb) { window.addEventListener('blur', function () { - Runtime.dynCall("v", cb, []); + {{{ makeDynCall('v', 'cb') }}}(); }); }, WebGLWindowOnResize: function(cb) { window.addEventListener('resize', function () { - Runtime.dynCall("v", cb, []); + {{{ makeDynCall('v', 'cb') }}}(); }); }, WebGLWindowInjectFullscreen : function () { diff --git a/Runtime/codebase/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.cs b/Runtime/codebase/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.cs index 9a6c319..362db71 100644 --- a/Runtime/codebase/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.cs +++ b/Runtime/codebase/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.cs @@ -26,7 +26,6 @@ public class SolanaWalletAdapterWebGL: WalletBase private static TaskCompletionSource _signedTransactionTaskCompletionSource; private static TaskCompletionSource _signedAllTransactionsTaskCompletionSource; private static TaskCompletionSource _signedMessageTaskCompletionSource; - private static Transaction[] _currentTransactions; private static Account _account; public static GameObject WalletAdapterUI { get; private set; } @@ -176,7 +175,6 @@ protected override Task _CreateAccount(string mnemonic = null, string p protected override Task _SignAllTransactions(Transaction[] transactions) { _signedAllTransactionsTaskCompletionSource = new TaskCompletionSource(); - _currentTransactions = transactions; string[] base64Transactions = new string[transactions.Length]; for (int i = 0; i < transactions.Length; i++) { @@ -224,28 +222,26 @@ public static void OnTransactionSigned(string transaction) } /// - /// Called from javascript when the wallet signed all transactions and return the signature - /// that we then need to put into the transaction before we send it out. + /// Called from javascript when the wallet signs all transactions and returns the signed transactions, + /// which we then need to send out. /// [MonoPInvokeCallback(typeof(Action))] - public static void OnAllTransactionsSigned(string signatures) + public static void OnAllTransactionsSigned(string transactions) { - if (signatures == null) + if (transactions == null) { _signedAllTransactionsTaskCompletionSource.TrySetException(new Exception("Transactions signing cancelled")); _signedAllTransactionsTaskCompletionSource.TrySetResult(null); return; } - string[] signaturesList = signatures.Split(','); - for (int i = 0; i < signaturesList.Length; i++) + string[] transactionsList = transactions.Split(','); + var txList = new Transaction[transactionsList.Length]; + + for (int i = 0; i < transactionsList.Length; i++) { - _currentTransactions[i].Signatures.Add(new SignaturePubKeyPair() - { - PublicKey = _account.PublicKey, - Signature = Convert.FromBase64String(signaturesList[i]) - }); + txList[i] = Transaction.Deserialize(transactionsList[i]); } - _signedAllTransactionsTaskCompletionSource.SetResult(_currentTransactions); + _signedAllTransactionsTaskCompletionSource.SetResult(txList); } From 92491f6595a6d646a1283103cb6518f9aa21aa7c Mon Sep 17 00:00:00 2001 From: Owais Iqbal Date: Tue, 29 Oct 2024 12:11:33 +0500 Subject: [PATCH 10/12] Feat: enable signAllTransactions for Ingame & External walllets (#236) --- Runtime/Plugins/Phantom.jslib | 71 ---------- Runtime/Plugins/Phantom.jslib.meta | 86 ------------ .../SolanaWalletAdapterWebGL.jslib | 2 +- .../codebase/DeepLinkWallets/PhantomWebGL.cs | 122 ----------------- .../DeepLinkWallets/PhantomWebGL.cs.meta | 3 - Runtime/codebase/DeepLinkWallets/Utils.cs | 53 ++++++++ Runtime/codebase/InGameWallet.cs | 6 +- Runtime/codebase/PhantomWallet.cs | 124 ------------------ Runtime/codebase/PhantomWallet.cs.meta | 3 - .../SolanaMobileWalletAdapter.cs | 21 +-- 10 files changed, 70 insertions(+), 421 deletions(-) delete mode 100644 Runtime/Plugins/Phantom.jslib delete mode 100644 Runtime/Plugins/Phantom.jslib.meta delete mode 100644 Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs delete mode 100644 Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs.meta delete mode 100644 Runtime/codebase/PhantomWallet.cs delete mode 100644 Runtime/codebase/PhantomWallet.cs.meta diff --git a/Runtime/Plugins/Phantom.jslib b/Runtime/Plugins/Phantom.jslib deleted file mode 100644 index 9c8d502..0000000 --- a/Runtime/Plugins/Phantom.jslib +++ /dev/null @@ -1,71 +0,0 @@ -mergeInto(LibraryManager.library, { - - ExternConnectPhantom: async function (callback) { - if ('phantom' in window && window.phantom != undefined && window.phantom.solana != undefined) { - try { - const resp = await window.phantom.solana.connect(); - var pubKey = resp.publicKey.toString(); - console.log(pubKey); - var lenPubKey = lengthBytesUTF8(pubKey) + 1; - var strPtr = _malloc(lenPubKey); - stringToUTF8(pubKey, strPtr, lenPubKey); - Module.dynCall_vi(callback, strPtr); - } catch (err) { - window.alert('Phantom error: ' + err.toString()); - console.error(err.message); - } - } else { - window.alert('Please install phantom browser extension.'); - } - }, - - ExternSignTransaction: async function (transaction, callback) { - if ('phantom' in window && window.phantom != undefined && window.phantom.solana != undefined) { - try { - const signedTransaction = await window.phantom.solana.request({ - method: 'signTransaction', - params: { - message: UTF8ToString(transaction), - }, - }); - console.log(signedTransaction); - var sign = signedTransaction.signature; - var lenSign = lengthBytesUTF8(sign) + 1; - var strPtr = _malloc(lenSign); - stringToUTF8(sign, strPtr, lenSign); - Module.dynCall_vi(callback, strPtr); - } catch (err) { - console.error(err.message); - } - } else { - window.alert('Please install phantom browser extension.'); - } - }, - - - ExternSignMessage: async function (message, callback) { - if ('phantom' in window && window.phantom != undefined && window.phantom.solana != undefined) { - try { - const messageBase64String = UTF8ToString(message); - const messageBytes = Uint8Array.from(atob(messageBase64String), (c) => c.charCodeAt(0)); - const signedMessage = await window.phantom.solana.request({ - method: 'signMessage', - params: { - message: messageBytes - }, - }); - console.log(signedMessage); - var sign = signedMessage.signature; - var lenSign = lengthBytesUTF8(sign) + 1; - var strPtr = _malloc(lenSign); - stringToUTF8(sign, strPtr, lenSign); - Module.dynCall_vi(callback, strPtr); - } catch (err) { - console.error(err.message); - } - } else { - window.alert('Please install phantom browser extension.'); - } - }, - -}); diff --git a/Runtime/Plugins/Phantom.jslib.meta b/Runtime/Plugins/Phantom.jslib.meta deleted file mode 100644 index 49f372b..0000000 --- a/Runtime/Plugins/Phantom.jslib.meta +++ /dev/null @@ -1,86 +0,0 @@ -fileFormatVersion: 2 -guid: 3876e8f9b7b61422cab945a04919bc4c -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 1 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - : Any - second: - enabled: 0 - settings: - Exclude Android: 1 - Exclude Editor: 1 - Exclude Linux64: 1 - Exclude OSXUniversal: 1 - Exclude WebGL: 0 - Exclude Win: 1 - Exclude Win64: 1 - Exclude iOS: 1 - - first: - Android: Android - second: - enabled: 0 - settings: - CPU: ARMv7 - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - CPU: AnyCPU - DefaultValueInitialized: true - OS: AnyOS - - first: - Standalone: Linux64 - second: - enabled: 0 - settings: - CPU: None - - first: - Standalone: OSXUniversal - second: - enabled: 0 - settings: - CPU: None - - first: - Standalone: Win - second: - enabled: 0 - settings: - CPU: x86 - - first: - Standalone: Win64 - second: - enabled: 0 - settings: - CPU: x86_64 - - first: - WebGL: WebGL - second: - enabled: 1 - settings: {} - - first: - iPhone: iOS - second: - enabled: 0 - settings: - AddToEmbeddedBinaries: false - CPU: AnyCPU - CompileFlags: - FrameworkDependencies: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib b/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib index 97dd98d..125e834 100644 --- a/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib +++ b/Runtime/Plugins/SolanaWalletAdapterWebGL/SolanaWalletAdapterWebGL.jslib @@ -155,7 +155,7 @@ mergeInto(LibraryManager.library, { var serializedSignedTransactions = []; for (var i = 0; i < signedTransactions.length; i++) { var signedTransaction = signedTransactions[i]; - var txStr = signedTransaction.serialize().toString("base64"); + var txStr = Buffer.from(signedTransaction.serialize()).toString("base64"); serializedSignedTransactions.push(txStr); } var txsStr = serializedSignedTransactions.join(","); diff --git a/Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs b/Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs deleted file mode 100644 index 0a75738..0000000 --- a/Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -using AOT; -using Solana.Unity.Rpc.Models; -using Solana.Unity.Wallet; -using Solana.Unity.Wallet.Utilities; -using UnityEngine; - -// ReSharper disable once CheckNamespace - -namespace Solana.Unity.SDK -{ - public class PhantomWebGL: WalletBase - { - - private readonly PhantomWalletOptions _deepLinksWalletOptions; - - private static TaskCompletionSource _loginTaskCompletionSource; - private static TaskCompletionSource _signedTransactionTaskCompletionSource; - private static TaskCompletionSource _signedMessageTaskCompletionSource; - private static Transaction _currentTransaction; - private static Account _account; - - public PhantomWebGL( - PhantomWalletOptions deepLinksWalletOptions, - RpcCluster rpcCluster = RpcCluster.DevNet, string customRpcUri = null, string customStreamingRpcUri = null, bool autoConnectOnStartup = false) - : base(rpcCluster, customRpcUri, customStreamingRpcUri, autoConnectOnStartup) - { - _deepLinksWalletOptions = deepLinksWalletOptions; - } - - protected override Task _Login(string password = null) - { - _loginTaskCompletionSource = new TaskCompletionSource(); - ExternConnectPhantom(OnPhantomConnected); - return _loginTaskCompletionSource.Task; - } - - protected override Task _SignTransaction(Transaction transaction) - { - _signedTransactionTaskCompletionSource = new TaskCompletionSource(); - var encode = Encoders.Base58.EncodeData(transaction.CompileMessage()); - _currentTransaction = transaction; - ExternSignTransaction(encode, OnTransactionSigned); - return _signedTransactionTaskCompletionSource.Task; - } - - protected override Task _SignAllTransactions(Transaction[] transactions) - { - throw new NotImplementedException(); - } - - public override Task SignMessage(byte[] message) - { - _signedMessageTaskCompletionSource = new TaskCompletionSource(); - ExternSignMessage(Convert.ToBase64String(message), OnMessageSigned); - return _signedMessageTaskCompletionSource.Task; - } - - protected override Task _CreateAccount(string mnemonic = null, string password = null) - { - throw new NotImplementedException(); - } - - #region WebGL Callbacks - - /// - /// Called from java script when the phantom wallet approves the connection - /// - [MonoPInvokeCallback(typeof(Action))] - private static void OnPhantomConnected(string walletPubKey) - { - _account = new Account("", walletPubKey); - _loginTaskCompletionSource.SetResult(_account); - } - - /// - /// Called from java script when the phantom wallet signed the transaction and return the signature - /// that we then need to put into the transaction before we send it out. - /// - [MonoPInvokeCallback(typeof(Action))] - public static void OnTransactionSigned(string signature) - { - _currentTransaction.Signatures.Add(new SignaturePubKeyPair() - { - PublicKey = _account.PublicKey, - Signature = Encoders.Base58.DecodeData(signature) - }); - _signedTransactionTaskCompletionSource.SetResult(_currentTransaction); - } - - /// - /// Called from java script when the phantom wallet signed the message and return the signature. - /// - [MonoPInvokeCallback(typeof(Action))] - public static void OnMessageSigned(string signature) - { - _signedMessageTaskCompletionSource.SetResult(Encoders.Base58.DecodeData(signature)); - } - - #endregion - - #if UNITY_WEBGL - - [DllImport("__Internal")] - private static extern void ExternConnectPhantom(Action callback); - - [DllImport("__Internal")] - private static extern void ExternSignTransaction(string transaction, Action callback); - - [DllImport("__Internal")] - private static extern void ExternSignMessage(string message, Action callback); - - #else - private static void ExternConnectPhantom(Action callback){} - private static void ExternSignTransaction(string transaction, Action callback){} - private static void ExternSignMessage(string message, Action callback){} - #endif - } -} \ No newline at end of file diff --git a/Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs.meta b/Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs.meta deleted file mode 100644 index 30fbecc..0000000 --- a/Runtime/codebase/DeepLinkWallets/PhantomWebGL.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 58053c7a76fb4074afab2d7a87ce762c -timeCreated: 1664400194 \ No newline at end of file diff --git a/Runtime/codebase/DeepLinkWallets/Utils.cs b/Runtime/codebase/DeepLinkWallets/Utils.cs index 16a1246..03045e2 100644 --- a/Runtime/codebase/DeepLinkWallets/Utils.cs +++ b/Runtime/codebase/DeepLinkWallets/Utils.cs @@ -192,4 +192,57 @@ public class PhantomWalletMessageSignedSuccessfully { public string signature; } + + [Serializable] + public class PhantomWalletOptions + { + [SerializeField] + private string apiVersion = "v1"; + public virtual string ApiVersion + { + get => apiVersion; + set => apiVersion = value; + } + + [SerializeField] + private string appMetaDataUrl = "https://github.com/magicblock-labs/Solana.Unity-SDK"; + public virtual string AppMetaDataUrl + { + get => appMetaDataUrl; + set => appMetaDataUrl = value; + } + + [SerializeField] + private string deeplinkUrlScheme = "unitydl"; + public virtual string DeeplinkUrlScheme + { + get => deeplinkUrlScheme; + set => deeplinkUrlScheme = value; + } + + [SerializeField] + private string sessionEncryptionPassword = "use a strong password"; + public virtual string SessionEncryptionPassword + { + get => sessionEncryptionPassword; + set => sessionEncryptionPassword = value; + } + + [SerializeField] + private string baseUrl = "https://phantom.app"; + public virtual string BaseUrl + { + get => baseUrl; + set => baseUrl = value; + } + + [SerializeField] + private string walletName = "phantom"; + public virtual string WalletName + { + get => walletName; + set => walletName = value; + } + } + } \ No newline at end of file diff --git a/Runtime/codebase/InGameWallet.cs b/Runtime/codebase/InGameWallet.cs index af41dc3..0a767c8 100644 --- a/Runtime/codebase/InGameWallet.cs +++ b/Runtime/codebase/InGameWallet.cs @@ -107,7 +107,11 @@ protected override Task _SignTransaction(Transaction transaction) protected override Task _SignAllTransactions(Transaction[] transactions) { - throw new NotImplementedException(); + foreach (Transaction transaction in transactions) + { + transaction.PartialSign(Account); + } + return Task.FromResult(transactions); } public override Task SignMessage(byte[] message) diff --git a/Runtime/codebase/PhantomWallet.cs b/Runtime/codebase/PhantomWallet.cs deleted file mode 100644 index 81e0c3d..0000000 --- a/Runtime/codebase/PhantomWallet.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Threading.Tasks; -using Solana.Unity.Rpc.Models; -using Solana.Unity.Wallet; -using UnityEngine; -using UnityEngine.Serialization; - -// ReSharper disable once CheckNamespace - -namespace Solana.Unity.SDK -{ - - [Serializable] - public class PhantomWalletOptions - { - [SerializeField] - private string apiVersion = "v1"; - public virtual string ApiVersion - { - get => apiVersion; - set => apiVersion = value; - } - - [SerializeField] - private string appMetaDataUrl = "https://github.com/magicblock-labs/Solana.Unity-SDK"; - public virtual string AppMetaDataUrl - { - get => appMetaDataUrl; - set => appMetaDataUrl = value; - } - - [SerializeField] - private string deeplinkUrlScheme = "unitydl"; - public virtual string DeeplinkUrlScheme - { - get => deeplinkUrlScheme; - set => deeplinkUrlScheme = value; - } - - [SerializeField] - private string sessionEncryptionPassword = "use a strong password"; - public virtual string SessionEncryptionPassword - { - get => sessionEncryptionPassword; - set => sessionEncryptionPassword = value; - } - - [SerializeField] - private string baseUrl = "https://phantom.app"; - public virtual string BaseUrl - { - get => baseUrl; - set => baseUrl = value; - } - - [SerializeField] - private string walletName = "phantom"; - public virtual string WalletName - { - get => walletName; - set => walletName = value; - } - } - - - public class PhantomWallet : WalletBase - { - private readonly PhantomWalletOptions _phantomWalletOptions; - - private Transaction _currentTransaction; - - private TaskCompletionSource _loginTaskCompletionSource; - private TaskCompletionSource _signedTransactionTaskCompletionSource; - private readonly WalletBase _internalWallet; - - public PhantomWallet( - PhantomWalletOptions phantomWalletOptions, - RpcCluster rpcCluster = RpcCluster.DevNet, - string customRpcUri = null, - string customStreamingRpcUri = null, - bool autoConnectOnStartup = false) : base(rpcCluster, customRpcUri, customStreamingRpcUri, autoConnectOnStartup - ) - { - _phantomWalletOptions = phantomWalletOptions; - #if UNITY_IOS || UNITY_ANDROID - _internalWallet = new PhantomDeepLink(phantomWalletOptions, rpcCluster, customRpcUri, customStreamingRpcUri, autoConnectOnStartup); - #endif - #if UNITY_WEBGL - _internalWallet = new PhantomWebGL(phantomWalletOptions, rpcCluster, customRpcUri, customStreamingRpcUri, autoConnectOnStartup); - #endif - } - - protected override Task _Login(string password = null) - { - if (_internalWallet != null) - return _internalWallet.Login(password); - throw new NotImplementedException(); - } - - protected override Task _SignTransaction(Transaction transaction) - { - if (_internalWallet != null) - return _internalWallet.SignTransaction(transaction); - throw new NotImplementedException(); - } - - protected override Task _SignAllTransactions(Transaction[] transactions) - { - throw new NotImplementedException(); - } - - public override Task SignMessage(byte[] message) - { - if (_internalWallet != null) - return _internalWallet.SignMessage(message); - throw new NotImplementedException(); - } - - protected override Task _CreateAccount(string mnemonic = null, string password = null) - { - throw new NotImplementedException("Can't create a new account in phantom wallet"); - } - } -} \ No newline at end of file diff --git a/Runtime/codebase/PhantomWallet.cs.meta b/Runtime/codebase/PhantomWallet.cs.meta deleted file mode 100644 index b565ac7..0000000 --- a/Runtime/codebase/PhantomWallet.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 86886b5b62324440870ea00f772204bf -timeCreated: 1660226458 \ No newline at end of file diff --git a/Runtime/codebase/SolanaMobileStack/SolanaMobileWalletAdapter.cs b/Runtime/codebase/SolanaMobileStack/SolanaMobileWalletAdapter.cs index 7728b6f..71b65c8 100644 --- a/Runtime/codebase/SolanaMobileStack/SolanaMobileWalletAdapter.cs +++ b/Runtime/codebase/SolanaMobileStack/SolanaMobileWalletAdapter.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Collections.Generic; using System.Threading.Tasks; using Solana.Unity.Rpc.Models; @@ -86,6 +87,14 @@ protected override async Task _Login(string password = null) protected override async Task _SignTransaction(Transaction transaction) { + var result = await _SignAllTransactions(new Transaction[] { transaction }); + return result[0]; + } + + + protected override async Task _SignAllTransactions(Transaction[] transactions) + { + var cluster = RPCNameMap[(int)RpcCluster]; SignedResult res = null; var localAssociationScenario = new LocalAssociationScenario(); @@ -112,10 +121,7 @@ protected override async Task _SignTransaction(Transaction transact }, async client => { - res = await client.SignTransactions(new List - { - transaction.Serialize() - }); + res = await client.SignTransactions(transactions.Select(transaction => transaction.Serialize()).ToList()); } } ); @@ -125,15 +131,10 @@ protected override async Task _SignTransaction(Transaction transact throw new Exception(result.Error.Message); } _authToken = authorization.AuthToken; - return Transaction.Deserialize(res.SignedPayloads[0]); + return res.SignedPayloads.Select(transaction => Transaction.Deserialize(transaction)).ToArray(); } - protected override Task _SignAllTransactions(Transaction[] transactions) - { - throw new NotImplementedException(); - } - public override void Logout() { base.Logout(); From 6009c6fb8cab30242b9ae0f2eb0d061b3d8bbb98 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Fri, 15 Nov 2024 17:16:24 +0100 Subject: [PATCH 11/12] :pushpin: Bump SDK version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e2b4afc..7024097 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.solana.unity_sdk", - "version": "1.2.5", + "version": "1.2.6", "unity": "2019.4", "displayName": "Solana SDK", "description": "Open-Source Unity-Solana SDK with Full RPC coverage, NFT support and more", From 8b35d38c62f4236068ad873b9342d0230c85459c Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Wed, 20 Nov 2024 11:01:40 +0100 Subject: [PATCH 12/12] :arrow_up: Update Solana.Unity.Rpc package --- Packages/Solana.Unity.Rpc.dll | Bin 199168 -> 199680 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Packages/Solana.Unity.Rpc.dll b/Packages/Solana.Unity.Rpc.dll index 349ade6333b567190ab24493dd71c31654f71f9d..e37308b4d6c214099ff7cdb7fdac45b681680bf0 100644 GIT binary patch literal 199680 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

ikL9mFYI=mLa0eGtE40` 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 IzmWs~2itM4EC2ui literal 199168 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

9gI%Kr#6htp@l~XAC zw;Z2x)LW>BdYva^#Z7wbBC!jSO-0-jzk7J57X;JgXH!Inn@=se8wm!IeOhRwSI9nd zh)QlXltJ==6!rTZYA23XgW4V%N`0?}7UGFE&u-s}K6(OYO;nLML}#tF2<_YsYW+iV zq7rnpy$es}M&d`Q2T_dRwaJIq%^fOCH%~{6KLaCFvos701^=;z3hLA9h~>--^$j?= z$hN^;88o2xN9Q_T&!0IZRG>%I?dZ+CIT1I4nhNfN#(Q9IjpH>Qq+iHh+{9=l?k70d zJ_SsD5kqe+8st)GCkSGO&e}wkvoYJKg)8mLGU2I}_8YUn3v+??&6)T)8x%+LP|6{y zo-(V#a4E=?_Sw3cB0ot;RR^({3?QDH3 zaw;a4u9qVhYZ{_)DZu8k^BGVEm3n6jY&y1hk4~MkV+P3lK}AkCWOgjuiKzHUys$r< zRkwkl8bv4{n+%qYFRaAx!M7^$ySNSxh0zE~Be|Q())_8*w7{5A5Bi$}7238zf?!G> z7Y-F-#;n@XG#E3m)h0JfTf5QzHs%Z6LAeFesb4VI@qk}J=Gv&-AA^5o?eCkDzBedSS3zoq~;RQ`z@EPtbTC$=mX;~!uz*Kvw5 z!&z-|Fb$Ps#;}>7slftY17H3=`+NMM_M|nhuLm5zD>DrA>|G2~Z5)3qI}_4KUdQMn zuOqNCPK-dabU34JN`(g2=?Gn_qw3Gb6$@U6&H_G-zK#F#s9qb=% zCin*y+i%SR=M>v_WPxt6{WBlfc`ZUXg|0NOt!#JY>CN^_p+lU+rnfAc-b+?2K(YIB@O!Gt)Q+Gw^}~Q zvC6i!Wy@;9U9%OBAu~T8s8r)$r+vrI|ER0(8B0l%oS)t^ri`*5Wwe+iMoY;WqwGr= z?YiUvE?YiVT>mpnV<;z+*vn=g(;Hg{*@^C-&fP<;T?%-3JzKaGsmYOO2k69b*`*kX>2|f7m1(?}ds%VO3eFHS zD7rJmS|{P%!mxtm$>*%DLGpQ{Ve&ZG#VV+Io+`K%McLo-J9C+W zDOqYcC;v^4at;@VimpgkBIoJ32iei%Bb`BcsVK~GW^3J-iuSA-FJ_&StJaG4B{*YF zWVg>;i5z!qUrUmR}lbS}EyzEer|CQ14#MRByYu5VpwX|uL2 zXpUQ(YJQ}@1q%u#0M9u&I+zBXBsw}Ard_GA_INHT#%ISY&SErfFve*fUeB_(weQa!Ovbc1l#TjoRqJ6pK1tZhEs({_*=)7Rz zOqKV1l3%gw$f0l9mv&+1ULchAm3caynjFwh)qO$-Hn z(f*`(E?VkEim7aNkZ&zRi!_;Y4(mNj}Ieal0~Zp@DV!V(~y^k zit!PICWg~+y+}dv3lO#DrlRmn3saAyRgcBH9z|7-fkkqZNotb32zFhqZ=zhyrt#@K z{^^DDKH%o@^0|G$rN49xbNzLX*Y43-MWKo6=W00`vl6G8CYdfDkNOUVsKr>J7IY}N zmIwk?HhZzfP-x4yG{*f$1~Nk|-u3j=F&JtS^y;1j$Qpelh{0T&T$0-GSOP)wbY}>t z;6L&T>e4)YxXAxfn&~*w4VPQn4V5Dx)P^hd;!q_z0d^H5P$fDMuDrN*`sy79>ZL5E zMDmk}nfxjnBjxF40>*S>1P|Ty^rKw4^%6OcTHo|;kK@|HuJ`#pj;L_o-(4HvZge{5 zkjBvQK1=2Gz6sAET!b;Xh`oJ;F{ES`<5C)ffNggtFvfRgB4}?HVGM$Oy}+1UN_MGT zN@GaLHnS5LgJ6FzFa`kwg-c-!0`6i?V9fF$dIiv;lQCsBz>tc$g-c}&0yZU`z!(IF zc!4np*d}u+j6rai7Z`)!a4#?h!4Y0yOb#ep4^Edcq+|}_1jgi2vfy!SBeO4Qt;58Y8>Jz=d7zE4?U0KE;U>fHH#^iu7_i_=& z5aAu3Ns)^%1{KVJoWK~bLic=H)&7F1(@Ar|{mjPf^_=@)rpsd`hNl+;VQj5pBJOf6 zonvo}UGVLhDVHkc8J1Ep@tMNCZ#o)wVnT@u;64}@UPp-?#?X<7$0*Yg*8s-QB3RN1jQNEr=8T;y1&!xd= z*tt(|mIlp~LnZCvR2qW-`#FIz2)OY&fiVcUvp9h<2xt~3Fa`m(Z~|ixoZ|(?cvm9g zTpwW!g7dt<7*hU5RVLzPKEfCT=X-%MIh|{KgfXO?@&aQJbiKeB1l&_xg^kJSy4Xh; zL&{6Mz?fXhSNaHJNO`Fj7=z$dUSJG@%e=stoUY4#gfXOiwHFwJ;0iA=CYSX!KEfDM zUg-tKAb7187=wVG<-i+*;3_XL2Eo-{U<`t5yucU)ulE9Da`m~^M;JrOH+X?D2;S%g z#^kcT$wwGN$~Sv~F}aj)@e#(5@~vKA41(*tz?fXtxA_QTNO`>%7?Vr+b{}C(F5(6s zVN5RKMjv4ey5Hdi#^h4o3@Hb_z?fXhxjw=eBJK*@?R1`xFa{O#y}%d*buTa`r*p_h z7(>K2Qk|UeaMdyf6+CQo0%H)c3U>lyE?;O{6JyOFx)&AKjg1Bo#|>c?1QBO!%h%-> zDovl)7?kli(kU|r!2&NZ1_6&DT?%8g?-JU6Re`@Sh&WzYj#YBXs_fOvTltvfiwJQ{ zkrx!1SEcDxwbj$b@#gsG_-^^s$XI_D3m=+OD4e7HieA=;eFQ#05OK7z9G{Oa6ZGd& zEM9WtK((`msKHb^1@m_1O-0bmv_Ti1DBWa500tyeJb%J!E zD#(NOdZ}42Wg03?inltZRamQJ)z*3SYJ8E{K63QM`}0gKemP+a9Z0B&R5a5>_~2A7 znwKA%%0=_?!&AAamsg#o)?%qDmZ~~S@y(UpvDmoVE7+?r*><0E3JMG6TzuV}0r`v0 zov2;UrCsM0nr@eDj2*K3YvpDA?KiXU)nS2MTa!ih&nt|&WCQaG3mi8%udr}obTR3o zRXD`h)FrY)aq5*Kn6GoGm~wM?u(d5o>!nroK^$Y%;w6@8cy7I1pWAsAiQ>z+)CWgb z4G-1_>&4~wS!<+uiupYAhUP_=E61y)yD~G$s`YDAb+zfMS36fIN6o5{s$5m?TQ%Gt z3`^+&szLwo{QCUW!}Xzg_4)O>tK~p*c&N2^eIQze>BpvCBQ3*ISBi|(YxUvywaPir zQ!+AKuh&-(&qqnUK0j4b9|GJ^eW+etep`prvgNVPcXh4AoJ}r|RpW1q^u-TA;)lf3 zEjZ2#Eyo-whSp+^6qm=fM%#flJWqX+?*r}FPh%~n#n-U)_B!fPTQ}I>-VJG`a}~ig z<>+ci^iyRfpW9=eSLj<%7~G0rZZO=$4>86t<}C68V-RfW1;!xQ%nOXk>Dt^!7(>d% zUSJG@C0<|*f-Stj7zA5-fiVcS@&aQJZ0!ZcdJxs*@y5yp^mCoeDt!AdVM2EjADz!(H<*g6Xvqw_fz<9{#1 zZ#xI@y^66Q+L|sE?{ECn(@C9tlnbM9gq#B~j*0o)3+%X;iHVUKCP@-TJ92e- zYVn&@*Vc~J_$@GledYMA(BZVO&gP_KG`J2~yhuEw`exAhZAj8_|BH4$DIN8L2=iwB zJKzn>Jx+CdF$V;l>&Y}0#&3s2J1Cj%>z)5+b@gX>dUe#8wlDRWlI>O7TIU9?{XuG` z#i^MpeesRRC+ESu17>Nt&rqcnc_?oY8N;178ZNYU+n_C0$QHBg!)e>H9vGUTmIm=I z3TvNmN9xyIzin&QwywclvvKl?JY%^Avpqk?+CpOa<+bvSn?NvDi?$&cL=uMaI}rt{ zlEsDb&4i<85as;qP3X8Ft3!N?V%=QKJh7jtfvbr{E#Biun=#oOX`tGh0i|i)MfSng z5*{eM8*aGBv$uFt%Hrvp(R7|c{CkL>{4O0SoNm4$>qyn!jHsH zTv!zp3Kyzfmsy_*5{^d|J9|*hSb0i(Y;&${C9v)itFw%m1!CF8C)3O|(J0ZM=F6tM z%^gN7sZ5EQ@q4Ln%)$L~II&lAptZ6Rs|&m4$tA41gw|YPHGZFR^?DhP9IIjceuT^K zY!0qu)>=sOYTnxy-%5;To;J60_gGDX+$^Y6FLgek1WbRbE3c#7I@^JtIbvTqSqJJm zvqhT))~i<~k4R9i_f09r8AU)4D8_1;kM!~%k;Xx*_f40X)1|{xo8f74lMUtIg&}PP z+uo^dB-eS2I$W(+>!saa$cOhj`^n%;Irf=lcq(fXTUl1y{k8bHma-UYMjAh#3sd^Z zed^^4zE72H2mK+K>2gceI*S}*YZap}v$Q6*sC2fn{FQi1(Mqf#KVG6si%V;;601ir z2~roZC$u@^+oEIlGpC<;qQWp7@k$b->#n4y&#SMpeNB5F6-B-3>Y?da)z|r{&FQXQZ%((HgZyN3x?TKD z*ck50yLy2!xm*5$KEfDM9^?haAUN0yjLBs^#77uI%0s=t7zBrTfiVaU_X1-O9N`7V zyoKenTQjlXbBiPxw<>~h%b-=7&uT5h?5}VU?cJ>P7A*R(u?h^V`u}$FDEc2 z*T6^m2xH9V3H3im|2?iH$tx&qO}W1^(QF?zz+&WztGORX3y}JyWhxj911 zj?_o$rQC9pJf(b|=1?=Y+^lN3*-Ns4ki;h=QaQg57+1SYB98d zTFh?_Z@Q8_!NSn|reF4Zn|5xOip_@R6Y(*zvx?f>6}5P1etmI$bBD_3jn3vSGQ7k^ zt=eGrEnN03NwZ~riw$Mp%0*?_hdVE}?y^~Yve6~+$Ej9)ss*-kfzt`ZpFmvS6uWL( z-?U!eeTiVU#o0gxbh=zP7C^@J$hrT&D=BnON9GmR+snbQV{4E*D=dT&nSFP}BM1P{=@FBYN)EGV-TF|1;!va z#S4t_BRvtP`UqnXoaP0_L`vK!Hzj!wPACp3nfXLx}z97E%c zjk0?a05w;qraDupNF9rg2hnxNby)d&mxPaVD~9v+O2}5vRm2DFN4XnDuT52aPBqZk zUSo2)Un-r7For_fUSLcvWyePtL&~$gz!(JQc!4ow-CPfDh&b0r7?X?myswrqq`b=u zjLD_^f{!qUlwb4$V|+@@H$pq}^(ytR{Cj+yHKG~=Y!D=3sGd}7&Bfl`(NPcFt>%_dAZ0~<4+LgqflQj?rv7cAokJTfznE*o{0wbx}i#{D(&#$QJZhR{6l>F9oS zu6~cE_4{>NzhAlfIkCQNtM^kBa`n3Cm2nXg0BpX z#@|-OqkB|3AEH*%TDADzz14^&dbN^5uSn@@MB9Om`stj#qG=Ds(q%1@#IIE%bwFbf zyv_@ZL2#897=z#%FE9qd>%G7j1lM|jF`2JkVZQnXB6Gf4biOJnzRKf_^?h}AKJ(R$ z<-6W{WpX7dIpWBkUpXk*hs{g+Zg4BYZ*&iE9qhA=SU*$}z8qvJBPJL)g(~D4o;NN# zY`&Fs)KhO^Y3*1H^jT@UpE^HyP0kM$l zFRlL4s*&8AHnnIF-h7j$()UTW%-+7~+%JBU_8+wBkU!4RcZUjBnvLIvI=$x-Oo@xX zP162~{jyI@{g(f8`CsOLYyJWbr7o(qYNNGQd6QZzXx8i_3zqRaD#O}uf70rYW26rt z9El#}nkbPggHFub+~v-95y#)-l8NU?{E)=o&%~qg58wej^>#EkM~+uA6Vf=BE4eq$ z@xY03PN{Rg^GE8#I43E-!{d(ieP?z)^PQ)V&yA}$%q%Y*S0#P&akZB(Kdx>pA0va# zFxNYKVgdc$#_#bBjxqlMl54@qtvP~7(ecCBjt6MZ(#-J@czzdvM=7o7hq7rd!|1ZX z#eMCeLAH;6MARA=Rqje}^kXFPPn6?=VCqKHPBy~{-X_be&#B-Dx&DHrS z84^_@?LB{RRT_=|i-@HzH?Hs(l6QWl5`NAlm=bb7ivCeu$;PbDZXo?Ho+Ldln$bH* zz*jZ+TtwIjaINu?@pFTT1)X0Z9}D6~l|TM9*Z4O|IbwYy)VCcASILL$H$Utyr5v?z zVu%Mt$`$r1pxH&g zuVG3L<|c$)D%eFS%kgh>#!#Nf=LzkHE_#`YWGb$oNqIO#Q(((d_wwJNF8M1ysC)U} zjE2eIjq*8aqg@xRPpxaLR4Dp`YHf9vu4{6-a8A=TZ8S`neh_XX|1#Qj(fZvT=~5`w z<$tH>_2}w6JMDY8XR+M*qw4r4vE?aA;y+37X9-;R&x9uyl&36>6a58I{8uim(ejif zoi0B|ee`dN_&b+%^Lf~&9F_PV1edO3b**6hPeN{QL|>Ud@RY)Qo^NuNWQu2!?z=YJ zHS90FyA_jnsuPB8>ZMegdJQe@{0mKNmuyaB#{Y&-Zc-fY;odCT*@CuR{};}7S86SqhYehDBtcj+I7*< zMNXGOQ6JfypFI~{JR?^9Ocy=G{A|D|-+eR6ci)UQlB&_JOQuh&39~{@=iYqV4BZnv z*6LRoO-%UzM%JZD>gxAJ>i6cXexu8{ z9fa{V#4qjK!cDBUQU?gaI6`tZlaD$4?3=~5ucM5L`yR?m?GrpMz$^DIwSDF%);hU$ zuzk5Fjo;1TUfj3Br!>9s%}TkAH_Ci|CMt~C6mG>gDPnFIZ%Y+gC>KpDk*XTpLl2_M z-tqt(Cykraaf2+pCBwJ4Uq6r2*-OZ>dMplOzQtN=vaQW-Y-=eG$e%@mw2ZQEC{8)P zKePXg3T!efDl=A--D0P*IzwgW4s8HF#|kmGn5Doh?CQ7KjHq(_Y|Eq)oPj@vrWuvN zu-oU_tH~}EdtsomtbOq(@)@k4{~f|&UOiifGxQ7GW-FG@s5alft#y`hi9fYoRc6_I zao+~ftF_|KY&^5>#V6vnZ>8Of27BTNei@KlVf$fq4dVIfJee})TexLjm!59!$2{A0 zzcAiGNz(+klOSF$LD{-d7_U$u-jVCL>*_e%(-dNexlMNw4RyvKxZMkkLGUpzFa`ln zj9eCD&P|6F-So=IM~HJLd!pxZ{~CXsmq8GP@$*!77W*vXoM3MR_IRuru@WlBY(=n? z-kVJBNKin3U&M3o_l1Q5XG@qPK99J`;UL;qw7)$q-`)urYg{%&C(iAOlxpHaHVDMT zizzMI2hJ6rO1Ds@X4NbowV^t?V@vr|+{8I_TjxxlYVXcB)oX@7u%~6ohh>%MU}BlL zJ)J7MhegeS&PoCtAGeIG+-t-AD?f}Q@YwwI3Juf;T>YLwIvpH#Px5(sI={6wPe13E z(**VT@y;aC21PkKl!C6S&u8bC$Bp&D8n0L%x3>aN? zzde{FDfmd*I+(BU#fOZKpGAQzVGqMZooB=AcW_z*)y9eu295oYjz;&(zuNSg z)Ud3tttzrv1d z-SdTggPgZSN6JyriMFa8QA+z?jR+VW)R`f z@be*>dwd2YHuo@wGIYOZ8>Mig{O|wY_xt`j?}Fv-_x=CF`~ASm9{_x4z}@e;!{_ez zbL(^6{eB+e?HJkaJ&AU(pY3(uH{#}gwnXtcSaf(^Yr7`5&aLablv7R>)$6^HC7l=4 znHTWZPJM1~UNE@cykMTc`@5OJymV$TxPh60lew9}{5~ckucf9{XgV_(a5IC2?shux zznd8hF*6u)GlOAf2E*yhz)^qS8h)~w!SIvM4ASTg&kTlU%nXM9^O?bD`U2&WwKV#5 z%~89d|6iIgj4)vsaT5kRCOBil&`2i?j(S6Km@u6%IGUHc2}2{EIbmqnM4?H({Dfho zH(?mbPZ)ye1jd=@CGy@HW~epmwXBR;bBV_v^mB>P;PM;&T;h=M;s@Paf;ElaxEWv8 zITf<@4vj6ywCypzc{nw!cXNGM^NuC7z&jXc_>xyck8#*rnc_tj6WA z@Kvz9)3AJrg2BRkURa(}(FbG7Sb_y$k+(nv={WLnB)t?J4>P%&VN$lBUP@T#0qVFtU%C!9? zrTs*5?WZiW+t1Wk{u%Ap6VJkuYd;k_1Iu@^_WLGLVBrzw%=Y6s=99IbvZ?);X9J4m zm9-y_@>=UI2&N=e`-$e-Pnn*q{kCr}Vg5kF9>h(ldLzK2?L#QHeJqzSejV#J_g!rJ9qltscr`-zL+AG6;fk@R zR17d{q>cx!|3}m<;y2~*qit@szV%(S(l!r4=vyzTwDn`z!PNH&+wXe^Q$K+1{m3`d zU>-d3bM|Z*@=+yKk`3^(en+zvpG0TTz;d!Wp&MAFAIIbYC2hzPVRK9#f!V+!DUK;J z-T0F4g35xDQ&Ex)ET+ctAp<_k%x}`Z<9GyjpO(=GRQSYila)HTYsM#pBiD6|8vY%=&$M zO!6yb(obNP+gDiHM-k{;1q%_eSFl!{V}49xm5{oMo>n?n;Xzv~?odhD?`&vlKUER? z{aVERIy3hmo-&#JB*lIr(~Ylq`zZ@b&P7RPKT~7*vEO;bIQ#X))#znNGy8q-=b8O} zhPp61U$L@ZSok1zdbin+U2@s)aR`30Z>4>mf&VRGGgQPAo^r%&iInzn=RM~Z z*1RgisA9wDQWvlHabJc1zt=GGSXLPS4#EEyBe$~x%p!O$Tb$Umul;H|KA;t}-;=wd zp@j~%CEGtFd=+{p>wWDXS<6f0V!QuT>}AAG9O(`qwEv(aPJTIZ^AJm{I~EUT)8w1h zOYL%9Nli90X@GFFmC|4;*lh_WSJFyMFZIAt@+osBXo; zRurjZiXbI1od+AZ&CN-&n(61+pTqn1yho8TkMKXH~7$wb4+DI&6TK8t5q}y zGDW69T&6xD_+Yu%3GjH0`-69^>?hxSyz}=dx31Jy%kUBQo7!>(u#xvS6HR zQIhpsQ)Brt&KrnvKF||aqcQ1rbZOD;W4<{eaaq{ zuVPsfa`Cblz+2%N(LomVAcEq%|GIo1dJ7RqL3U_~zz)WS6`}TI0Y6pZa{7efk_hF2v zV%FBcwxXr(MDxd|oNXk}_F zKSq2fF>bW#iL24gNV&~q^T$ViosCx$XbhuUTms#PnDi7rV0PS*DD1csgt7PJO8d{| zKTjvT{+P59X^OnJLS`M-irM1gx(2)J1rj1Ai~ z`I!jvJ;c@qOx0TP2T&u3AB3h5r38q(iF9}2Du~R>4Wgt#6q#<^>me!&N46OUi7|tq5b5sARjrJ>SSw3PD~n7w z*ynVutSl(`GD@;mHZ_)?R{jbx4tGynjlPOBkNY)m&2X#SF#4KH;C=R^hWkLGz5CSEFws-Js8^)KH)C6j-&P_8)FDEQb;Wmct=nVT}1HSn$~+5afN<#u(tYbmYb$ z-VaS7N(m5OAksaIt01D^AW8~Ek?F>R9-^`U@jEEVAetJ>55xzEaS(grYV;t|4UaJ@ zHjKXO;(dF$_3J94z<4CYwbvijUbhR(MWk1Iy&Rf?QEI@vP^7z>tH59|10yM5L~`p@ zWkJcsD9ON>8p{uuONen`dg9sZ)!Z1PQgiE7H(pX-#+ajs0?W}5hh>Wquy8D=6@M?q z@=ySCumWMMeJ#jU91nCBSPo;+X z45{x2^N*Q z9u{1Kb~%wKu$&BWSPm7IPpMsg2zL3{kD#fKDK%J55$T@9RaiKTV?HJ+SVX29-}CLF zEGYR2N-`faHI^SNKPATbSWjHlr=&LAE-E$D7cyMCxG@1g0?VmHf#q}vSQryt3>L4k_@7$vHU=M zlo$uGC$2`nM!MlKLB)pAZ(O_|6L5bpo$#6`03JFEEcoQ!q*mn6pH> zXL1#oJ5w-{0!C!I@qG_QSy1vjlw@E`jpYZ-?}>3>dg5yI2c#S9M=CXp{%FyR;g!NV z#&FypEH5PrEFB0~&abpT4i;X|CQPfH197d^e#GSGO5k^{6zHuiau1b0CsX{1;$(_H zLsL_zFidftNVm;ZreF?at}7{~5Seap*2UeNl?5e#MM-7~Q)Brt#ovf=rs#>Q(ch8g z+VveD%I?i7HjMt^;&ngMT7kZXEnY?xwpatf7OWM1<$QMvL28A04Oyp);EIQ-qMMc2 zTET8|JY;Xh|3tTd{|lM|mu7$`BHi=33iuaN;F1DdWV-Q)2d*qAnMO$l+|*cpfImTu z1Ktx?qe7VXf!ta_rH0WQi_Y%j3>)CSfGBXUg}6Su87OIeZgA`OS)RDJ;s7;*7(!Es zQUXM7hCsZKt03}h(Ari~Ac{;ke&``83rb2T$sn2<%MZjdF%Du+T#YJ7b8VYjE2!8o zs=9bRFO;7%$bj(`M1hf;Y3k?Cww8P);mn^E@VhFPD#9L?rq2ytg&^15_C%5AfvvcY z;$({&G_{2a!xoo`bT8&ATk!D9Y#}MO5SecL$lF3$P%?m$%oe7`@?(oZVw^2{;%YP( zY0efoKUc9~G|$ER@ypF=E+-0GTmf<8*D2UyqjMUi2FzgBBsZr~ z7Qj%29vD+&`2j;Sq+ojDCz;cz)b-{x4$GB9f#r1&hvlj#!=lt+xk{w_TCT#vqQtOB z3Ko$Z7G;@@#nf2-8CZJaC&8jpb6Co@26R}iCJHRChk)g%O8XA;(Q64`L5ewa$v42~ zZ=>dh8+&>peV~1#NcS49LVI_LR#MQ4eJ185j4#&_1(xd}VBy~Jn4QOXJ7Kraq_@><{Gb(YK$^BWG_80({Z)fW z9hwd%(hTk!MY?a}D%@=S8*WL#Ei&Esu^&v71tr5M$p#ZsWBI{7LW~ zp_J8Vbsok+BDPw$c0gJ_=I-b~cQ zGx{dW_S|!@&q*$LkSA?+#9k+6rpr_8baW13D`0G`VxmFW=TO4f)=GF6YG&EC{RlCA z-pubNL2Bl*9;8`kVH>g)j{?Q^OcubTdnQ7nJ(Kr{c5mXUJrnlsY|lhe?U{&9H-6$R ztxW8hY=RnD+V)ILkttx$gzxF5mhOqG(WXclwhQ^^s&laEJpSjNtEv(l^LL5;+MB5( zc7HEX*!}$w{7w6N^c`I5Rs{J0!lotc&hfMBsF7>&hLd+KDZ#ZqAkuvwSGg9uU*=kp z;#wlpjh}kJ%7PMJi0ZkPsj>XH)|SLL*XoI@(N;)v_o>`HTg8U@__^YRk+o{!bB6JQ zM1k?c5HKE8X+Ix~>1*&)A3YMD=rheQw|I%#EsdB@pZv4!nR~FE3hms7vsj>W^XA3q(-xF8$g>cY&?AP3wVOObPwA`X;-~2O< zPZ0(7J0RIJj?WO7{fuKD>+YW=CVj?nC+v)891`?aBIz@Z&mpv-pzWSj$eYfvEYYpEch~l^~QpYO%|jCkY5q$evzv{va@3#B?Y8N?)IuI zfSfVSGc}eUkiBVMPwa26nXlx=0u`IPzdDR=@9L{Wf$?sL!}wc=@#_fI!^p3)r?FtUYU7$pUxNNyWQS-|*%d_$TV%MZqfvxe-6{Wj2sFsj(xK2XKpYh&HW zSa1(fVEh&YjHguE{i7NS?j>x_%@10678kxBK9Ahaim-*yidWFtGz{(tO$P$02Kl!| zy5Hm~8#JFLwC$2^-k!EK_UUz*q4ye#j zpYM0$e10DI9iqVfAOzf;kJuL68(ohmHBi1Q(tUudps*M>D3St2Bv?s1c`yy!m5<-5fmTFtVR`KaMno-CN%32N zA%lGoG##3x8Q8xS>HeClU^5vr*pdQUWV-RFhpjBYJ_IG16Pp^#4{Y8wN@4fJ)rc3= z0p|O2ZhfOtLw!fz<6gi#oc$Vb|Bfhd{|Ukzg$Ie8!}tS%=s;E?6AL(fn+5vYj0@R; z><^nC{F&G`orhuEa@l(Wv^inRXm1P1MmWn~Nb9UN%c5>1u<@N~T1#)xnGtz!&KptH z#E5?t>HeOpjL1-KMwApIicB|t?Tx4`7?CgS_l#(2EI&p(k{CC>_r%rcg-A2sdHB(6 zd{?1ibd+M9@APc=H=?lNzaW_n|3M(L;Xkv$OdDQehWab* zq5qu{OtA%9wD+}xDRyBUJ2Dczhz1y}^hHNQ@hSFJ-Kps4UwQ*cqmHe6ZP;;#iKSWV zUN&37%?7cpdl^h^-7Bfqy`s5+N10gn`hmyRy{5<%u*JUwwb@PNtp!K>b$`Hu?D zjXmyNkFObaHhhJ>58}qy)wZ|7hO5Tde#m-bEF)wqK1Q~nd5(pqgN;7d_PeZlpK$eY_KskmY+60ff(0Mdg5wyBGRm%3AH^$PrTl!$X!9E3=!j@)W4~cZyGd9>DG}w{? zTV%TNn1`(_z&;Hn8EjKy`GI{pF%EW5T#a6gbc188N)7b}r^D^q*WE+erxI?qpVIdI zg^iu;H>rKutMNd4$3Hf950xr_vaJJ9cDW2Fm<*_-02Rr(va$fwyRy9xX=*G#K=;dl z_QV^%hpNz=AG`C7?kw6uqQJ?PkZ?{_+MAglvl*1O?=WG14`tWKk7T6J+CoxnA(A_wrYtCVZ+^97YAipt zV7Df1^qx39pyvB@?tG&PUGIFFTeB`93R|#SBwMh5^=v@W+H4ffXlhEFio%kI>Xueh~K7tUa+`3S{F}Zf>Yzb87*&uAxseW{(jC z#%&;AWL@)OFh;*qbDe=tskzRCrp=|)fQdx9OS$Uy^ZOKxq<|5bZqSDA;i$5p`-32#jaorI2bw~bQXnrA>9T)jkpGxMmK4Y$(+wKcK~@%&oQIMO zvZ=BBKz9{lHJo-w`1~!%rfM78gpgK1KTV{|W}1QiQwmyAK#SxyA(REsGd3YijpYY) zZxf;?_L~qM^Q+&SVOFWRJ&2Od2Qlr-jNKD9-FX$;+j(u@Z1Jp8?ah8s zJEYi}GvYQJnT4G-+I#snH&|z0Vbd_P+n)B;yDFw>*j}PtR^c`c`wND9g!u`p4n=4t zCYm#z@-Y*WZwzAh=MW60bd9I*>4`IFK?`*Wam@6j(4!n8)S2Z4A?vYgQ!HG^c7@1s;v3sJ)-gjLqSx+U(lY|}U5>SXG8JKJ1! zkv<( z^fy3gUi^1x{0c;7|BGSL$3My_`(Gm3eI-{t{`rTn^G=WQn-^` zW)C~2#`4b?c6#ETk8S{;%FX#@r4Zn^4&Q2`z{l!YKj~{T3LX-|TFM>@69I@*S zI7cJYr$j{m;{j*ZIIRj{uwz8JM{Hkhfg{4)&J6K4kV_WJU7 zGJjC9IeYaNPQYF~8>1f|OBD7x5rVz&R7Sw#3GhQMT#wQDUj_? z@O9zz0rWIBj<2RCs6noQrjsEdra?{>=^n>b4e~_VAd=D`BGU~9WH^(S`00sx9SQ09j4^f_?EWc``s&e` z^d+!qUu9;iRoj`8a9`y+nlWrJb(RF1sP}FFyEKCRr6OGxmWI7B$Ms%G!7h@+t}L^$ zn;OeM1A9;Gv3p;<^xDi9Rca1zslcZs3OqQ+7u!UE_Z$emcq4Y`Y@u@r&G^lj=Rf`+ z_h7UexjAErzP{)!sEFUng%`i4F65xY#LgDar%v`D*>JhNwK#ynL)GX8F%^E&^+uRUHwh8a zpk7JN6YX}m4)MKfPA0S-dBD1$B6xMYD>~hHI-|UOQ%L#HbQ7BR!5#u>{T`=CoFOL> zf~bWXtUGv^gCC0F=NRL6l5-?}RLPwYc4!~)-@ta6df3-7LP(u@LQV4v17jfg$m-1$ z;Cez&T#ar)%B{Ar=Z;+X<2-iZCjPIc?GJ`(z5%iK-Zh8hYmoUqA_IldyPOie&$E*F z`^;xvMijPS4kn*rOe+K!VhzD)YtSd+{80v`X70QDgXw1o82rz2pSRXG1h_R@#);8- zF?}sYx$OpE9~scEC-Z@eT7_S{Nr>s|yqhWwmnu{A=VJV6tlEA9*6i!x2j$^1Ul+w` zcB2~2_&rJ~cX+QDxx@Ql(m9bp$Q>>a?Vit7?!ZmW=0uXp7euEU%#_@qq)e!JKWfwz zeQF9*WD4qixu)oe)28tK@?W(%3)8utO3m5Woju~T2mSIwqOkGHA=sER5N6|x2s#^! zb2d)x`U#BSK0(fbP$KPHiDp8xA9q$|nOM@fmCBE$ww5UVfUHyQzT(Cqs&b;Qsg zl$?&+GxXg(LznpG6w{=qU}zzcp_yJ{=(SvB=rA?3q%yQ<&d|y<+t8-S6wEMmPn`4l zP376nw>NP1NR`Ohy;#sa!r7f^s_cFl1iNz%%MRR0Q^mrUa+QUPsf8t#g++4~R;Jk&HbtgjhJ|}#Z(;Atzy5o6k5RER zY^w2s!$|lt6MNZ|;W0m6FuPA}D$d)KY4m?LUMP8PyijlhY>S|*8Ivxsg~Z-6jwd2waaV2Y_waisHM;1A|IadlDQtPwX_7Ap*|`97>~vDjd#&(`GzOKI0< z&)y{3Wlm)PHovsCa5 z{9EE<+`PfhY(@B)Ey%|{nf6=e5UG!e^FGETBK5IgO7dAj9D=g z9rt}D<~T~88?zMLz?j8{oaudd*=_Q&8DrM}XpSQg@-lidX1;~1ZVY{?nI)B%iRR3# zOtZbr6q$k}iY|Ks}HfCgyjhTPQ$98A4l1+_5CHf{ax%hVZ8H=Eg zK__>&ZA7JKCG|m(?yX$4imZX=k=@Z5OeuoJl*n{rXFq>eF7$i?J(a0NnlyeAHtHwe zKxJwZ3Fvn|PHa$3xM>uFX2RfET&WF>|Bt=*j<2HV9=KXQi0T8mE42gfwo`rc`!Ms2ofK74pvv_PrP1XIcLWHmO=Yb6R+R7 z2)uIp6^$co2{?{0Vz^cca15PJBb*t)5W=hBU{Hf#ob-+H@HR_IJqM}u#UHs)bX4-< z9PZWw6J7?!&cqo(eW{=1h$X{}cnd#fz@niU0Vj)1FJ;4h#=tNg@WaxRm<5bLr@&jT z__8LMq5R;|z6TQBL(b%&1G?SzJ#_ni#~zBM%AogAZhx|FHoVLdrW*_m%rxbTC#TS9 z_&j_#sTAj+&+P9Fg$I__m2)w5WNxzTLUI5t|1GeBUM|hU| zaQY#lYjA&QgL`sd^1vvm`+il>GlgmHX*&cJuq8mOSqCljr_F~|4udqfw$AGZue18c zobXO4fA|k&;<+F^R8d@@v4`G*_a27BO`iB=!*E=O`GN2Pftg3C19S+zqh{{2BtVa- znJ^Whi?jyRP|bvC$O-vJpiVQf_q2j9_a{^pQb5S*_g$;u%L>2-%s;d=9gW)h;r$>V zKq6fTKL!!L27tB2YsDag2?K*lUqrw!6PjLx%QvvfQGl0=@$-HaaG~{iALfG@cpNOj ziwLox`>xfoh{J5B@G!l@ouciYDx*x10|V9_zl8?BHKwwZPv@( z_Je)Hqc1IJ$J1Y0==!?MgeKVQ3&%-soZw^NS;LTu$4UIOY|b1v zONs%VKBBpwF}}&XFRJ z!_A$r&wmIam?Lx&n-BK|xXy&`fDzOobfKDwGgc=|$7rxOSjE3iQ9+-B$)**U(=~hL zpN3TUPRMo!K4(HdDi3$t7ZA4?35bH5BVbIi7=J3E9n4usfbmlHQ)L(;eX8tlgX<)& z^g{z0g=S!kXARaLy%p#s7zLOFI={AlLytgA+K>hQv*H7jidfRu^WCv$yWM*2GzN9`pOS&O{YBZHKMZ zGg$eTyA%qKB!(n>v8-pfFB}Q{aMa21rZ)KMj;AJozjO)I^r)ASy5XB=oyPgq#<2rZ- z?7%I-Ab_{t;)i8F!dzfSJ76=xZF0Ns3e(gzzb$l*4YqW+E;dGr<6}1-*Q5Z~nEUW1h@cO@hmW#-m}Bk3s8wKAC+OaTquoFD9-4&SE5Q$X*>+{< zJ^0SA>BZ$>0q#Er0rVbzSb7h0J-YXfQ14-<(z}`5oG&ELz3KSQeXt<_~;VeF8@vxY&{@*ZRR z%BH<=Iu-|iCcTN(26GnPMU0JyOSHEjA3<;w+?NgTuo8Yl>QHLx{jfM6*1V?;)*rry z0rSfVL%}Q2h5Uw_6Fklq4(2%5`@&qmLgVxsD8li10aOZnIJhlC1ZCs)>l>5CyJz5l=@SSz0R#BGNh9&HTiLFM7=K^x3!8fNHz`{^7O3&VUD zKlE#LVVJAndca$=-~q=VfRV$by+r;7M^}K7zyqA z!8p(<19TZqEQx%0Ol) zKb$iB3KD%G%bDyJ1o4OcrpD0cE#SZ9yy|x-3!VX@b#Yv}nnGNqak&Q~Pgno2a%Mg> z(Q_ue#vHoRKdcU%0p16hIsI=4ZP3a36{PvlRh~29t>&N=JOqXkzK(@{BqeB)XZQ=q z@PJ~_mb&LOxLSPv`w;u(E298Rhpc=VuauOHm~0r%%Oy$F?o`k??ldi=a!1)MfLrc^C;M;5{6`8-w#0uHqUO!J8{KQ3npP3JL!Fk%?ZM&Yh1}X0b zD2?)73V?%_k8VdWECho$Ti2jl;1$P^guXw1-me1Nm!4mk4=nkkNhlLb1|L5F5M}|A+w@Iv)DCVl z-m^O1SAmV83n97#Z15InPiCyT4PF54>HI!ew}%qlrf&p0LDir}S}{`cC#^i@)k_4RVMjW zOs);dOlSGS|0qb4RKx{IAvr|J+z?bK0M|`T%);P9}=PF4d4Ujejv=!h7heR z^}Con@*4ro41z$bSYl zKF@<;4#PROxC8$mp697BhkHIa&v6=A?tgR>QBnx_sUw^R;2Z6s3-Lww<-mP`7hU1I z?%_p=eWCsOC5k$Uc0EWRj_H|j$eadi0(ED>5#M?|NO2wyP@<0qu+8D|0QGqSJqOL5 z37Z#sO)-n0J#N$CP8WTm>0*lqmzIa3#rWAY6lj8XT{L6eh0%<2B-k~;M7qHVUSHfA zI>0wS6v74`ooZV+6O2_7GuLOIN{lChUgxD!{f;8>`Trs(=FAHt_R)74X6I zp^&QJ8q@(S!DWByvW^h2WyMjcB_A3z>Co}Aw~pk9}z`*>*6`sSOfzbka`GVMLLf=Wu*4w z&J69ZErVv`DOycfcXodbqV!yK*tXI%bbqKDb&Z~ z7yL{Yj#dvGzi_Hqj$dv9en>6gr@FANJ3;5ex{iboT-W}v_@W?gU3{H^|NY`SMT-yf zS`Qb*`f!0}oMXj{4-@}8i!Yk$^x)#dv_~&KY$z_i82p?O3n6}8UB|ijP=JdMKP`(7 z^F6Tm;vm7k_^^5K%LfR9;5LS)eztgs(&9_N2rj-vi16amRdAh|1W8;4SbX)Iiw_03 z`0(?76>taj;-f0K1|>r(EI#V86o^|FA65Yu8Gc$9ANC2Rb$Kg+cYJTGt=mBZlh_&zJ1!xSqh> zqxE+S(yi;yo^D^4*7dgr))ubI+K?C1;rAdo+xWN|lHU!_ufXAQo?o@Hyxm$~*TH*Y zifMg$HDcin}ch`p0d0 z5j3goV*8~(GD_8c;L@Kn*?w`;{(bKCUme%}u(6KonbA4P(T3h0g%|YQq|lHSA+1}q zZW#_BT*PPyC)|Uvng!R=;PdQci04cgKVs~#eAL)G!4O_GA+2kUI1G0T;HAcT30;$7 z;qx@`jETU}qiq9G8UA4CjqbJfl=G+vaMx%p{PgDh79ifo2puBe2jb!ye8PS%pz-2Y zNS^|qFy>GreV&f?8bW$|F!&zC!2zaLxI!GFViNqv^L!Xl`1>xAK7^|{74>5;SJACA zh8dAddR7#hd&3M7*CPAHxQe+Xjp*!~<|+n7Vdz2e+7yqVu$00j zHKUhiyNc=~Rt5S2b`@_?nCpS@x7%X+KsOBM zbV3Wib;24(d0@)rgrEC)inxA9GF-(k?J;FqBue+DV|+x?mz6xlJKa#4?uumvQ!axv zM~9>4I5!NFD0Gin($iJc@4TdE1#xs@pAo~vVQ_vy3N@)LK7cxSim}Q5@Rp;RRG*%i zzG;=kdlWy?_Qzi5#qe&Zztr`|Ue`E2z8l&ME?URn52S&`JbcOs`Jx{3i^+YNFRGy7p!B@t`* zeAJN)Pcfl0wmOe&K281E5%Tt<7F7_lZGA?#igl3gDV9f~ru#7L+biK1R_#Q+HwweJ z1Pp&l!Wz!&cOxlK7$dw!1d3J^&gq2leW6}ptsV7kRv3=;Aqf4%u~NpN+x1e+=`_@f2TA z@Q3slyM0;7RoGyLxQh2E?lBQHLt^ISyNVS#nEpD2wsx5QIQ99Fau`n-k6{Ll;438k zwFmZ3dD3au4`+T*1cuL6`!3o~JQdqN+)q4~f^A>Z8S~zYJPGrmUTcis>VjjpE;ATv zejo=^cK6sYpn_;VD6~%nk=7-&56q1;Opl;(*;yUSI#CJ7BC;#?e|-pH-VVSSK0X~s zFsjF@!GXe!(i_m6xeOLO#Vg6!tFv6OXO2Q!JVj5rNxINXgpDpm_#(DKgv?XbfURLnc@ke)uh>7tRQ-U zsE1fXG|ASu|1!~AY$WK!+G=ylH_<{QDOnBq|Nn)1x zjbz`FY#!58uo58(#h)arO0)pn9c;q~RQgk*98n(STP~^-9ZbV~t3*8_56btPz+aAd zi(f~hY@KLMw512q3nG*#hBViUwnXdVP__Y%(3o!}(TgII=vON5B@s*H)fP3kh$Nx~ zZIE7uvpUSTpEP%fK12(Nc8lReuZ=>@eIlP|F!l92ViHkvs>=Z}hp0Ev`(hqZSE3{0 zDWX2vXyvF_LNtFe(lN1|XfoOSP^=>Qjz;NQTN;5x z-=(0ewNZ=cUMf->qdw6!((GV#me|^7sI?JBJjq_A*^|Mvm?+ywBUvS~+1=<#R1;d1 zX!J1p5xq#`(90MiaX&juE48mNnq-@y^wCCNV+_$ousOx(XG|mtqBit5rV#x#1nW86 zm@nr*YpX|m+#6P$v6y5(j{mr~C+rzZiROX~z7sc=5$#F(xc7Qvw6UCMC1|cU#u{sg zUUNmtGhQIt2Km+-`!GAIHlo~R+wUZWe;<&8-wD>4R>?0!y_LDkJ7 zV-VH4`lug!MTq^zFeU4Fi(7Ek#{_LCf|G^_*pWvn33Qt1fH9iL)m^|I^}aEd=%xqK z5hIUietD$h#(1J+xO}uhd}2(nl<>JR$wFt0sigTAS^3hKK?LuahkTceSwwI<3(z;l zY$A6!3)&z`jJZTt;RI}h_}Q38bdcybqmbwavU1;elBl~UYD#kfQD&YBnyZLrQF-mn=ZNl6%_7aU zM2)BoG3N6`%PC)yxt<7KvkW#f%#B1gs#%V?iD(+tEZ5vjw315bZEhuUr<(OQUm>bW z<1pCVMl_Df8*aW%lt3knF?SHXK_!eccM|O+n^VkPL|>DYS>_%hIAw*J6_|U8GRfuw zb01LyvboqSA}S!8&zkQN1(3~E<^iIosXy162Z@?fzic!Q6Ro56y<#3EdX`GqZXP50 zl&tJBj}r~1^7ff0h|;K@hs;li_EElL<|(2lN%Ld#GoqHHdD=Wp)P!c%S@R2`*Juu2 zHqR3MM0NSbJV#_B&F{<$L@E zyN|p<1XtOicdN?ph#FG~wPguWH?rA4{z$Zy%4;l3iPFhRbNLGq+%f`I!sKnDK$=+* z@;9OqSj8Jeg1kfI0;l~OM5???w4KV!miLIhrylGf?-R|Z68cL4heL1iKK0-TX%da0 zQ5i24(O9xFMY^w z%`H|g%a#@^SCGI;IjC8L_*#Y%HKu&mWE&T7OW>>x&J&DpWm}THMs5FAb|5-UBX(0p z5Dlcc`-6-ms!cY3mYs>(P|a@17$P4Uqu*p4(HiQBdosaNGZ&RavZqPYU8NDVqS;eP zWe|Z$=+CMui>M~a>Zu%ym0;DCWExh`3=*A9=8S+l>Q@Cb!(P`H%BQxq0a zxD`TI*K3txWVhKDh6lFkHv1TbyC{4CLPJa$T@%9n1M5OqabOb&XSZn%;hN|e*-*$F zAHRm;YWvo08j9`-?I1m|TWp&;;(U)pi1!$i#_>Ah$j~f^Hy@bA>4rErI0pQP3;i+7 z&F|GFYxc$NSo4`Rqh!wPkK%3=6I>wHK0n3`#jQnv<%^C)~ZJPqnItm|Y5|Ee?t!ar-w!*~x2EA^b`$opC1 z6OgM<-zOX?eMd`zvd$ zh44bd^$;$rgXx8>Fx*06VUtaezP;8sxM6NArOa=>1yU~7MV)kt|4#A9dZ=?a1k*=0 z!cbeg&~O{*KUm@$n9>w=?ge8VbUds%rW7{8v9LAY1L+IvId!znK6S8^zV$KJ<2B!d z@XwH=5MFH=CF_V;LqCG?tisDV);+?Obbi9>RBn zzJ~D2CO05F(j3#L*1`1A4S$4iPt98pcB3A+7mRlPqTYL@&K*ae2WH-Z-Y#u};di4j zY#xhYRLmXFU()z52;Zu0gc)LZGmN)u5sKLK=>*3-dhy9(}?RnKS7q;Q~#f*nf7?I zDA2#%04?05zP;8A<2UMIc(f&kb!bc@DSVrxf0MK=*{@CGsC%PRNCH?}MzxKka5#mz zq`9+EDoCyMKTjp<`UjEC4b8BZes7FDaFoWhN&~bRLgAc76mN*(JCt&xo--wpQU(TL zimrbEl^aH-=vh%n{k*JB7U+D}s2hZhgPgnEy4DK`nvR1|uQI)^e{F*E?Q7b3)&}8B(CK@d;4IbUhBU*u z@k>Jtb?H;X)?8xiIWOGin@#dMA99;>Rf57d#DeCDP3QGh`0L^%}X_@^OgY zuX7q|5?C8cncr{$q^xR$>3&V04wK@8VOamEv_B*_Tm|tZjn_fAtj=Z#;n^l(_9Icn zh|SP%KeWa$iNa_KKWKv~mnocC1LG|yy?hUhH_gUyhn7yjc>4|*zLJ4q3dJ)*G5%-t z<}lb-YvI0{-E0TMAFqk=p)EH-crFCvUj||LM|})Y3O!7thHJmu?DYvaI^CPT4K;7y z3fmY0yR;!PD8zJa!4T_cHC59)E$tyLv^)7W$DO<~t;!12w`ZFk1UpZMd;sBA3a`@6 zbGIgr%h5Wm!G6P#kHPXMweaY$zR5sHZy3@M?g{?9(J9Dvih90fZPb5@;*Zyy3Z>}z zP^V=DUqb}dLw%iVb3@deO!i+$Is>=&#E&=!b`EzQ=T~1m(FMzTr|D%#NgjI*!V!bN zcZ|_=+fUFBvnia?592G7Ff8tf;g91m^cnvXSnz9h8^X_FN3A1TLapk6|MLe}Yg`LU z@7Lfbi2q*qHp~#0d>=nUB*5Nch$pH3Gn)Pd(w5a#TPdFIa=_Oma72>G zH#kfyMfcM1+7lo>fqHcf^`}YWxF7t4F0=Q8Po>20oIzprMce#FZC%AXG|zF)KRDZQ zEp(gx8t6lxbP0xXTlK{we)BM#IXGv+#EX?$w)KNMVZy*p|Acxbd}kAy4B_fd;JJzL zF42&_xL+*j?{-Or_`~V&M&A_Y>V+}5P#elX|eVg)uAKQ zCv_qm1w`8z@CL}ZF6;-a$t;V7|7tJ&bBX`6x;^tydpptSV=G)m>kinH zM-p-6?snN^srg&nB3Dt`5q0e2a@3-8#-U@Eeq)i|VkufS;oC?1XjX!F&v>+{XO2B@ z1B*^L#I^J~tTJcm85W%(tb_KaTGF3# zfzzFJzGsn^Yww&Vfe^R%Nn=iT6`lG{gISF=htY}CGp(aVGsB^&bw2GjtUb2HX3=@# z0UeaCu}HT&qan5r9>DtCvec(s z2l!Syx+a9x^BX{@XNca->|-4Q>Godj?9j1GyIQ0p98&v=o?($b?U1_lc@NrhagyHC zwpeujdn?P{1I`&@?H~Jmb4snV@jXYaBF5wT)vMUvx>J_A*-ODbwA#PwuyBg@0X_Qm znO17C@V7(LZr`V)vu_(gT=)N54m(&@2a8UIL+8OU8fej(2=NfIP_>$KPpJEV&8Pkc z`dCkGO_%cEo@1@;OQ5NxTGQU@{g%?tICLIt(G81^vu7T(V=e2Sc2_ter=VxG+r_%a z+Q-p3AFQMKC)Wpac}6%#rz*sqEp-+C(4VLiWYKZXG~Je>p*W-Lt+viOr>1)v?#6GA z9OvgMTCnHvC`}wqr>3iLA^i#-Z6mNI2jRBH1|E@?`h+-+2vb|@+I}14Y|(>KSFv>v zdeOUGtUCW2_0)B9mYV=IYz}MRRm8+&sC(5t&3;UTc4gwZ)ozzwmbPFnyC(LSwxHLV zw)0Q9Y>;bytPhnk72-cto=JT**J2rUw4KHMP$y^-)}(*J6QsH7KhWIxZ#A>p!<9X- z`R_FYx%4;x(Wb6p|AfQ;D7CiYPx3?hCw%gcnsz&v|50kSWABac%V_=yJ%e^|qy#)Y z@>@3-2&Z}AifiCu?YDBBv?koQm!bO~rPoGzL;AM-KnT|b*5sAqDi)5kuNt_c%d87h z`_U)(A2qwfIh3pD2mX&Ca$Gt<9d^4!LD;}USn?)AT(?V?W!KLJ&F|d1Q?4x?(9iGP z$xrwi10X!5#zL-Zm8W#dnZ0~O3|u#Uox+bOJPYS9s6P`l-!tZdW()GHu7^DZ@#_hA zp7NX9vyiv`NUgaNG=C<|>tSmxIvXHvZ=>$3%~T(2{r`2kb5<|z_bOPkb=d)7`TV^Q zo=(^g;l%6@Ahefq0^(cX?9Wwvo}J$kdu$4X4LrVhNT*f8W$0V2bKE@?&OvII+Y5DT zP2p~rD-dtsakCTl!!2mtNO1?k!w@>ll98_B-GP-Md_N+TR$>LP^OZZ!6Q6P;;LN2p zg}YrQ!t;JW}r1bB>wA6-wQ@IifNDU16#?f>G5v*LU?Y~z6PSbuv< z{h>bAvd})xQp|hL9do%*t`p^~xn6IHEo~SH!EnjKyu8^vBa+&HkKhjAr`@IlZ%^^GJw>z?igBJLF5?R|piB+ye)^$)7 zpoR{rTJ=t369=6LaF1&0pvr#!QNa$n?cXk{g@Y~twRVtEwOv%0gRTU$i=tbyA?2vc zA3kYO_IT`bH0N z&}OLTa0kt(k{|7)@W8_8Q4X1}|Jvx$4tmaKSG3JR1AIS<9_OGI{vSod&Gz(n)MZ-0 zjp(TkY7n?9db)$|SCKI@9ki^9U(9R=wS+dzboFS~bhqj+F)upk z_w0pYlby1n@!*e!NVmkn8=v9CBN zxoT?cYYysf8y366L0NvYV&AmTbFq6I^m67~v2R=GWNeXxf_!hp;_n*p@2Ja-4l3@T z2B2dC1(BhLfpp=@*H0n_lbk1`Yek(>7ZS$ z*T$W4(Ds1D3ZFWth$xKq)TsL@c{e65;q{8f=k^o+wkMh??Eslf?8#&8EkB={Srn2Lv_B~&wf=@3{b_GFDpsA+T~ngcyC zJE4v-mZ$()yC9*Sv6!gX!1WhotYpnI<5wg!HnuU{tomX?Q{#?<-b@HKQi8G8+GdC` zf~j-=V+k#cc|^qq9_?EhUlJ9HC0U;(gc>C*!()G#5!p<)eNWam3GIw7M8yVr0_~0M zEIXd{TSA0!jAeLSi86vibiSyea^rWF?aREIxWaHJXAbHD9@$DGg{V**Zs(S?(#T~Q`e!SRS6TL1T;-(I z#sQY0x3O{o`dO;hE;Y{dtZ8TnG&1T~!CvG(MvJ8E&jmDoWTShW>a!-p5^vE_Ey@(3M zlNmjdHW_&=L(g%u@g~c*#H~x*Y#d-2dXAe7*ksYQY208LdWSoW*5rN{itIk`B)w_G5)~WhEABFOF`=*cwo!*%bC^AY zKT3Mn=)knl^AfCyG2 z_?Vv$4fH=R z7+YAjXi|gZi^g7-q5pZwC>N#k1%$RuzGBoSDmKs?{o0tvvZkGqlZ%bDEJH8$JL7kj zo$5L$`3J+hvw**11O3)gV**j3xZX86`L?l$W$4A;F)p(#XXxbQyT)ynp-+3yNQg!& zg<|HUw#oO6-bBR)da=UX!m?#!k0%=DUY4OxYnp$utXsM2|Yi z938K%9IbLNrkVK_QK9%K^~dB^<}C-gr?fT8CumLduREGGh^`vv!K3bEHX)iLT8yff z(#dQ`gvaS7DUs$PmQ5cHS1ip#MEa;5W1g_&i#0D09To`#;g^=?`a~@6u=paZO-h{U zo{Tg{yp6*}k?`j4!p$DI9KEZ?@d@pkq6MFD{&09?9vkx#; zhPIOB_gw5?vmevTnI~h1nR!g;!H+aQVnPpojCp|xJ@`DcZKk$@9(=x;$b=sJBy%Yf zdhnCYO?DZ0@Kem6n9zftYSOEYpa)-RJve2W*(D2Y&Jow!O-Pwxo*)9h2fX{4rhm3B z554w}9@o;D8?9Tlr%a=n(A0bMcQ3URah!IULtF4M_MNaLBN z*F;*xR3#hf9#fO#qd?WWQR&bISNKg>eWImeef)8d&1PB}e=6k}^Rz?rO3G667E!Us ztiB~F%gjHSmiH|MQr*#JvB!>{B`M2IFQ$_{OM$8|{RpxZW(}tDy-IrO4$X?G&zmnfG<|_yw`jg#?qS)aq+G8T%y*gQ zCV7h&%nz6jv@S_mZ=Pg2-nta%EK~0qfvFqJD@?;`)B?JxiR!Y^{F!B;nGI4mntw1w zWHtdZd+HYL2+#F;(ez|`JKP(7)90g!tZXu?vCMmNuGc2B9#j3v-eQv(%#;GMm&{P6 zJ|KI^j9_x_-y(Ih8OKzm|8L%#&2*;bHEVfoF}pE!uDQD67PBAIut~XITg_oi<0pBG zt!5t6sMwN}m(7`)sGcvIkF)HCEj0CI^C_k~w)Q|PnEsB)^?Jp8p2@3|w|K?e!n7Ik zy=rb}+6VbwHTN=QbjtPGW*%Vb0r|F>A2PL!uI2Tb`6*MU=+zZpGtV(i8Jp|%y7@KJ z9QXm$>*n`NTf63ZZ8vW*?d<9;www1fQHyq%s+V(&c9>pFI7U0nDoml7om1a1YcNG* zCIB_mL{@g1AuPjrw$lt_!g;pSjAX)j_NJM@g!Al8Gn1)zjr7!AW-imP8eM<}XrdB! zn^{$!2)TrI+itn1enf&8QQrvhoF!Zcu_ zw>W6-&_v}OGWQY{xF_Z>OFd-bukP(T^dU1?lX$J#^B_CspqEk)o8EnO4<7G(-Z)|g zFkyK|%-T$2yVe2!=ydvXZu|D;_nYH9^hZNd3UfBU&LU zw%eC_+?>YLchbJp6XrakLiYyYhf_Z>7csRCKL)g%X-{0P*GY37)8RPy&8oSX=_in# zGGAwMiT4(#%(s}L$CadfYQD#mHLeus7*qJjk5fN0PcbEpJOlI<)1qFNQa?AZGOg{ z8ckICMe{|LZRk@k?V|ZA(~dqZ#6@!#)9p4vX_w3*CJ`0_bVL(bxom#SvVvjt(k`24 zn3fJ}AugMjm|}CgsH`lh2k5t6;t{U1E>SjW{`br#xNZP*|%n@ zCMu!W?8377xmjt&W^bmYx!r+=Fs*M>l5*V~!?d+cDbOUQ3cdTL-7se{)$Bb8=n1BI zAiHTk&9oe3H_cT{Ukn(L_MN$&sboMN(929Ay{DvoZ@$44)B7=?eN4F^D=`l;jRjeW z`4Q9g-u2RcFh6Jdy>|=ogLy#{wf0Bz8_D|+tOnB7( z$#fkc;IGi#Jufu1)U3c1nAaZ2UlWz^vssH}KjbeIKbwu1e$O|6S}@_b|6;ad!g2q_ z?5v5b+%l6`Wu{H zW2QDx3BQ^1SaxW1-?ZP%MNFTK9t5Uuv&_3=Ny;5_ z4^!igr9kglH2*L^VA(T0o=yA1JjwK8k5xctEt+@DD=fo(_pW(^3HRN*=Fd!Mt)I%OxfAq!j!9-@VF`E1|~dCOZf`Z)WBRXC3iB-3G^09zQgo- zelGlIS3k|C(0xz7H~cL41k1im&h>JYr zxXa&|L`o^p-Y1v#3@1^lcE zaw5}rBT7;#%9%`VP_v4%kZB9#^OlR5il78Cbf$1=`wvyb+v_HF+S7o__ z=~(vaik0Qtny6+z@_m-!e(fVaWWxR0M}B6}^p)pW_S2}mRA2cu)8C`cruoY6nfAiE zts-wRorZN=Mc!kI2AQ8!gY_8o1(}~L&om8W{;~?wYLNNMnoMV*eF3r|(`{&9fNZXb z+E7)tWm$Oc<+Q3Yk|{0sTcAXXW}wVu8Lr|$nahN$I8Y8?!o8rH9KnQpK{Yv^sT0(t zy2NLS;O?CXb*U~3m~i#ikPDe`_1BQgG*LZk%C#)p(YYk0rrgA|uX8ETYZlE~ayQE! z8?jK-lKYt!j4*(XGL7t;>s4ER!Ze|;x2P?@)I{agk(XI!gY)S+@;cKDIG?T~OD&pp zEE5#7qzF!m0rqz`mOf}#PrJk(B)Fkn2T0I%a^mo_1)cUe6lSj9+Y4v4O zriCeasSRXnrsq=5rZtcqnN)IKYC{>z`$f*xnnn#k3fsPv|C1Iut{ zXewW3!kwY1+{v^E=0vdE$MihRiC}q%X^E{QrJ4MQX^pKE=rj|0qapGF6MCZ|@>@+* zdUN>$%UZ%wySe<8DISj6&E(@JQLQXo!rcXb!jKJYofY@%ePn-T%#luuoCOBgN%4FI#phJ43%w;+v4%S`VqKVW*MYi4@1Jj?V-^m!vj?ihjjR)}5EUDIRa=uvhW zkRB_Gh;$p`_?pjJ#c zvr=SxCY)I*GKQ(~uw1WHnZgt`%p0DF(uGNa_mn1kGkJmclqQET;hayGW0-Kxr^`u9 z4Z=T2%aF5}T8EzmdO{P;iA?!4%bpmsP-M!LOwW#iXA#KtOn1gD6j^dBlQG@^dV?uA zZ=uMRZ!@)lhm>T?gPN#>9C@5&DbXb5rIFAU`G#*ju~HnoQMUZ|yD{F?kLho}Me4 zGc_2R2h@(KZDL7E4;jVOIk6NdNfVXcQ)aR3)Yz%%J!KE33u9*i4P-(Ox0f8rgdT1$ znXieg^p?{dn$;@zmIV&YdFj37BBsq9&KrH?GNxS}Ci(P{>ok#-zVaoO4Ghio>MLJk z8Xf8_`pP{_Nofny`^k5idZaxA^noU_(qEor*<0PKRqijpWIEh^UV49dg=yD-Rp|rd z4W=UlHUj<36b^pRK=}t#8u&c}r8!oQ(f*Xz(g#UTrq5E|1oC0p&}U!zU|Ef6N1ww$ z^@)xe(P8J|*>Z=8=7>6dPo@u%ziLgOT3$n?vQY`*c=DO_p>nN*uA~o>JD3h7Ur!${ zqw-Mm84*9|m-G>GD^a01lX;*abjEOR8qL%H79-c8t zE+Nu;&t$nullzWvTgGI$p6TuIi9jzi-OinnF-5+?HA9Ojp?$4>2{_08Pnyjny7>s@-LPd6I!Is zkS>$3MTPFZ6JE)fAuBL#9eduGDgBs=#?H@}DQhvk(d)c1OEzLU&})9iEZKr-V*GjI zG1-o3Ui|!w$7E+Ftl4at#Dq1QEwhOV#HIL!Vvd|agh!d38FS>e$y76{b%ETa$-N5f zrUkNysXpwc1@Z{fH8^jaCqHJw^Tv7d3r%F@ae0Yly$2r7cw81UO&ItIP$?0X{#8by zOr35Y>2EWhkZYN0q?DLX%ELr@+~>;^n%s*gR;xT;o@V-W;=J_v@*>j>INC3e-!k3n zJIQB({E^AK-+5!9{Eex8zezp|<=>j9){CV33|*H+14}X%$r7SMcWlE`@-`E;;VCI* zqUKS7t8ua1MuhYFPR3%HHd|YX@8p)bMD}Ld744h(tSogR-R?rJGfEiT6u-(!@dN^(Y2UTN2HA({V*9#cgB;3~GwNNxjdCng-%(*=qnxZsH0T+V z`J$YsiAs1;E@I6dt>K$qxs2&%|0K{{%lU5iuLZI#MEI?G7RXMrX3nVlVzc~`sqd&a zfUanw61K=2ESsO(J9CRHWm=j$5aF%>CbC-jnd|%1jYp3#a!}espCH^ku?&z9;K5VZQfdZzjxlKt98Szd(3jt|giWJ<%lPeW@PD z0*ej23;&2rB$^|}hfVT1A~&%N@5w*Pbvf*UcUCzG@4EUxUMJ1N#upK*D}Ep=6>6Jb z!0!!@$=XD7;Hj$xDaT|eQK9<}L-%JMmmQhr=jM7Hm$6J+!8<%IQ#C<74}sw7PdlE}OBGAfJS&OLH1LyA7vMCeJYj}nt6V9ct=ax6VA`?WWU;@#=7G+o4%f9jy>8=^U4_NZ^Os;hQSQ$7QKiB(h0Bbp=DjJlguOMR(j9@tBD)J-Pr zr8??oChVm;>Mj%ZQe9;((RIOIs;kN|VK3EFK1|q4^;C7DLU%mM)K~SH@F-JXHDgWe z!3L@g6ZT*O)rkpvu%U`)!X9j>GMKOj8>#M0*n^E!eNHV-JD$I%s|!SP-SPZAU46?kJb%wnKQQ6>dxrXr3D4g% z)qN&Bf6r8I%dxxycf4MZr7AMv^@1!Fpb2`(Rb;C$O=3jav)S2d0?{FPuhn@YM|D|^ zR_2Ml!r6Y{-^tEZM~QT6d#Gd#mM4*Hb>t?xQv_ zecJt8c3<@-(}=Wd+5OZZCOkjtuTC-HwS@la8wdGj3{ba;@b21@?13tC9o2=-xrV4* zCOqdFq6QNkGO?G2s`VR4llpV0+Di0Hz>hudXAf1o9*`9g6^JgTnKM)!w#bI56D)hl z3^9kPI~LgpB{pIS1#tIlh&e*FAi8Qy$%psUs1l~f!W#qKv&crPD=%Wcs|LzOt5PP+ zH%4vSL`&OO`H0Jr~r--o;fznqszA5Ss6Xu($ zZf|$WrYg0=X>*!7z=SrZsZ$o&bR~8=^G#RYOlWh4s{W=^HbVt7p=_oK+U1nZRPC5h zHcRF0cFJa{*-R*VOby@Tls%@VFrjR=N`1>Io2_~?p=^!{*z1(dQ9(>7o2%U4cFN|e z049{dbKv(mWd+Kc31#!t35#r=x?qt#u6DfR%=frDz=Zh<)r=yitWYgtLfI24alcdc zgvw?>X}=P^XzN-$J$IfK#?mt!F~nBDMB? zr)-hh#)Pt`)Utz4*;8s06Ur8=DTkc0#p+2Wls&EH9d^o|R?C=BwnSwfamtpc{!A!) zMpZxRls%(@nNaqu^7_CjdsbCvLfKMv)*@S~Zdhc?)Tv|6e9P1oCd{{7B_4OmmaAMQ zl&w&~A30?!R7WP1tyJD8oU)awHWSKLDX)*6vQ?@&6UtVrE}uAMtJPp8ls%`~opj2c zQ;AF{TcfI~}IU?!BURlc7(WouP^CX}sHS1hu1s?;KTUX^_2%=f&y$AtM_P^Uh3 z%3e@cm{7J}?LF<3tyjmGP_{wsIOCLUPzRV$wo%>w!YSLR)R&r2_M&Qc)+u{YB{HFG zlM4OHDchuCnNaqUs(#KXdr1W|p=`7AJ@1rlR`r=swng2u$hIi23tAIpTb27oXTGf} zfC*(Us}hUsWp&RYdqwTNvOq1=nLCdziI zpzF?jJ5@U-l)b4A-*C#_RHvCxwoC20>6GnKhnY~eTiy8HDch~?FrjRZO8vnp+oO6j zq3kVn_(!MgEp?g+WqVaXsZ+LB1u>!QZ8hU(r|fODhzVu;)Qn%8vVCe16UyFECvG`q z@2Cq*C@WGYZaZZ~>H-tW_Nx}ZIc57*6cftcRd;@O%HCD(cQm2wJ>~s}Q}&*!Nu>Rk z1F9iWff(W9mvcaMWZG*cRye30vuGYvPda1`at!g4!XXvJgry%=UiY1{ z!zz$S`%*_#Ln2+5BPxWb0Nx=RoO48lGJU1mKetm%cV$Gf|kvSi!=6_?0ba^LK2O`~u z6Do$N0A5+TEBl1%YLR`c`aD2GSQBl2tk9yQGq;1{6Q-lambR08PB~~}+xVPM9ki-# zcFt+FimYgl^NczHZv(V@#%I(8CLD(^l(*@WeW7YIq3lcbjYamQ`h`fh=&ZU+Q~>Ww z>ydL79-oX>wCpQ|&v`-*{)Ray=PL#8p`y~!<~fz=;wd%C-^UB-ZDLb!f66yZD zpqdcr5-zA#L2znxmeJmDNlB+yO>*XS#_hSPCjE0RyM455)d?Pf zDX9}N*XS{iies(X#yl*&HBRS3Y0v&xL;NKY+=Klu(&4=kW4yf$abPm$y$PBUo|uez zb?FNz@4!4ve{>4=fZr&q&ci8K2P_Ng(=*;)PkYMsu!mDR^~IFdaoQ&4{j{4?N4E&; zY_HYaXe~wij}3Lk?LCQ_&w`GEC&TKRI77ctn5z@@xo$=44ybt~(c2r|q)c`G*HX7W zSmMP=PMbPc#Q2B%;S`l(ZI{-pI}tTQKx%K%Tb4Ocm*QGlwVHEu9+i%o_W5Itmv+?Y zSW4RzY_&7RJ`?;cc~hxYMbMx2TDhm8g||myN_FZPYl?1*HKjVtF8f^i*Xhln_plVy zkAWHD0?*CF8tPn+lIjxs@r*+KcL!qFG};+zouEnB!~GMSZTa6y$!h=aEtl2#v%|x= z%BBRCsdL$s{t4L9vSE4#rt5I(XpFCEgC$O)U9N~y%7*Vppr#JT=c9f-XdOK7zBR`2 zzHiB8IaA;lJeE2<9*X+ev|6jsD9o*ic~M`I1;rNJaxlFF>^p3hsi$@Q>NftlU+JR*-sAkRH9Wpp)9n@>_O%|B{wQziU;A4B6RFih(<5s=>&Y2` zHP`1pTB^h6t6|$8OU4kr2pyUt9Q-0fd=!ZDXBz3CpJP&rAx1fJ*}V>(^1tQp{U>(H z`g>(l%KCd{Q_A{#WmB{dP&WLjGWN;*SnR9)i5OaaLVRqmA#PSeo##7Yd>!>?cksa^ zJbzpW1W6pU*V_+KWBzfRxGVC3^gZ#HzGNuthKT!)^ql57GLN(%^&RrU8d{3`uM1i*CU7F zwK!W3JR+}vYdin-mg03G^Z#M*&%>jr(l>7WsjBYIN;VSK0EvVp5SD}>pn*vUh|wTR z0*GwgBn%CsM&ZqA@=c%VoojP^u)T!!fnRbPWa4%cw-J{NpY3}`Y1>n(S{6UgvVKvA5K>ODdUuoZ%tKN#WBQowOacQ z&eXlknYte`RBQhnwEA-YfA#(s6ECp-s@=P_>f&t^Yt z@|Llx9;!Jb{SS^*&1kKA?@Mvrq052!s@}{a!Yqjy`AC+^{g`WMt?%N<*`NEd7t~yY zqJQrHXZe3e4SbB&(saG^9@}2)?fRA10;>J!a&W0?31(Y5VO}Hf*i0o`Tbv7&zd5hl za_(05K2*z8xlLDLt=DC0vyY8sKh`?eT(8O2_SV`wcJ3Nsl>!Np2nm*GqylLtgQbJa z#69BzsYJS7-q)_j=S?W)UGk{hjkF5s9;Ew_?nhdK^iQOx+42ahdkTxMbiS!iGW~41h|3Z2i=^3Q0NY5fYhqMi8JJRz=FCe{$ zv;*lSq?eI)BJDzY1?g2J4^kb{Ye>71_8{#=dL8Kvq&JcFA-#q4Hc~y(J4o*$y@&KZ z(te~5kUm5@fOHV)BczX!K0!K!^eNJ3NQaR=NBRQkOC&E+1JYMWN07cj`WERV(kY~0 zkj^0ehSZ4k2hyKNe<5kwqu59Po~}tGXp_!huq1*Jl1z>uGsrA*5;>i8kOkyoFa|ZP zmOTdABvSkL^ot~m&kkqtxnKt@HYorjq_eJcA~;yGz>B2-yhs*<5wZ!y)2xPKHJK~w z*Gj4w`BqpWB$rxa%vJQ!wDM_pVXMB&yC2`cQ_F4z-Dq`Nx^9(x_`fFmjKT$PqD>mZ zzL!E#-$1CqQ`k{jg$yf;1)m+)Pg_QNEZ2C*I5xjX%V4Q;Wn)%_7E1+g;U}!?F)a~#ixy5=tXq$M%pApC!=_ze2#Ot042 zqPC^L*f#nbEmzdrcsnUS~AXD9u)ajP>dw`CsJ@q1?2>U#X@^gyGYzd~4#-Xa}Z{esvY*2W%| z;Q)OO(B}Ys4)Avs576^4;~b{{Vfr6s?H#B6IPJ%2KS_Hd?TxfI(r(ezUI^7xc|tX{ z7eY0)7ous8r9GDRSlSb4Poh1E_9WU&DYIPJ%2KTi8e+8b$aq`i@Li_ZGjS^qlgUuXT( z5=~1qEwS`Wpgn>11lp5mPo+JT_Eg%_Xi1|bjg~R=%%(k?_H5d7X`e~^OxkDCo=+Q-nI&Au^|eZnEMhdm*O*dDTty6HcJb|>up7rh3{r8x&m1GUM+DG->V|h z*N=HE^j6ErD|&|qSsq$)argn$(ll@(-gR*pWw;AxG4fe9UvCmxolTCi{*M}4vhLC*!E<%^Bz`Eb0s%YpI)F9+6;KU-YNcSyanhtcByP z4vV#2cmqa~Mb%^~sm{onq|tv2{m&RXN4+1h&(b~OlZgG6?onSvWHUF{mwSK4FA;~Z z#t1oJd^==t8rDV)*Sn1|w{g8YEovmQhpea1 z0cutA8urKoOWufFtbMj{SJYuz4l`OI^j+Ffu0_?xlJ=^umbE`_QGLQu`mD03qx&dh z9_4yZa=jps8v})t&jE2G#V^dj~E_(%ra)! znCJ$}^`nPJufB3Zp|Y`YMk;q^t4OPZrPU*YMV2Rfh?*M_cd8^+YFF z)d(%gs(PVg`h-zGMjzAPA9;D$T4_J->d>Fi1OF0z23zzRa$mgS&u9&vO20MI8goo9 zUl1CTYE?aO8tr4OUtcyRCdisFIWHy>mg1OftJ?Nsx;|t%Jk{D$t-BXJ9~$qAbJN8u z5$A3&3FW^_%cW0}91QqVl4M~J`dF*#<#Mg6^={*MZyQIRGp*_@Fw?4frXX2 zR`r{(6;}28uoYG{-djfdGTN8XzRaqAsdgE2SF$84S(25ESz}e-2d=TIZ~oR;ukE$C zLya}7hvJ^z=|&CrV~uq|Tm>xS;xb`*uzMA>o~&|rU6gJ_8mCfkfJJ??H_{j}RK?+U zuZ=75P23u*`lfJ=RedKonOnWs7*N_BxCYG9o06da-dwSM(L=onGm%*cgpoYmCqS2-@l@`C{aO4jC4E;CCI?A=*}P z7`gae9ETwzBEY{Yl>Q(CzqV@}qt=j{%?Rq~j*w8ccGVBy+brCVo2}~j%BMZlJo>Dv z*V<-Py;eRgJ89WTODK<^J=}vqmOd4?bquu}ny(?UI+p8cPvVh&fch}G&-k?B&5r8) z`$I={JVxNV3j0T&>bRO^SZ!6k%~7u9DA#hF_Qg1ZBz8J!RaX;@JUT44n^UjQLv7Bh zwss1&u`S6BQ|miL+aB%KBeX*9?Di$}4qhuMp9)bv6{5aJ7;96W3G_^$&oWWp9Jgr7 zonKnMThvdZy7c zjh@@+IfkB_={bg;o9Vfko}1}8lb+f1%%^8IJ@e_APtSaM9y0bVE!A^vjTt>cb8YHf zDivIICYLSbvNO4CA(t)WvV~kWm!A3b%%*2PJ+tYVP0wt4?xANPJ$KTxke)l~xs#qd z>A6u?HC#c@b-Jpz3VN>7RlTj#RlTj#)jrzDn9EF0#$0B4GUhtQT*sIP=(&=f_4Hgx z&w6^+)3ctQN9kEZ&%^Yrq32;58OoTUjJb^E+)2-s zjJcDZD;aYoW3FV(F^su~o@tD^hn{JSnZ}rDjG0T%dU|Hlv!0&W^vtGbHa+v{d4QfX z>3M*jGwC^#o-^rLLC?eVETrdQdKS{Nke-F~TuIO4^jt>I#nM$eP1`9^xC z(zB7Csq{>xXDU5wSWA`w)ibPSEm;Co&#;=cw3@ZFnzfWb&ro{C(leBvvGk0kXDmIV z=^0JWPB-(Z*YsrHn`?Tq?>)}G_c;4r zi=q0Ene=RA%$f9TWXwj!Y-G&ET4u>jz15g-RqtpnmCvO@4b}7HbE!~6^*o`5>Uly9 z)$<%>NebzCm?bHs=V6xQFiUcnB}rh+3VOyeW(7TC88enKV;M7*p3CT&M9*dPOrmEJ zJ(K9UGC-Y)RtBhR>M>Ter8QithW@Jq)W~Obz@2l_KsEQZEil~HwUO~+#H~`aU0`oW1MY_vn}9>yt&3UM%cy(V_4>$jGV?Y?_{(z zmN|`OPGgxhEqly~#Oc=91t$|DE!$>)5uvV&8xyl}#xIQ4^v6e7`kj&bg~9!{;;4!2 zw?k7$;%3I&q3u|NSzJxMb8IssZ)W7pjJzj6y|-waQNM6mzj|!x-Te-*JO@~k!^p+^ zj{?+K^e8=#lPAeW(h{g5gpy~lXSXKp=h_ePnBC8{XB(f-_9X4Y^-+D&As)YnaQxcj z5RcymdN$DBK)dahWP z7&A3cwU$)Al_o7vo!`eWes~X(tN8b58hsi_lvC+ed&&YosFL3whhb;#_TBf!4B3JFNeE8hmuaG{4%$><-Gdc2~X;tko5^KTUH>MBiKPVnLc~EC#d(rSg zRn~|uqXt!QEz1~TnHe7~YDxQeqaimB{!4RWWECtnytn<;+=YWy(!YlOHS~`(EEucD z8&BolJ!q}<4*dE;Eh9u4bw&3N+5{aTt65|Fj1RAPZxH4m@ZOwAUm5O<{&~x5u|#>P2Kuy(T5Ot`g>a!hmh{R}WEuEpG@J(yw zA5VKP*rOzomI35YawItxjKUo@#qqREBBy{MGF=NC8X^uYa%hw|=~KYmBIZ`oUPb$I z+N(i4DXgiQyn~iih%n+EGW6-9TM>>8iAe)XCICsYg<0&~q#;<7t^h%M@B> z(c++XLPy~aq>8zi_Dbq1+LuEI%B|$1nBgPV;>;4{WlaGNm$e9^FjI}Io3F&2V*j1q7!qrGWVpdR*7*Be!^zi-?C%YIr8 z7%QL;Qh#Fn1G$H&4;y#D{yDYRxCi#5#+uX+`Pzsa8YurZ)*<&8bB`Of&?l&WG#-QJ zPt+%kr(i!tecE^i_C{knBK*M!VtEO+Or#~r@)L3gP!A_8b?x(C9_aA zUB+8kd$dfaWfm+}$+!N3HsG|XzOjJ0i^)p*RB@?lT5hK0R#-wXic$Xe!5$*(scWe> zQE#FD4stKKpZpw*k_Pf?@)+$WsDC0)k!NWC0}K((rut{AP1R};7$WUp36u!vD2b#! z+NSnq40R`)+841lwJ*BS5@%D#dpvc5O&#@pZE7zh(vnP$AV-oJ

r`=^*pT1zcAF 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