From 4430f922360640ed45ccb5f4aeb720de91e44ab0 Mon Sep 17 00:00:00 2001 From: Ino Date: Sat, 25 Jan 2025 06:36:28 +0900 Subject: [PATCH] =?UTF-8?q?=ED=94=8C=EB=A0=88=EC=9D=B4=ED=8C=B9=20?= =?UTF-8?q?=EC=B5=9C=EC=8B=A0=EB=B2=84=EC=A0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/MostRecentPackage.unitypackage | Bin 409636 -> 436862 bytes .../Resources/PlayFabEditorPrefsSO.asset | 12 +- Assets/Resources/PlayFabSharedSettings.asset | 2 + Assets/ThirdParty/PlayFabSDK/Addon.meta | 8 + .../PlayFabSDK/Addon/PlayFabAddonAPI.cs | 390 ++++++++ .../PlayFabSDK/Addon/PlayFabAddonAPI.cs.meta | 11 + .../Addon/PlayFabAddonInstanceAPI.cs | 354 +++++++ .../Addon/PlayFabAddonInstanceAPI.cs.meta | 11 + .../PlayFabSDK/Addon/PlayFabAddonModels.cs | 793 ++++++++++++++++ .../Addon/PlayFabAddonModels.cs.meta | 11 + .../PlayFabSDK/Addon/PlayFabEvents.cs | 64 ++ .../PlayFabSDK/Addon/PlayFabEvents.cs.meta | 11 + .../PlayFabSDK/Admin/PlayFabAdminAPI.cs | 123 ++- .../Admin/PlayFabAdminInstanceAPI.cs | 115 ++- .../PlayFabSDK/Admin/PlayFabAdminModels.cs | 811 +++++++++++----- .../PlayFabSDK/Admin/PlayFabEvents.cs | 8 +- .../PlayFabAuthenticationAPI.cs | 6 +- .../PlayFabAuthenticationInstanceAPI.cs | 6 +- .../PlayFabAuthenticationModels.cs | 13 +- .../PlayFabSDK/Client/PlayFabClientAPI.cs | 164 ++-- .../Client/PlayFabClientInstanceAPI.cs | 154 +-- .../PlayFabSDK/Client/PlayFabClientModels.cs | 477 +++------- .../PlayFabSDK/Client/PlayFabEvents.cs | 10 +- .../CloudScript/PlayFabCloudScriptAPI.cs | 26 + .../PlayFabCloudScriptInstanceAPI.cs | 22 + .../CloudScript/PlayFabCloudScriptModels.cs | 64 +- .../PlayFabSDK/CloudScript/PlayFabEvents.cs | 4 + .../PlayFabSDK/Economy/PlayFabEconomyAPI.cs | 58 +- .../Economy/PlayFabEconomyInstanceAPI.cs | 54 +- .../Economy/PlayFabEconomyModels.cs | 236 ++++- .../PlayFabSDK/Economy/PlayFabEvents.cs | 4 + .../PlayFabSDK/Events/PlayFabEvents.cs | 10 + .../PlayFabSDK/Events/PlayFabEventsAPI.cs | 77 ++ .../Events/PlayFabEventsInstanceAPI.cs | 67 ++ .../PlayFabSDK/Events/PlayFabEventsModels.cs | 161 +++- .../Matchmaker/PlayFabMatchmakerAPI.cs | 8 +- .../PlayFabMatchmakerInstanceAPI.cs | 8 +- .../PlayFabSDK/Multiplayer/PlayFabEvents.cs | 14 + .../Multiplayer/PlayFabMultiplayerAPI.cs | 95 ++ .../PlayFabMultiplayerInstanceAPI.cs | 81 ++ .../Multiplayer/PlayFabMultiplayerModels.cs | 591 ++++++++++-- .../PlayFabSDK/Profiles/PlayFabEvents.cs | 4 + .../PlayFabSDK/Profiles/PlayFabProfilesAPI.cs | 28 +- .../Profiles/PlayFabProfilesInstanceAPI.cs | 24 +- .../Profiles/PlayFabProfilesModels.cs | 103 +- Assets/ThirdParty/PlayFabSDK/Progression.meta | 8 + .../PlayFabSDK/Progression/PlayFabEvents.cs | 52 + .../Progression/PlayFabEvents.cs.meta | 11 + .../Progression/PlayFabProgressionAPI.cs | 313 ++++++ .../Progression/PlayFabProgressionAPI.cs.meta | 11 + .../PlayFabProgressionInstanceAPI.cs | 289 ++++++ .../PlayFabProgressionInstanceAPI.cs.meta | 11 + .../Progression/PlayFabProgressionModels.cs | 897 ++++++++++++++++++ .../PlayFabProgressionModels.cs.meta | 11 + .../PlayFabSDK/Server/PlayFabEvents.cs | 30 +- .../PlayFabSDK/Server/PlayFabServerAPI.cs | 296 +++--- .../Server/PlayFabServerInstanceAPI.cs | 266 +++--- .../PlayFabSDK/Server/PlayFabServerModels.cs | 687 ++++++++------ .../Shared/Internal/PlayFabErrors.cs | 160 +++- .../PlayFabHttp/GzipDownloadHandler.cs | 57 ++ .../PlayFabHttp/GzipDownloadHandler.cs.meta | 11 + .../Internal/PlayFabHttp/IPlayFabHttp.cs | 1 + .../Internal/PlayFabHttp/PlayFabHTTP.cs | 4 + .../Internal/PlayFabHttp/PlayFabUnityHttp.cs | 34 +- .../Shared/Models/PlayFabSharedSettings.cs | 2 + .../Shared/Public/PlayFabApiSettings.cs | 18 + .../Public/PlayFabAuthenticationContext.cs | 12 +- .../PlayFabSDK/Shared/Public/PlayFabEvents.cs | 498 ++++++++-- .../Shared/Public/PlayFabSettings.cs | 38 +- 69 files changed, 7322 insertions(+), 1688 deletions(-) create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs.meta create mode 100644 Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs create mode 100644 Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs.meta diff --git a/Assets/PlayFabEditorExtensions/Editor/Resources/MostRecentPackage.unitypackage b/Assets/PlayFabEditorExtensions/Editor/Resources/MostRecentPackage.unitypackage index 1cd80a7e421566023067858c754e3854afc75db5..2d0e2d30d8b36bc01f1566ee0f708245e54e965d 100644 GIT binary patch literal 436862 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

9#Nb_>4SwI%b# zeniZ&!d~gkwoHd!m#lWDI)Cx+K#TXd_{wVWmAOv2-&A!3`mgAl???89F0OuA-PIdD zn6BIOK(naw8LPGzg)GS4zqk6Iq>KKiT~rw!r0 zIVc_%s;SM#e)}PgM|~DgoInGpark1+mHIQy>SrxWlrEe<4W&pO%2iy&d`*r}e^rhy z7`hxWA(W}xJC(2Lu4&e=Lmq{0EUb;o2XTXzQ3uQrOg#P>f)gD+L$D#(afbcs)|N+c zfT77CM1Mu&*eCxnxFz`yfG19%l4>;X(h?oq%-6aBxnJwuP=bu_ihDqKpc9+i+&(@3<}J zyiIt1+)8=)qb0=T)ZA>Et2kHlJJ#@;{v?Xrp@^}()OX`1e=&>U2+fu`hvx*0fN12H zo>qq+)O%V2bFmQ=V+!I#6CPp+6_`(j6VmrN;Pybga6_o_yDE(C(9JMFvF?c>8dRb& zm%l^oqS|d*I^UihYxu1>i6VC>(kyL1ou^`hQ$0fXe2-9o^wCzDxy`(ECW8FDM`O;f zI|?Fa9AXUX{2-~5Zg3R05X_N0jU+5AS=PlWF%3vA_SNfS{-%(3+Zc}Xb{oYzb?5=a z-*EOKbsGlv)VFJo&wu+kH|yF^cqV*w&PY@(z#~_+KqOtYmZ37%!Ac&7_6g;~{e*@D zIGKl10iW*PDDS!Mjlw6oH!AoncYK=`Oxec4%*+jPLhQIhDa6QVdq|J0*6o3K;R>sw zOFVHQv@xH%1_5-nl{`b!a|l?&ZcOol(lG#yUR`<>+xXo-Z_@G=TiZO@^Hw!yaD)UT z#`Yo3l6-5OJ;u))g^bod2(OrRfeDUJOo9IUqh31&DrGeEh+s}z+Bnv`twu=K&gkpl z8;RQ3BbP(6xIjCI+H<{mhpsr*#@zMB8suDUtgV8qHMZ8Opc}Yl&$@S~aD)UT$`)nG zW#?oi&&EvC!FNq<%Y4s_VQ4gn5bqZ@yH!@HB8xXZEDzX^VSAhBZ~NU-dFo}G{h0%_ zdk6;UX(Yjs$#8Fi`5}hVerw9g^G6^w9)Wx&|5U=s;8V%Y1D{HF3iwop$^MwkJnu~d zMQ_cJOjnt?WL`KA5%ugj^Oh+bApwc9W&EzbQy7DVr!gUaSs$(o26N-%bBt;q?hh(X ze$6&tmT*7#_@8iJK>1^t7I9Y9lZM9}I_lX5u+DtW0SSsphVd#}7s^Zpq4SfIIhxfc z;shzB#C!gxbnUiT1N$*Ao=W#Qz##@d59q)W8k{71WC7Aza@HSD2nRp$)ko_VUbyO+ zo5=-_;}n#DsDdztw(WWt*6!UH79}pfm-n#GkcKYWjB_M#XiojBiuYxSRF)jO0IYRJ zRD8MK#;LRXc>)L5Km&N<1S+G3{q_Ur@Jr-(_$2}lzu16+oqy3`oKE(mCnh@}?s>@$ z*m+vAV;$tIWOS(Bz>cXO&3UKOr(py{BgeE^6i(2SPHhbLoKqX?Jmu6j4symRVpfbr zo)u#eS}_)dtQfP84ZNTx@+qi^pn@73N}!sWh*7x^dDLY@NL@x0s#2lt_##W1=bwA6 zZybj&jR1J!1S+ovs({btVZ^CY3HjUaclZ19^)9zxwnv%-4M3cgZWox~_+%9L#kWhY z?od>jb*creaxoVl(J!}toI>;G+LASYJ|Y}XbNTr*Kkv2(pVZqTKSTDd-FMoPIfCR-P!x-$Qqk~w`1=NXdGY->bM~C3m1=Qe{bio4f#0fNj8vHJx5S*zEqYEg6 zlT`{luw$)xXLcqq#H{BcYW0$pzEu)3fA?NI~%q3 z{0XVWee|4^^^W5#4;#b>bd0l?Ma%fCHMhRnqMRkx)+|WpVd%(=h2!~;5mmPG$0|yzj*Clcz@o{`DH&=a6%gBt-vBrlPmR} zuGMg_=p`+y!nv=-^D&TVsV`baNlMA8D$?hDrRru4o7snE*A#kMPD2QaLx|<2iD%=^ zOROE5myBDJ`_fXZ^6byF*mjSPjPtUVjN>WO2ttC8V_5FD^-|g#J8K0NyN+Aas+q0%FH|59e5Bl$RF}SzQN0?bsv4#zKVM&Xn>z88px93WG~Zta{L;1 zT=sXq?C+TD?}D@c<2nDEN8cd)_!}fk00Ri9K>fYERt7!8ePD~Qp1}|niV)N5ztwt= z7A(}p++u}U5P{JMvAt0h)*wh5^7;Zz0tkpeke&Iw`PzBE9xdVfbQ(cO5JC*i0pz;t z!SUFli{)n1w#Vk$E*zmj39-I`zuj@eKDjWBAS4JuhE_c1YW>L+-l>{_5EMrMmdLrX zlRd8?(kKoiEqAbN@)EZyPE_%n$3+5iKO&$tBR7&b!39u&F~XUfQ2_MAMm%&p`bK#k zfp-Fl5t$%+`<;)g{IAUY4U(=s{s9sfj_|PLn8UZZ-ECpt;}(YA;34npK_nN2&hHZE z*I+RyTZai3;;=!D63aOl{E z@Wc-{pfdkacWuj!+c5OKztI=|MmD?cWSYH99Pdt_I*QG1)Ywu+a*}Spz91>%rYv03C;H#bHX1^A0>I z_*bYQF8VQQXrAPo6xyXr(4cD!0jO#<=jwUqb?1^a=IUeO-`|v*a!t9%U+0`P|6R_Z z;1@Y(ob)Y@-(~4{q&*VOzX7w-pw?U|jKl1%#BHq9w?}BIG*#N;+9?JO?*{j6u|xPn z1jNu8s_*MI?tjZ3Zr<0fIpc5H!akJc)6IL}a!$b*?5E)IR7|1LT>FWUJcrHi+1l1O zOId~nE{@CAz?CR-0}rXQ=!Utr?mPr@c6C7E{OTO=W>|+yKgSwPE;ls+CCy7fGm{cP zC&)-yeqUK`LOe*C4-aOh!(&dB4fp^2a&`a0Ur4(?HKOPFy~l{JHb5rl)KG9a`sw&sd4S8N9quGr22Z^d@F^edLeqMhBm;NH%*IO*MNi)Y@< zwy+c2%Vry!t(jTz7-2>{mX{3=IZ-CuK}vou2*r7)-9-cMx4R&PG8~5oy7zZ5=Hv(< z;p_-t-t-8V^z*|BXm9gZ?k%K&N$(&HoOuIjP-*TTUXzP09YR%Df8wvlIlt6ltI ze*o0BwxI5Ih>4Tjn(FIq{q}*|40?%fWpt+KRh$GEC* zQv_z4z=;t?ub8cy z&ol73OqR@NG9j?%F&U8~&C_F@Z_40#in0MSX?*dY=-5iE?(EXq^>z93 ze6R>;X9m^z++%K{V=J+WcL2Gwe^<7CbPu1G%_DkpaRL>8VymvPP~p^8G|lOEJfl4! z0^H#)a$p1zD`%$>q__{PKuQ{G@SE=hDo(yJ*8k#rXV>K`TF%=Wb1Qj!5Lm?9+a|2v z9sEa&%m*{L&io#86CGQX6;g0MSaNF42Lw=dJ{TsdJRh91O0NfqsQNkpHLUp5vhZA1 zo2%v3Vw1n-2VW*frpTW00f>R(P-2NZd)@fqEgd{6KZczAsq2Oh2VlYM$AfEreOYFTLNNkz`Vw|3w;_CI0_arKb3|h z{AAg~m7!xHYh1~q`a6k6#?&li$kVeB08+G&T{2Az`DUqF$X=vtAsk29LguNpEp7;b zx+M-{FE`-7rFJzon^Fjllx{;|A;BYu6 zfEy#`pqe#I{X({E{R?4G1q_*{)WDE?rV54-TpbKSKqU-Wo=yvM@b?QMY3cJ7z)$xJ zhpmcWzkm^SpFFb6&GeR$=`(Mu<~CU;OB3vzcJc?Whz` zU{j@FoUqGG7=YJkCSYW}W)Q65g{YbdMuFx45Y%Xn0u3WFRrYvckYLZR4H9s0d5~b9 zv_eQ20yuyh3>jzQ10a4ZKG>x>c`IPYJvkmno`r8H?~&Kfv~FC9EQtFM1l3M~z=j#6 zQZ~M3tK2_N*V%tg-M6rZo0JaiZ?3*L2-d0;fEqkFW&YjQHDK#<7sS}dgusRwrE)gt za~nPt$e2F~2n1h#vQ2vJzvacUe5-NB4ZzoJ;#2RV;T$xeBzgE&*~wRFGvF1XJuQ3;Tz3EGtF4~4DaP?xoof^l?KCy5yUN@Bw;N0WxOQ< zOR>j@U82e_<2|SGBc5$^90m3+D9%dpD$&4g4;F-4Ys{fG1v1e%^cb>~LHAo3PR_Q>dep{!ct=W-mYx#RmYXqb~7i+eF6s_ZA9^g6R2u7 zq78fd6yPH`V^Ex|QcK$+)eMZhgEzU>_I}paomI9g{zg7f9>LBW3N}`%W}4;^5^(Zmk|W} zvIam67?~3D-|gmVwF3Ip22?O-w5*N53=oYHQ`hhx??v8^+oM>0$T74*160ZY#dDo) zvQ_!r{gQ&%H}+^Nff&vp0V%Qt)emjhTmeKBXrP!bf$>d2|0uGRnEBShrDOo9pgv~7 zE2fU24IW~GEZo{`X{(1atCp-hbU6I$Y8-DkfhNcXdsQ$?l*10rwkjYwP)kE5i~`|? z5v5`#N~c=iyf5F1RhcbGmScj>TL_yb!h1phqc?<<_kj>eO+U2a zzwZa;_;35YFat!R$CP<}g;(|xu4&KrRaL$e+r3TTV-A33=V9apP0IkL{rzWZDCmRV z6p;1B4{!jaMgN=Ma1<&aCwMX3bs&311pOEh1HF7T6@tq3LtfaWE0u&KX@~-AGGS4tz2j0vKP)#z26!x77YF)_UiBAPNY{H==-qJ`)AgG+&BZ_w`LdBS1Tu zBMfUFa{>!+561d?m^1+6?|QfCa9i)=JxqERjI~K-IWg?GlV@m95#^X{4IF7?Zs1Uq#es*^ z8Epi8qAAy4kD76f58i}pK)OzmR@RoFkOTVgVtk3Q|zm+B`ppVT{@WM`0fThopmoJJkYFyxteJG+>Hr*Ixj`Kn5eLPL!4)Q2YWyM-0MvkyDKd8_f?*Arw`MEIJSwgq^JZz( zWB2(Q`ow>qL&X*L*_(-h6^bY9I^C=+I#0bZcZPaUbZ&a9B(svwP^x+JU|8>#nDHn3 z1}(#_F>4jJpg2Ra(qDt~x-Bq_ZaMZK-2KKLG`iW?vrV$o=={ISux*E6%iCwzVxlD9 zWeIi?fGR$1q>M5}Jq+-(Qmt&yvFxPxp?S@a-6mzr65Gyeq0V+*qY~SBol;%Py}sgC zBnQS{lagLx5#M7bcH`tyX1IvIR6dM2xnTas&^|ZYDl0l2@_mWv@_PFnf5 zC{~&07U>eurz~`lzG~00d}l8Y|6nEd`JU3Vzs&_L78)W*p9DrO_PH?3h!ryfH6v)K za2pZ~V9|+xtJ{)b%J8o{~@5@11 zA3uxcwO|6x>!fq%&MvK8Uzab>W&HNpH-`D|0hwqVN(|8&YIk-`NoN*t4xkIJ;T!_w zmvIib^Hg#UW8=k~gFU~VbHD*5or7Vbs?Nc=ps;fQ9#PvFa9~)ms%7N4tTrLt?hn9? zIzX6pF!z8A7>yd+*Ye3yVKyghpo8jT{FxDV}rD2T;Ge;nvK63&bz1ppH0=4EWd$r>FwsA0!5zvWY$E}qiTP(xp zpZ25OqNG3n_^{6McnK^7j${dSV+7GFX3D#DZvpru>ZACxr;i4vP2W7-d>PJ6;C*Em z#CUIsfDIhqrDZ@oBS1$d&kXv8H`~@YW7U8dpyKaAs_%HSuCUCa0y=sO>=}JL_Tvl^ zkRn^wX|I{|wATzi?KMk!+H1x+B`}kmgP1|*AZE!<1&A1mWSTS9If!(Oq0VFna`5u7 zaY&#gT0b90IXYu+wU6R%PFsG*v~8OG z%u*?f$Td@2L)nhh)h!|jL3btcyd*?v%Ihs)Z1)~34h1m=i+#S26;hQ;CwHg zz@Cvk{Iq}eecfNPO;&NLzK?LHex|$8u`m4Il=p>y5@IGINbrR}_~kWp2pCy!mw*M^ zy9DEeog5U{i{AAxA3tF>L?_iSA7{=6qk3;Z9@Fas@nCr2s%C{<&^W-vHI1Wi!-!Hf z6WpRT0VS*%b%^EM9~l*rhqiDrS1b69O+tkdis?x1Eb& zus0oED8=mm=k98{Tc?5Oo`1n%qc#5^EqzdEp^)}*SaIA$O?_Ts2iqx>U(ZOg9Xm;* zJ0mGg*>HHN?)A)-WQ|52KFIVg@t>gXW$ArC{)Dw3?t5SdxZ_=1aNb%31V{+aN6;cr zg7^3Q_bP9+eJJo!q{4%+?COQ{A&cW!<+bYF{56r6$XNsYP@dXFIDw-U7tPOabU|x6 zUwuP{e*N9`baHWX_2=EqsgSukZi(b8>h66(YxE(>&7y+kFnLA%h<^kiH&s z48i8Uf9Ik(jKoN42T&@uPx8hzei9r$jbY}K=FrZTLomPNu>z!n{-t@OHEt!>n{WB5R%;xpc1c7N-bSdy21NGkQ(k1t{9nzf$_~S?%?=4vXje2@ zozi?Bt57P)sm%k$)y{Jh)FZL}VlRq?{INx$kIugdPzRqL*{ka!Z}O~RwaykJXq_z* zX`OA+bggrW*XNX5pHpvrPT~5DH@IBQ%A#DocJK4~e6&a8xC||pK!j8t}1<3yDXPWZDV3wmoXR($QcxhZF3@Z;FqMu@o%)j(28SZ zWF^2Cr7O*QM{Y5GUsJppUAAzm<1cGn*`-~m#t)*=TsVhA@y(8`(0!E^^^>kd0(Ia3 zeL4z`JRK&XIuxH@W=*y%7nf!6lrIobb}-2Og?^+$4U6bGD~zJ@f*6WWNB~8}(nU`l zIXn<_0OklVf`QH^Y0)kKVf*Z0LeCu-_1~2~g$mm+jHSXBCQxAuMpW3APNBkqfa`jW zwunPuC~3f;P;8r1sKeoA536&aJD+Kf?YRKf>H z_Sonj7E_IghPOW+57+n>gxy;VKox9TWbf%;gSMj?5)6^poqQ->@l1`ZNPF0Z_Y&CR zB)xx&hPwT>cS^aB7`j z-#|?#spH#xR+V-6)J$pEG&hCmx;8uAu{^*L0!}UfrBNdLBdTRH51EZTf1phVCEO*( zK=AwIAY8HRjHO2VzGdYKT8toH&?1qXL0dFk-r#Oi&7QMbkV$Tl;#{&9uXv`$QpA1q zWwKr`HT}o*M1eR638)i?N{M}mtKRozxmenBpHk_z3}LzfJWA$5T*dlVe^7(#St7JJ zkW0zkiK}3D$>r7bxm-&H9Fc_Shfyi9FLBi~4c%U#~BQD_fcwR~^JCzZoe!M3eCjBgw=&B$S4CMHA-W9W7qBrZl&1 z4aQryrcjc)o$8FDPq;U`;>`Yg7^DD8;&~~}8cuas*3gSrJX517vUyzPgRb+r1oha% zvD7$@RvaTEDq*gr7c3{WNb#DI7q57x#!}=y`=aON-vu+7+QCE_)eelMRlCwDbF1A3 z7Jj?vkkWSH#Vekvu@rIFRI#_*IGAwPjRT__Z(QlLdvE9&++EBBk?mq8Ah?T}N+#XK zZ1^SnG7V0?FVmnI`!Y>&?!L^3Tm8*rYiCNkx%yr&^-4F@>rdK~gtpi{5R`!SLltaW zKy%qX!EG94dv8EO?+q07-jq%2J>~Y9t`kD!H{md+sbETvZ}NJ?UjshxVxZT87pYLg zB6&U?3u{jHzi7bwLpUgqhR}**WF#fF7XTu)-Q&9^PCGi=es0x|$MUXJ{dB7>0q_Fw$yZc3F>VrN;Zo9u|7{GB_01 z=;Z3$)8vo7`5T~7%Md}SmPw*l3r(q7_Xlo!vcI6?IEYsqLldZRlQp_-rn9orv#gr4 z6d7ZYtC2YzifeQNb?(i`XMUg5b-pNgWA#2>_G0$(D2W5H)nboWw6IY%Ap@2rIHU1O zpg_3}6QEpwWdA8&7a`my7D>2&rdr5b12J#|dq{(LQ^xCp-a*g(w6*)EIa8^dEce`v zv0EIv7UL*LF)Wfdkhh<4lhg7h?6fHjg&w;Y)MZoHpFs%nm~&Wd0OKE0gTP8)X$n>D zOb;s-;PL)_AnRy92v;I|qpM?|;k_NDD?K%~RZnHL0>97e1uERI_xIgw2Fw;@exnQU zQWy*!u0p&)#7(NA)uPYZ)A{^X zuO6}EthA!_6h}Lv2zb|;<`hw1Z{-phfV{v{_~-KbXw!71c`frWM)}Q1;34S?d&#TC9)kH;E@Ldhidw44^>gdc zV7zshqP3w3umNNhr+hIBG~_l8k4Hr6mwy-@$)^2rB}KbcKFY_su|tsEedv@!ibd6 zizKS`6(!ZICkRulr(x>V<5H@1lh^y>r+;m1Ky;7+T_)r5D47ef73-@;s8^2nl231RksDv zc(a@=m$z9ndtPN<=qSg1KKr5@6R_RcqDKz74hV6kJz3*0sxbHD{r1RXr@DI4)kQY@ z@{})^fx;qWY;9pu73^nxh4*Teqv$Re>GUiT#kM=XLgR|zi!{c|bsF<9q#6U0sdcf* zm-ERo&uZlK=>YGR2YWa&)M9AGvNEO?1EYS=o9D|--IUwUxCw;WV`0CoP%b5RC!vD3 zSwTbnJXFG#CXR+JnNY+QeNq)E@-*Lyy2xrhH*W>8j=MyGO77BewcN!gRr98Ne0&85 zfF6LX;dp@xvMIjD(ip*lLt_LliDKIwUm>$suh9=Rw?lO}S^w$KV0Y#j0XB8&he2 z&TxQnyKyFU&24o((A&mhWd?6!cxnO;WS@!`_%S>c%*G6wF&jHSpMTQ}Y~>AvpS{$G~<*?^%3rzyq_(KN*Xv1v+gQi@rM zp#G(Sw?Q)k?{sx6@Oi3dm299k$oCwni|p}GEJWFH6D7e>AHc(qhQX#noQkRBr@WZE zJ;kO&=DNmS5Mvm&C=9|C!^+r7ur&~SkNcg@V_Gt`0rz+1-^H@b<`2~p?KlUZJPnQ$ zD5kY3RC!nnHF;PEDe|!9>G7~mtcDF^86pVgM1(>nL~XGcyM{UIK%mQl$q_-}nbB$1 zsmP+i0>mP(>FX$$m7bGPdB)P@Z5rraSrM5E@F=p1j70$|EeN# z?4>Qu_R^yKUfN;_y>to9UpIQAc@A%Z%y{wu0Vu-&kz5f@nwpS-*=b_nCZ!2-ii|Wp zW-oT=9wQ4uzB1kgAN6?E{Bw`WlV<_b|aTCGCYx|FDe$>WcJO>5M zD{;H67M$p{INsi06t6gjMpnaRtw`^@xGLuBGA|lNYuZCY-&EjmD8AW|6_PJr6F7Y3 z+E1d`c1Kporlwr#%A5t=PhSBaA{c;Jj65azyef{%DHO-nfkClv!L@0I&M2h{_VI-3 zvRmWfRDmrk!$EoVu%I1ry;8ip++St~&i#<^^NgZ;DT<$~5M=!0jO%aov

X3zPHp6{?=7lTT;6yJ^5irIy$ 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%0Agmy~F`W|;G z`{Bd6=R4qgdl89g;FOXp9A@h$sKQ+Ri#dt1fCfpVugDO`l)xBEt3X0fM6UATG1mdG zMIe6$3udgfR=`;>Z%q!`WL3cPCl?Elv`-x8NdOBQA3UD|soqO;=z-<4rB2E!k=}Pn z_kd6%scJq?X}34^9jtyfmCw`4EtQZwArN>Ku3d?MXd`{=g{!r_U{-o^3voJDsdb(# zmy0;isqIB%hyjyRS?Fot!=7uj3WK`~|7l=5EiUSg<1J@Auie=jAi8M}dqGmt+%Z#+ z$ROiG|6BkFO|7XxS6ykq6&Hm3$O3D6@$~5*!CMq^70d#k8*gHJx z^+)|Z=-sX#xnxfG)`Dol>_$TiOLm-e9)MI-OV|LYwJ@!w7U z|J@YP|2wq}hWe&_WMzKTnU4CdGn~&l!@dm*zuC||?hi)J@$9g3Y~PpvH*CKD?W8E% ze;5AWXe9W5gC_oCC#A&yQ<;X~{|Os{N5kIWXfzZy1O-R2aS89Ms2X`U{@+OO|C;!( z-4xOPJ8^D2|Ffq2Kg#@gIPdn3y1h=n-y8J?9eXrCo)1RHjx##yI>-0q|8))<|8FNn z+5Wrm|AvEn{C{WIjQ=|+CH|kvG@AXtPoSt8c_;qgpqu~xI~|WP~#olx}oQ(#~(Qwe~*>ii^g#$sId&~dOZSp_tq$t~e>+%1+ zLHAI&|MT#$`To0;Lh?UcJ}2oOdY$g*s&{qq^6L57tFxDTW!G{duLaG$Ilq7h!g&Mn zQTw^Ox(&iN@ECI%L3ZaQ#YXZ5lDjS^q3uV+C4I421Ah6b0Ty9<PTjw{y?sU^y|3K}YIcBk`89Vug?HqH0sPC(2;}HLvfhjF*0ShcR!<1( zE~@)4P@X$Dcn~(VCtT z5fXT^YPr;%V)(e25HgKsACnZOPl7O5ufTX(j4Og^^K2iKy#FBOjU@pUSjzFh1!$Kl z;Kf?504BM$wC_lG`3I(u<(gMW!eo6q38IftDM3`HRby4aoozgqDmt6OpAt z1(NrnIC91zCV)LT#0Kvc9dBQ`Nxlv1_VyMAq1;n)dub~c=m2}dh456K*tSj1>V$5T z=0u4YZXA9ngxfY?i`iu9UR(PoGm_c%n=^kFkkK6sWB>XeZ<%JP)#UcnoiToCZsgP8 z)+hS@#U^_lA>+In_lX2f7FBW-3Run&;SUI@&o#wXUFaxCE8KbR!bv7Ire5FKSOVeT z3m0Zqd}XMTBtI#%lh2v8Lq6l@U}YB}&9BrV7^wLl6lyoyJ-8ZjMKR9hCEpWUlBQ|H z^lQrwmF15Fl@fg?Dk9$vL-xP?P#zm;NJpo$0k%WNI3?X1Cc;*J>_i=%BcfHN4#u71 zfTOZyHS{W;7{`hrmv2#x|>%;T+Uvv{Wq>dS7pFSy2yg_n&eV-cDMCS@HV;Hn)ULpU~P9f zNpHWt2}0^w!J+eHS}2=F65{B2NLE>xhj_L0I=t+%9-Clc>F2HQ#Q~IM{DQvg`)mbG zuQjm#{ntX*h3J}9Fbfv6<^dC~lp8OKSK9(DFCrc^LlldQ9Hg_eX@ZYFt$RM;W?P;Z zddA%=G}BWLM$X7ZT|>?B^m#1&v!%k5LV=VlPYm@rr=y%Hb=>T4sryt z9P=;RnXx?jBRens2?WHMDd+A&FQscKa={n%^JnoA=9*p!7Lbbh)gEXOcNdS;Q}5kLiJcD{(+$Z*4E< z3g?%mS+o(-(|NaNyxPMpwzAwAJ1|@HUn;mN$|VR+Hx=k*e$HW*x1r~>h#|kGE%n0o zLd)|@Mm41Y6fYGwB-(IO%z^dgmzEOncYCpRO1 zD?9Xo&DK8QGDi8WwQqfGWy!&VeP|H&LZGX)=GR*5E7$nQ5jGuN=|CzQIw2?-6vK=# zGn2&pP1t+UOvcHW3*#(QPlsS}AcN`t%y*W7=dbbu0ryI*_X^xDH;nms7Ln;4;0`u2 zoh|HT1Ycdi>GdKQNqi>~u{;Axlh@>nL^Vvg@wRBjr7e@uRg0;VYb;#v;x=LwJ@kTk zzMC2kGFmkqq*mb_(!FHctEm_B7=9Av7VYWC*HlayDUu1qL~VQl@~fT9I_=BJPe){% zbWE$XGISqUod;P?+D~2odiA1-EEl_3lr-f2rT?1h z$%(x{&lf(`vEjSrt8VgTC!g&K^A@pzO7^8s`9XwhhMXZhP<#A5 zKQarh?2%S+D5dq1)GZ-YWZzSt**+*DBxcJVe0M%hq1cljTI_!!S7^^x?YQl)5NU{#&?IcAVXX!f&qLgBH|JDr~n}-@S5+PnqxF5ps(*Ij4a{2n?XSfK&P}-Tp#}y~d}kuGSdYT>n=`iUSwYy; zjL>-AS8|dh2B*wps5CI;zG&hKGAD?+fd(E>$?VB+KiV@j)OUO8wlX!$ybv0ex-|}BqD4`==3qwc6X>>u_9BYWhM#4V%a zjx%uV**%^A>h?#?`LA6RW&3aa{MV3N04&`9(rNs^os>%V|2_jh%v-__H@v?qfS(Z0 zZgH|$JR{o}H#RvYHt}X}U>XBQmeg=V?mAD7=L$6|Uh#>;4Dfm^>0EZ2Vjj~k5RYNi z4!-`PqNY%lQLKRsRXKwy+KlO|OlXM`6^XzmDiM%T5Hw+Zk+aHFOPz%`7d(qkDSH;& zNPN0_eZ2M-&dI{FBe~EyD9ziPH}!Kjiz}%aN=5?D*al*{Wv7%=sH5H4OL3}IAXL)s z+*zFLqqS2_BXOmART3kusFS!>y-JBc>OHn2*CCw@sg``TniP{qi&ag&o|$r<2Gi-C zTn!w6iNFj2d0axkL^(I_(Hj7DMWn$ak-m+nolaxbG|3+AEB43@{j>{Cfh zU$6>OHHEKns;2nxQ#A#zd#YymDj77Za&KnM$k%Gz6K}O}IYNv?^xHaE*-s$M?%I{> zqhf6ob09@!-dHEmW==D3_wl+)96@)*t%Ka~I&`Kh!j6N@~R;Wu(q2?DjxMxe}n zHg)TmI%*8d*qw!ClMRE|-fTm#>rOXkzCD#q!?3?bCuq4;$XY07fNL}_ObL~l(NPS! z^7^OHbA5+cyXO|nWO*>nsZ2maUm}RL_&sw<#a0A4X1umPkB3w0?0PE=IT06^C$K47aNJAl_Dctm1*3A)F3 z@sD!{rvyn&eP_T#AreOP9S1soj7i=znh{2>3IR^v5(GT(7DG-`Jhq&s2PTt)FLDv3 zu=<0X6c=kjKlRTpz_C zNTR_XvkwCXO%#avD3fEYN>vnFz<)Kan8x(j+JdqoEj<}pRuNV`?PyvNoJ98E16okB zLP4?(kG7C}T;B!wtj6`>B+PolDjAP&qV z0!TnZUm}RVOTW}AsoD3zH9G!i$Dh)IeeS&xtt`x-6h#Ma%5lj6clJF#{5;Q&{D+q$q_MNpHL z6;M$CB+(i~#T|OWRYI`>JYzXgE25smO;w$Zdvh}CbS_@l;p*EbSIWaC=EKUquO9T$VMM9fUJ|h9F#c3pna9$&Uti^2{V@_V?7(mxU zF$A1f;0K^}*wIywdV8_JE~-^Vu?8|!<&4>nE^E3<``rsyYa7mv!ZOas__LV`b-1({ zgeb2zQ^VA;eM#??!9^7?*m?pB7%o(70RyckydcKq-b^97E(~r;c7QgZ+Jl6+X(A_} z+wJ2YLg$bRBto0)2o+;vhKnX{AUJgx2p(@%V6q~hw!I375=k*6wS){7ivU!F2q4R` zP@yJ@Dd4^mPfRabOz9|Uj17w#*A*5uMutU=>k5k+zh19MdVOS9Prz&H>zUYkJSiD*1yUH}0wCs2F4f0AX@tXmn+5a4vLVascdIZFAd15YA`+3IQ{a48d`1C!sBr zNs|yfByFivW*CNHWci#3WXVW!is|s**}XfxEAidRC*G`lup?`qJ?%aBw!0_wdWWA+ zXP-Nh-hep+d-&w@LBHqpC+uW6?4PjV!A|p|*BkauPEO#HABE54`{8idJ3j0Wd%eL< z@37xL8SGd`J1rc`D7M2LD8c{pSX=*g6tQ@x(a}5XJyQRNCxesYr2Yp-eK>zO7#tn% zSgq8_|GfS`a%a{D=cDoIi>r&DUtgX6@b&47iG<}XMGM;P{a&PbA zNLdy&kJX7?wA!U@Mdh!a)1-T+=}hn$O46dMdd(1)vi9@_mcgp>c04RZk_Ss-9YJ{aiKpuT4uXs@i~ia*NfgjZ9wg@yz!!?r)#^@d9d_j zE0|eRJGQM|*SD@;?12@-5N_UES<48lH(8}6P&L8Q1=w@Id>h%f?0WJ{p)m5+ur#*6 zvRD`fAyk?T<#Vt^SdVwEhm{ECWcOgvv|QGd3oDmTRETwfI<8rSg;Xixspkdnpd6v? z-!d%dz3l;?tQnMa!9w_$+dgo|WB1I1yO;{QLZyeG0SnH2q=srSa}|H(&fPexck!=E znXlXkYZ%JsPYWgspu{$ohL@i=kJybprdl`z{vubxR|(!Yw&P`5)aTY~p*j6ssn}3DTN78$lJ!u-K(RO=pOeGlA6fqbaoqF4o?r zy5d(!&CU5V1#8ITRTc+$=h+Ptr$8FBpBs11N;==!k>v#Qg~y;ss+!NC{D_qq{Vaii z(@I4#S@YUP5d8zUg=a(CSuUn_BXe8<%3BW7ph#h(B8&k*qdu^YiB}7p6KAE^x5g|t z>cfvAoJj{=-N|sdzHU|v<+Aa)S=MtWeYrkqU{K6T@I9a^72&Knk_0oFa%lnHzvv8R zw&lseIGgi}m6aXhj1^0htPgk@*<*tpujow-cja}#cED4)Guh12`pT*_tE_!&Y7@`) zf5nQ#8CI$KbVrFoqoWRx<@(;#5UH@jRlVJ&Yg$dCq~aU0#6M`V@HdXof9qJJ$$;`| zB_qHKJ7V0qs$BaodA9|(oi3?t=yvXz1;Bm`z1boN)m?Zv(w%bo3lzUVX*G{ivO0Eb z2dW}+|4?=*q0Tdu8iUaF3ms*Cdh<@;Co8w#mQV}oogG)7NINSP^{LG>nmgdBbm0@q z0U}~yYt3DM87tdi8o(#B&Jc-nRvbT z5GnhEQpZc`xSq3l5U%o01YYYa9rb{E&0*jszC&R(>ZRUuz665$u@+EYRdpC@iws*Ezo&_OOnfO7^CR`X*r)eA%=XGLg+_m0DVhxeH62Y?ZUBHKq zTNdX%HPY+dcnVnTk++jSg*!`3S6{LAV&Sdei@qo+z=%jbj zKRoL1^x&UfZ=3(o#xa9f_}AEB$KONG0PWfZO)p#&L=*Bs!2&mht(w2V#iM&J}aCx=ysSJ^njKuitwz93CG{ zW|RKpmLnE`M*P8z_$Ny z<9KBLw~iW}S>VAGjgKHttrd$pG9haHoNzmF`==c1D!G;U-{7d!{|}CbgKhh7WfBwh!e+~P` z+xcG`$J+WgzyIraI2`2We}~xrAN7XY{=bdm@%>-c#~)XI{ds(IdNVr1pF0irhrJF1 zoPSE!LiyK`FQ$%lJI6Zj>jFyI2AkwM3!VQlMo#bSdx&I8h5NV($houb0uRGQi_duU z3x3AfD!<&G1WO)55(ujh>9%ic}ehf!Vi-c&eG> zK&&`|d*g+K55yD!DghcKfw_EI76eCZz~piZA!j=d#*QC|Wo20=fFR>niCGfEgXUsj zD!ICP-R>Sv-8%|#p6{WmXRGAKz2Mf>$cW+ECty-*6kTwHtKjyQO-KIj9=|#%Zgzw` zK`|-vSnTJCx&lj>xLXCwB36H@+|-%JY@W;r-(0vgh+0OtT)GK(YVKSjGH{NUw7-d{$?fQ{d0LgBir<@5Ij#>I3NslVX^SGXn;2EWkir%2@!?xc7lO zwP48yAyQ~4m>q&OWqZ*>27cVKbx7LQy-Y&Dw_Y%@JrU+ZeuI%A9|B6hBHSdPUUIzG z9AUTge-f|_#pk|t%6qFXN|$BndZEas1Jh4z=hyUlX&$}}@VVG=m|YX_b*~KM;*!_; z5+byow_g)hwZtc2{0=eOZ zJS4tbK5+&kNB3nAC*u1bUW28v!Fc=(#DJ4Fh;1cF5%>@Y+NtCCH*vh^UfaL2(}jzb zxclLO>;n%LK(}bCR~emLzUfo_MG!m9N{jrEOc1ZApIpKR2VO(vBk4h7@gE(zYcPTT=Az zYD#>HS6a!`Cb{v|mS4a0A-2C8)Gas^eH{jKu^ba8P6hI48tp1y`B1CX0NA$XZEI!+ z%7po+xAn1+1>Lx`pc|_#=*HUx-L|n+8{7EbwV>mBxy$oV5AxfW;ARwV#YM;*bi#n2 z^v(s(Vd&hg`1TP8a?qDPa3o8pPsd)cA@6e%Z=~#G^14$s`_gk+x;FcrZ%{!(iWV=k zJhKacD_r-?4WU-!cL8o5_CJa7F+8}NE?O=YfzGD$QuiS1_DZVTt)6k|m_saW!4u{+J-^x+V|4iJ;2h|*q z?dG5V+|fIFa@-qCPuS7m7&iY6pG;0>z0aqE$&)Ac?Bt2le*P!l|I_cCZ1X?cIM&v` z;r!43(b3`2@lpBt|J(iFEgf|a?AK4n?22dobl&F^4;OZb*2yYh=%Z0zNY3MPbZLg#~-b2KBcw;(9WV zPsM$b-e=SsMjthTdz+=uqR|pqW)gx)5(2`S*cv+2Law(Mk56D@Yfn7r!kr zr4>=SH#R1_?x#1vudXS|XW%fb>0Lxpu-r(W6MDXf=+CS_@lU#)xIr#n=FM?>em#2m zfHh91@Nl@(39Q9$?C96T;G&mMw$FNyO<8QcCTYWJhsi~y4Ie-#8dSqtI%HalVcJ$} z>6W(?zAPtoxEIaypnay(tH2Sio0sfeL?TlO!yK1Niu9>e0?=YoNtQyS5`-}xmGo%R zs9s!|PYq~fnmts~5V%68h+$^X2tnY1h<(9>ykunsjNKs?lkoekU5Mo*rr?Wfe{K_A7%%&Gpm%q#acG{ob!%G8h50Gbgo!)bwfnXWl)kS5ctCscwoXVs$K27O~K9<7tCg=*AWsvx#&V>*GWX!<-BYpw>JsQ@tDg9>5)R&PW;XZR|2+(k)bP6l9-Ihhs;b24d7=4662=4A2) znUg8eXO4EPL@28~ETsu|DqzNWRMAN0R0WB`uL?*5u2ry1^RA*$n}ZMGXwBp#2*YywEXKxST5T|a6a4p)ELe>hD?u-p_Hsg9(k7U4> zja@GY)6DgP2pe&|tOaVtep)OfxL$-_(ZAAZCgcs1ODG{yN(k!{Nyw4uBgD;;M(EI_ zN?ugIgW8O%P6f-Dy&Add5U8oEj$>@bRi^;ek{!t$q`K-5qmhdP0nEENPz&9~fzl)w z2MRWEaiF|$7Y8b#x;P555oPGZ_sEkrYGvZ)wrFKK^fzZ^vRd1+GBL`AtW4V2R;)~g z?k239q<$Ae4c`lCqhWfXf)tJyqPk&sAw>+Y3t^LCbfJL|E+@~Q@d=&{IuR5%-HD(M zYA1rSgiZv-=$!~k8}39<1+5c7NlGVzV))3cSNHIU1b5n$GdZYM_>tktj4=kF-$>u2-i-!g?4T4%Q%m$xVgo`pn4D!O$%_EUV{8S<>`+@#M;mb~Fxmre1%W#L zR)CBS!xe3m(YOMlJt&JbVYnZXFQ$NC&IeOaqwjkuh->*=3X&9GO98-`kENhR*SAs- z*7d1K$+rtHu%~ZBuNjF_m=>6n>S{oz6oba8RJ;+fQWW#-N>!05mLh2KOt_oD2}tdx zQUIg9RH}v4Nu|=deN-w)?4nY6lRZ?bgwR2yvbz1#wH-Tmb9nt(cxlgJhy5%d@}~-9 zl1Ei-6h2i^G#tad4=7EO8qTYQ4#=JU?FH}Ks=D9aSa3;(F^3wGYXWDNd&Umya_y)_Vz9* zZ19C$QUl=~T~bo-wOmq&^d>GTYwqP+Qi1mSwh}qbZOkZ!?+%Xc=oAP83QNQFDdT<#~!k$Qw#!>8V30 zgyHO=R1YnIsMcJX&qfBAh5>;#LIF*J07UP9GrxZe9)G&8pZ0_)5adrAYO-gJ0~p^i z$F-36%W-MSZaFU4V6PmPH@#DiDVz9AprWBa&V;^^gU-vx@|FZAl!e8~h2KGhYLxHdP9`{(bd0nP^U*DX0qWI@5b`>9;#XbFW zritOJvsPSxZJTkwgGYD9j77RNVkf= z+A$RROA24(YPjsZt=7OUYBiR9Gpk|fRjfvf-o0uGs2mBP`eqZrKyW>}4-uL_- zkE#II{E8;lRlm~myzcjSS`EsBjSK2;{~yT}(HgHKV&RkO^aY?~0ZST{RFr}(dOBG*7wdR zx|@%**r%_>zG$HjQh+*WTmgNOGkLruzmh50F6J{|=f45V@hn#6{|9cb4mz%yK`9gS zbzPp{T|Vw4>s2b;->ZyqV~qLPW#dk}R)1HBUE+!-+9q)Y_ueC}NPM=4D|~<*;)*8L z25|-V+#kL~!K-*x48Ik1+x_I*Q>}jg=ga32t6-#X1&^RB2vjsK6Y(k=mpPycM*>x( zII`X7((o!DJF4RCGs)|Z?jHD5>@&oO4vClp9VNE)90rc(957%uheOI`ju6vc4xZzy z?$@5m?DmhO3^eaaq@b&53oBZ`#mu^Bk_@ByW?lnJ znB0p*7A>AEQ-0Z}<#(PHo4mb!PwRBo&OTg0Bd&7=4%@mQ(S(acObae@UJiWEnd z`7Y3~lK-CLIc=K1s~SrD=LB*||6GNi@Xyh#WPc7s68$+|EXkjXa1;DFmYLi)>Rv9$ zBW&BmdwOjf{|DE$@p@)$n-GtyZ4>QDwQYPKQrpJk`Bd#c^7Hq@UC|s*E%-6Hz$E!m zxgdvpTrSWsKQb2>u#e3JBEgT&1vUQ1=K=})BlM&Cp5N^Esz>5$RVy!J{&RT*-RFt{ z-g8NK&U5jQ?_3%=*ST73&$$%5C!WHi9atJI+JL1cp#Ccj<+fjG6xe;G!II5aS^?<2 z(m-zOl}3$K?&=O7H;O?c>=;7}w2r~S_mBaH&1A61y2_A(>;<($SWtL2kHsT9qQ?@$ zCiPe(?14QN9-Z4`(TI-kv9ypWJ{ARgn9sLUsRndF7Sm8US80B}ku;9w9SuS3qLE?_ z(ezwX^eEQpXp)!N(7FCC-&NhM@z>6fb&)|wS*t{$L*}UQ53-h6Sm#(v1jsSg5|7v^){+?a5NnBp zwWBSW_Hga$9GdrQQpk<_HFfyYeoZ`U#;*xQM*Nx#ViSH%8Sa2z6U|yxluX0Uvo7N= z&^mvcN3^)#7K1AKZ4z!7zl{fL_iY--IUpoxML-!6fUuNO@ctV=`sG*tV-ZxcS zycN3??WA2L3LP<14eF(JSh&r!4guIr>+ndn(>h{6KdsBb{YpH&wspGeYYdHwer$y! zkuGc;X__=Au5!`*c!>sD1xaIz7gLr)brYn^!>Xw0zdYcot{yF0)zwR2Rb4%lUDeg2 z(5kK;ELzpoDn_L!Bey{|huD3PEyTSMvhl1tAq@^OKxdsvAZp%2bTp06 z7#+fa}OT)hupEzbMZg=@xQ5JqrLK3B1R83uvXX7Ft_K;kp@_JfQ7~{qmH?YaZJw_R* zs(pc-n@o7YgOW)EI2oD1yrYl_2c3OPaJj>dNrQd5F@r*HVtW@ocELsA5{Q^B2wZS2 z6Y(y%mN}pcE&^4gI07!TX?Pc0nnQ0P_ecjdfpiY2RnWvwqk(Ks1Mw73x8t zHVu|+aMKDvj~je|;j=wcGl(zH)H3i6O$|quoM@!SCQVHsy-ZW9fcrEx7+Gwhks-Ef zt}_Y6%d48lrNRB>S=qBn6eWJqedk@2PoNTtoL`B4h)0@lo&GvgoX}m*b>SX+tCZ5A z{NFqXSJx4SifuHP{$HMvzKiV`l+q#fT6h=q+3C6ej?Nf2q|sd(&YY1wd37rWb6{NK zUD7_yR;idiv{;aV2qdy-@dQ0-6D|7lr@ZV+d4Kq+ z`_Vt%Jtj9_p6>sAe!BVN>&=(jr^oxv%bz#Tk4rJ%?eb&$Qm6cJ9cQG_e2z0caUjR- zzUclj1aAb>=Wv`6?7yCpzE?whTEPLq0T0en@wjcQK!<; zVn+3vE>wJ|tJ6`9g+ex)+ZpXYTZ@w)fhwk}>zZT_hKfIa(r!-UIxXqXzv7lz3|{$O9b|Uj zpKnEd05^0GXvyu|g9K|cw-J?rfVrD{Kw*2i2e9By?m>aEkNZDjLLDUCp_ z63JysDu~S#5$-dE_BNU#iQ_b-6u@eV2Ju=Kgf^euEOA|C<3;>sivZ5DDX5;ZaZESa za0wsT8f*vI1Vr!L|C8@dKBMP)0`akPy$XNioDrg)0~tEk13d=L^?2!FbG-<6(A;W# zNFM6`f?<{4WBFDw{bPb9ykjcxePiN@o-si@znEA7ub2W{pO|QdN3xE22jxK{S}y+? zCD6QQBw*z`BMQlLMzC0ZGb&(t%?M}ZGYYlet9$3>wtJzayOv)@waO7PLZ%Q@Mx}nh zoP=IP<^BM65tU0JQ$*$J07X=Gr06A74_^CXALLiXJ^)){?f>6^fz1y->tP?nH^V-# zm%`dH0md?SsKH-QBmD%IYo4Dp7!C7wXa)vWv)u$k`s63HSa19!LGFjY5EoWE-5hq_ zw$H7qTjh|5(OC$nsav9OFHa&x+M~7E!`aZl&4um=e)!<{zLkjsN7v{w&0g+?N7?C$f>??k-&oWLR6$@2N7pib2|ARQJHj`0cM+569TNeZHK&W^vbkm$$ITf%+&8E3cjBBak}KzufI|s< zbk8>3pT?~%Fu)>p1%?7pQ()k!^#lfpSxaDGCF%$a0d@_6fo9YXsF!Mz*B{DPe-#yb z535Tdvy9c%A#P+fqGVB!H?z9x-1V$3gUF6nSBA8x^}m8dUf9}cdu3bld6sX61?5&g zS(SJ`b%jjId94lS3`iP9EFWSoqNk{n}^6wT}j zYPco2**qZ)_6uPYC&IbAch){5_*&Jf;KrvGi^?Vw%R$noKFcA5i?v)DkFqTyS+ubF z__U*g>$;xP&qK%iQhm?4(_~Dv$jlg10+V&Am?-9y7ZWTo%f(b+Pi!&a)VVAQ z^ zSQ~}OA=ph}3c*bkCJnE*!o)%?7AA#Ur-i8lHe8q_yuJ&KeXgswV$U5TW5Gq{$oxy( zwJkdh!@zH2xD5jw7)s%}v;jJBS|;g%;qQ^{II*2Tq?Ki!V4%ATVv$|P(H0uOAen-J zJ4vR12}j8kXp31gg@kyROo8W4lbK+J@4?3Nv`WFbmEz; zRWF_u>vZFpPtlKO5`9OWxf=E4S+GV|p4k+Ac}zX4VbH+T%$-55k~IUF#+QMif++)0 zD@O*kDs~K18ZTb2U%q!WtmuiFInk?CGNR|w_|Ownu%YK^`td|kp(jsVt@`pLSfw{lY?}UjcXsbppRT*EcY#{tyvPbC2`pl>O0(2KAFp#O z&J)%N^(P7(-v9A0p!EGZv*KJ~BK&o}9lwTTxtjk2658hePqZt$KVh!n{e-Tf^ApzA zzE7m9x<27mc>e9~Zv2l^VQ(^%wc4A^igorTGoNB_GLz`{CNo!~y~!+CV{bCEDfTA2 zTX(pxU{BA}%9&oQjwwBr!jB%Wx1y(M|oTZbaF7VY0eEsiVCL&BU7t0gHf)^ ziNVMvJTG|o^!+@1MW<_zaMS79qlRL-_Q)WeBs#*t>DnXOa=P{?0Z-Q+@zRN*U=}hV zEpw2G2G2kyurU9a5Losx0S$AHi3ZI)Ca5s)m=Hd7XsK8w$;gI!_1PFDK z1aH?%5)rVQBn+~C;$v#TED(>iOak!&cn*k%3sXQm2Fn2PP{RZe&yVJRc(5@2&5%7}9?<;l9E zXmPskbo3|eSZmQ8usenZhwM&9d(e(`ol#Yr{>GxRDwsM2PU$RF2pos0P2n0jPH(hE z{`yb0QoE^*i5h#SKV0T`xcArnAfJ)FpfH+_z0iT?VlPaXY1cp3JI&{8W57LHnxksE4-gz2Xhq|8n$1O{$eQIVQyg+k(` zA3wxHH%FY!w9Szm8M8S;+4D8W&r1hujxdvnnj^P-l;+d>A2;szFemc(VYprIq2>{w zc3mUzqwOM~MSUVbkOmQuW}P9>V=WjES3| zf&NOgie4%^Lnu$YLzkVE5sofTwsQ(s3N<%XET2>gf?1EA5 z;TLaqit{HzTc16Vgznsl2!JyuLgD941U5cvA_dJk6TyKqrfFgea?mt^%}$#p1@Ope z!UN0Xgayu^Cal##)FdE2jmpr#3YpJ3QEaoeiE0*XTaE9koC~m4PJnO4HhEf9P-Z{r zVd&bB5$LdDo5-YCi5hxXvBo7jtXLyJ4l6c!T2xSGx4$uo4lCaL=q@i#kFS?YcSJf} ziZ^R;sR-EDQVK~sOL0IKOW{_{E7dUXS#NiD__9b~#B2;}x~D7b+*uxMr?IM>zwRXpfIRs`GK%8Cl;)vOFJE(&^EDdJ79EJYE; zy``K2aLv>E!}Fb-D9Mubz2mvp1uF{AL7B3f|#fo^-LPZfpks<|LAl(HX zKATzb)K_^}g#5zBTLrWI=aW-2@AZD#h>~{2IEJ+QAYLrcR?cG+%ldT z3W~PPR=t4RlEPvNo_(?kt9q=*XR|A;_5mM@kY8BUv#L#!>SfeEwTe93kFNezv{45w z*9bQ))Tp5-(fCPuadvlbVRm=6McLhH3bMNs7sH?2qvh~m(}H*fMM*qfTomlNL_`}t zoQM+e6N;QbTo`vyi+w_VM$=fBOit__vST;(z-I z$ev60mI$vsID9{VE$8nC1$+d5zze7F2M{)hKVS`K@dp8P9DhIyC-TRSzqobMtyKaw z*;pm~z_uzybG?y3gw9Bi7QRU6#jZ%OOi#S)PF;8Z`17|}Xv20I#?z`cuyKeVDTk`9-PHv5o!N?({3}lp&gzuLUDYi{XVB?-r zMQkE}F_*m;dDne854WzT6^ahe-#!dq@2SIA&P=?W6TOu7OoA4yjb7)_)rRFHvm1%+T9-MjAo z`m=j{z1$ARo4=7Gwo*x8>WFABIx{zahyj@Ha8P4*f~7iE(i2O^nmfZDJe)u!(Und=ul) z#+w)?q1nVZym%9{>n^A1LiUli(EV@Z*pEX~t5O^-o|jgbBnN>jaNszQ!D3%Inb%f$ zBnO1M?iLP@-XFe5SGyEzvd*OfzzUbbxocaB5w2<})M7nL`Nb<)3g)h1yKdY??Yd*% zN#91u(I&4UaZxd~+mdGap82jev;ovt1mPNlg1Qh<}fOhe3j$Ii5$2(L~J9eqF?k-!mg4$Deglh(|Bz!X;xF&tyGl(d$({mkRym~wy_p~yI**vw($*04!z z979TCLNq$gq1EAW+a%^yLkx#T$Pro@B1a4@V&q6hA0$U4V3ZsobzyQu&>&8ZRJ4I| zL;*(15t5PY1)GaQX;DXxuH1ggXgMAgYETAa+e+gWRz}Pbl`3S8@b)otB%%$PBMK;L zj&Pc=If9$V&5?#KaE=I|$T`AkLgxr>9y>=G%HTO-P(;rWS`j`+XzTbnl28TE5nd5N z=g_P)H*T%Asp=MPTTkLL!8k@~E#?SVuqZnMs>19DZy#qz zBFaEJV!$Hp2#AK-5!5u+j`$V9c7z6_?Fb2m+Y!<--j3+ufIGs15qE@Ch1?O|KIV=@ zv_W@70Y%*rP7`)VaPzo3($EFo5djo=N4V?pn;&^{zI6SI@W%p9oK{$@4xUz|u=A%C zBEj{m6}0>qYK6q;G-^c&Ih0Ci1d}QYBrwFZV6d8HTF77{O$!piWYYpEA8=X_7|l5? zRFH9}3NQUQxdYLkhufjw_tN+Faz|M)X(c}lq^_m}Ap z-Hr4iCyQg0u~7_o;CTwgee8KEUik2ngQ<``mFq?j_i<>5Cl$5v2vWy&q*TIk^v7Vo zQLxr*#Hivl64Kj@{uJ!7q>vcAS|$wJ^)eCCte6Q#yk;h`=&G3@OxMjs2VXf8h8*EPO|RQ{H9fHBYI=OT)%30otaWn1y`kVYI{W( zX0dc6DzBv=d()+AO7}&S%z^LsUGl}Pql@p=%m_9&Yi2UY-5L)GzmlN%C9Y?KklwPH z0Zi`M%v9tzZ9KyNI{PrvhY(lcBMP@R5owfg5dB%eJ`{#~hoX&*LlTu;b=y|@itjw6e3lX=-pjpNt`Y+Gwcet<@SWaShIOvwu1e!!XT4~@NLRT9 zgvnC3pu=15=9wDexy#*xv~bN^AXqGX3o@M5?{tRvTcsm|rZ%86RSvM~O_i&#yHm|F zMA3r&RJp9YLscGc)T1gFVRorHnVF({Cwe*W7Tw$1_#a1gd2I==RDMOGC#~oyL$c4q zvh-t_l^9imtC-ibHcqlS6yJ_Cv;y}yDyS#%7;V>0X!Dh{g zM+J6&;t&B{jvvL)?!+U&v_bKxBI{8+wTZMr@hA)SC?4Z2+Z2x?l1{}_%LrO#MYXUu zbIol~!;An^!;C7BVa8~wVa7nvFk`%>VMY&Ls4ii;8gALdfXPQJsL!4nK`i?j}Qk@*iY^d#tL$L78twVP= zbfLcOd-vD7?ry#VUEkQW!pY=FGCjGB67+}r&w%9p;<&JC`IPzd1c={RE)0h{s>UKU z-@5i^yOEzfGD(H=IFsX^NM>1_WBBKirv@TEqvV0AzJb)gowoQ-j4t=oc zhR`cOdq5v4-S+t)aHr>EEjM>w0NBs@IO!J7m5J!@HZ4##B#XBy8j^{yONL}=iNS(W zA(^PWP)HVTR3;?TU=|5k%8H;kNR-^S`IAM=HB*YAccxN+gQf_XkEYR(o2C#uPfeA? z&YA*5{(97|+vFnQll^W3+^J!+%I1zC$aCBRNO0-qpcbM(h56>L|Mqfs=)QE}uX5dPeyrtvC!|P|{4sPz zZd>MYpOW#020QXRv2Knb*DlkzkIjw))9?3)Qfa?OQp)`vA@KbkMXUFF1gW#%BPG>- z4>=)!)Vkg)UGEm%{GwY$50d$X6nvgKe3XE4{|zOT)aH)qgq3;%a9fry{iGAQ<$6Phk3@E_F%iu>DK zt=DhcuNz0kzU$8rhTr&SI>7h-S-kAq|115ZQY7l@2Fh*Ch;F zza>I|({g~=Wl1dRuLNQ0tVBobsXScnCq=dL^N{kH64xxBCJQN8KFTX)p|yzsg_45P%lJg};*%Y)!W*JZfD z2p46SKVh?xY5wr$Hses#{cV_}IyuB0C~iM;9Ej@$=g^OKzg%m$)vdg>8PE|7*@rh~{Ej~>xFlW`8 zt+ex$VusSsO_gS)i_J$#=+)kJ5g&>gftSkJM9U0jvdFb_4i52PM#3(pbAeU!t1)Z_ z6W(QCBEgSxI57LHV$X7xNaA-nOAz#74ue%ImwI!G-{$0yC%Zin^!HV`Ov}thVa*+u z8BlqlWe!tcZDArSCtBlVhg05tAw7E8yZKBde}RgtOj7Zr=5p*Bta&o07(p@C69bV~ zW#xgY;3La2VSDjA(nUNb0y@;d`=MFl+S~)3-UR`@Lqf_B)<-y#|v-4 zkHOlj$$?Vkc5;wXT~H2)9=)U-!j<=w1Ej`P<)EavtsDU8h2@y+XIlq=iz`hywxyLO zVpw6N2}E30X%deXRhnQ-ODavYkb+7Rgt(kij4yGrOPp%Qx+JDP)1^P7Inbr}0;joz zsdbb~TFP@=`Xib{+)4bqc2A|~O4%;rs=6;~7BOLDX}uURg)A9qHJuqH3m7z#K%cr& z#!72CLJc=M8I1v5IOsVSsk4~_RB)D4!Oi4?A^$k|vqwD@?0K@fX+Q6F-=95F+376M zBztF7MP^%~LEc*eX{@-!Gk4~aC~DLtRw>{5zrukk8}!d^OM5tjU&PPZ2#R_;BbV}d z1}*IQjC~3JX9FnsS;)A`&qeI2QEWPoyt=b_6fHBEN0@ppkDO9ddBjzn$)je8i9Djz z^Z3h-E70rr}3PrP` zlA>rEWZBrpHcgn!ZezlculO;H2pb^fuA>sK6Gx>FYH!X?k@Z z6P>@5-AkIjR^yVU*Y+%FdPTdErq_2WY5Gb{N}68RpQPy(tw|`j$V~?lnqg}*b`_=Z?G3R=Rm#LnBj7wBc)WGu8 z6Nz%T+e?qEJ(m#>Yl=4q7UI{Rspt(LWNjbDoD(neV)kYOeDHbe{9U$~n$6YRqq5NHMqhc;&p-^l(xA zjAC0xKa;`==Vu6UrTi=!t&N{SOsnB%N=W_t3?MCd|DxM|U#ds}mha`^%4U$K$+O;B z7SDsHFj#3{7Oh@RW%hi$`EihaX*_7pN+Bj>KMkN)yt{O zk|#;Bu40671s=51r9)JiBAt$ET6FQ~ROmvL)1M>MnDU$qIL)Qe!cyiGN~spLARq_mqO;68J~YJ)jO9cMYAOIV8LMV+6BP{B+jqi_<1V>Y5lm4^smZ=iq7 zo!OGpFc3xG`3s6KVJ)a)4~F823KIc_kWjXV?dy>&FOqC<_ieSpBTJv_>A9AywVldE z+#_v|9HU5cfB5C5cB>Y=q$fmZ-p&*1AlLGQ z@yz>p!cgoYo{*q;15YT!zj`N(X5P8;ey{4QF9vJdwow}SO7ws>ZI#1o&sGsoTee9mlS9OP35DB! zeP~Sk$<_DsfAMH|+=pi0bnnd`^&|(IJGUHds#l3js&BV(h=&=}@;T>vn?@x2{A1mA zcFXG?yn1p5Xx=|Lt00$9&e6=9DCa=zI?6d-@lMKFgnuz*5^HiiP$mWaF2n#G~dom=cK^3h#8={_%N#= zs|{f^P*PwH$5s{Qc*SLeS%klCkmiTET=3F-KYuZ|k4JYM=7VzsufwJw-38cG4O@9l zDeNWJ6o9U^rX1Bp)>I5xT}>J6WmOM=@80#{x>xUd4eaJ!AIrXY*N36^?)qreYj?c_ za_g>-WM8`L!={T2-3qC|FcC-FIguD@p$GzaDT>EU6=9U!6=`8M!!Eu|V)1HC2}rqU zQ=$geZd#!rZPx^VYd9qw-BM187*x?IVekt(?e=zLdfk5NSJrF)gS|3eza94-HswwQ z=FKHlmF7nRjpoaLfS@URBClj_d4AnyQGIJp2Y+^KI*E97wtxTY{?~nd#GFe;X3j5J zm*`#!kLcfjq96xTiDh%lbTNU(@NpmIcHPMu-jGzF#SP^IO>Kz5+SrgFYFtB*eybX) z!Odw1f!oozK?b+PEkT-FgQD6FcOHkPjfVvL}uw+7x!}Kw<*}gJ#5e(5)?=4p$srg55sxm^Dq(`n1=wp5qYS> z9*QG-PORW!uN+=emqg2+v297RyA~*Zsnj(JT!)teE0#~58`nVmGODYTU5EG26kLIf z?mDnfUS;un<5djY4-;tRa+<-WyN*AKS;0tp<84}jjKaP25{2~GONyZP-h>s)X9j~> z5ObE@OuHnm8t}wW#Lzq{6bT_`gdza*a8MMBoeGK&ipPN>9sW6>D4cl!$i~V`9800nt$u(&p!Wt6FlXN5#H@#c7-7|+hvO&1M896*26;Z*Q}hKq*A7A{aS zoN)2#BM2vg4jNo6G*0LP#f20{P?-XXqnfO6qS#N;iisnqNTtM4Oj02c_u2LP&fQBf zT~G14ZaVwmcdr}wQ($F?Ind0xWGEB8NFx&cxd{WjN@teNHP6HTdbPjMczeIbN2}Vr zhOXKRc)4mb+PG@-IJj!Fnzw4p`?hK`S+;6rZmmwonp8iBnpG+=Z(gaYG{X{TG{;&H zsgh2fiWdg5AW~(WJjpF%QBirIZ5GS7!V*Ci zQm9CfRT7p7vIM+PkPQ}>3bKqc#e%Gms9cbZ#|sA8;5;RRET~}7Agh+4Y>=hM3I|z0 zmeN6%Q?7WB6%&^avJ6=PAq&V*Lda4|6%n#h(lSC8At)qdqvfT9ETm8|A*&=SCu9MF zfeD&q-`PA*})3iK??M)!Cvgd9^5ZINl4&rS|SZ6@{5w=l<^2l~#gz3yzkr&a! zq6tU$uxKKN9TrU>?8Bl-JbG9(!KfY&JM24i`}@AzH&uh3c#0W{N1S3I z;7n5t;2mO$W1&+^F+%T{Qmn&1mjum~I7$36gg#vPGK5|OybPg_KIE+h>s3htgdKG+e=aUeup2&HnK0bo`aepChlRKS$C3!k^>AWb)^TE9uWs z^FQ#X+f!e+U413_%v;jbzxtMv@JHYhg?tk(DS}VLB~1H^aj6J?KrTVZ_oUOxWKM@F z=}f1W!NZ6*A6gXza0={J$3*p z&{qd)crP75z<#=F#Y5_FlYT<9gs+A6(tG39 z#k{*vMr@3)gSdx~pR6RXv@$3>XPKpo79Y0UMiojQ&vsc_&*2HOcH^5&^>qG69sBT1 zIeYj4S-h(sbpL}se|VB?^WY?=dRlYLhv#Zb^Gt_RkcHEF0k>u}X=!i%2bRp|#KH!= zkni3!bue9S+2B6t1xIry^g;~T3*AHf--IaUp6JD+V7sCh7{z_j3oZW6=pNDkJ#!$_ z2RgdgYYtMzXih1I%iRBkE#`uy{&I{W=5j(8aaMnEgV0z#qlB+|A&ISe0O+SaR%WLj zQNT^Tj*gjbnUg(re&d#Xx|{bN?QY+BeE;3^$G6`;xP9mT(^rpPy?uB4`JC?_+yYcb~xXY!ZB~Ux4Hp{_5cvI{cPGHuDS|{~bLr|*hj`KIYR+6d`Eu2zH1|T)B|+s9)ujyS;?y_{n(B@b_Q$zz z|Iqzb7unADvkCzC}-TuGmfniu1Br;@44e9 zCNbCVfGPV|cL)D}?6THz)Dafx!8i`*0gL8$)8&87?)(qbBlXJ%dT@QZ0_s80Kzey} zYUFxQ%LE1#Mm?zY$Kcn4B5_LO4!53TFly)o9Q$L*J!c_>{AP(luUP`_GaD@Sm}Qjl zmnDk4W#e&Qxu0N&W*>8=U=;EdXc3P+FLM?!$j6`8AAx%enn2Od8Q`*jKt3LwJix=Q z`f3kaOCrIoAlie&do3aZ|aX9O=AwXg&%#GhC=4C2VvNnEx_<5 zPr!@grsb*EYHvN&_!s@~O5rt$_?LP`qKC-+dPMMyuSUep|5`-&3%wH2GyE5?gWvh0 z+jDGcluG~RgGgTuFQC(Nc(!WK;UzBLbNJ`@-+GSS)hBbfJ{nukxc!p(6^YoFcr~I2 z$oWb{;7qSV#LW8&MCc1xKhiI0`IqKn-FBvN17`WOaY!pPe;i5*Cz3-HKBF8`#8b;5 ztjrv9s3@9j78=rznDbfE^9q~Ni)ON=hsllUIoYh~ab?ZvH7{Y$>eLL+Ah+hsDrC!9 zP-w{+gxhguh^;uI%Ghw$Q?eksamF31y8Zs#bPwvIslFZ0`vZ64dIg~}UA>}1o1}Ju zLjsd{>IC(QG;>;dg`hDRy&^-Ig8oN_$Xg2?!*8l}(TIuWXf^-L5^U?tp&ZxDQGj9Q zU@foA3QU{Kfjoyis89Q2{oBZzn~_qW#Tlgpjn0U`+MO|4)bxxH{nlqxf*YU_fVM&Q zXF(ev8>-s+SQOOs*f?&xV?)43$3|+lI2HvoH#Umj*4UtD??0QX4)lT#)^vkcK>Xk% znU3&5m?wO!qAR=r-xofP=Zr_Ex~un{uooIAC3>MjO417r2(T9#qGi3%04dN54N7<~ zGyvdUXeViVcIs`<4sLsPNZYd$v^_iRwr2;nJ#$>;BYNOF9-B+;*fh#o1&V8fG&jW@iU zc*x-~l2L~zWEgmOP^qzpR}&6DJVZ7E@eF+M;p3IZ9bN<+a`<5WXv4?B0}UUpJI3%D z(D1^CA|s1_XMAA0XWvY-N6y``c$qUt6D2xq6Gn90DhD`;$H5iME7PHWMX}pB`y<}n zcl+b{qb)!Gq5g>ZG^HrIGnE27nId>jOrs(Hr4T*WrAlnCr2xQT!bvmF9rUArj0e8<$58w;e-;Xlb zhy550ebG-B6lU;~2bFS_SCe|nQv?q40J+aRr;yvcn9Os3h&!{TCxIXeKbu-^Rqk=Q z#)wLp1PX}T)7!H^U`U)^CpVV<+TX#>Ny9V^6Br84yY%ja&bxq0IPan+ao&Z(blwFZ zbKZqhzsu#AzY!w3zSm*U7!h@yFie2cAwU=<*5Bil)ngNtv@A8PxDnL zcfrYAYq~IKb&OSWs(V2VT4Jng&{B(AgO&_N4O)itYtWKnT!WTUyc)D5aBGmmh2HIM ztjJq=pjkHgTL~gJ_ej&Y1)+EO_|L&mxBI}N3gwY!#stH3WZaw6A3i5`Za zb;0Xch#D34{Rwtkg4vCD+3fpvXupoTvF+;z`+YqOZc8HW;1C+ApF5l`-e6fC-gUQ7 z%poEyv22d%roBaDO%uKEtJ6^V7VxuX7+b;VHbq&VZ&N+)2{+|1&bTRpf67fs#^>Br zj(5^cDfF{$T!siIk0PbS^ihCL&{f3F6W zClvB5_3U{;`BMrJBzjIEGBlo4$f646k?ci}5k9Z*uKrTj#|K?^sNolPGFLGt39Fo6 zk~Y$^SSHfF2pq%66l(dL6YY&5GMxUjZND9Ar>kNfpz2lGLeP+Y36z zKHj=l>_xa;Vjs-t5BoTNXV`}u_k_I$uN&+`S$*ITDSfOfP>MX$6{JKDbOi+WX|510 ze3UCdN<7CElmriP1pxmEt`H@uNiN>JCOHvyO>)7Un&jdHHOYlr*CeOGtVu4EQR1fD2VW`hC(ds`e&CP>?h=DEc;YKUJz|9 z`BMqI>}bC@k#^o2HJ(b?sXUdiJAXbli?ip)mhHz4$<~bvkUb^Mw+5cz5eqWD&?+@nz{`ja(8A0NAs@Zx~& zk?56FM=M-XoupDpbtrjBbriLd>R@F{s#8=csUlm#|84#4ATOUNJfl=@M3IZBtLfap z(2J}5K?w}H!I>Z_X~Do+v(Y{?FzfG?Uc;ec5*MaothQfuB;Q=?%qa(p%mp?tU$cSEmn}#yu}JQ zrCY2((!IqBz&qSx1y#LUtSXk(sh&V9eODDEweG3{O5v_5Q1tGq0<7>|RZ!HqtLkm3 zJks*~1Xr%#$H8roU5{0Bpmw7+0FxHfMg`Y*n!;iNr$4$xV&AU5Q6@H-Ht`mnrHu%t zos=dgW#Fgu7NIYiV?*v}Ch<01%tQp)xzu%#6Q*`4lW>#HWTJuUMkbj_5QG`eMda%) zKJ(4mMh*uu$l0t$*hDT#UzSF2*$m)pC5Pga$f3Z1GmE&N+ye2&olj5SCK7o^9W2Tq zlZhU32c0CF2p++a34*$F4w6(RmjYiVG{R0f6J+NgJ*4Rf$4h;oMING^!Icv3H5N(s zu9C2CvbY*de2GPtVVyIs-)5I_Oy=I+S$zZbu|7El-)Sky*lwwu&~qt{ZoHJhc3%pz zwP31d=R@wwHOv>eeaE`d|K9Bs(d;XRU9l*wJY)548a4o8qPHA^Q*Rv#-Kt1ZnH*-# z8p08c6-3J5ztfB=zVoDVw)1jw*LjS{be^E$IS(pkIj>gEabLc?tdF1Tp1KxE!cEp6 zi3V=Xu}aAti(OwNlEgJd5^b@LNF*?82f0b03jTTDa&DBZ0A}~aRx0@0U~8*{Xv$r$ zl`P{X*DBuXp4LhPdkgDkW{A#tcxd-O9-qc$r0%_%#+z)onu_3dSzRS(4o0_bQ&Hl6 zs%f~zCaS3hX6ICKm3j2NI(@4{S$o$WsEvp`L^nH$60Q-kN>W0=HXyFb6B`g&hIOtA z*vUUG%0Fj?c;i!65MiFNLNNV=72??Es}OE`x(XVsvsDP?oUB45zx4QUh@=-0 z2x3Lter=q0NEZfj_3?H+~o}~)^rk*q?@O#9L_)q zhBT6N^*}fiNjOlE{LxI8K!{^V$$|K;qtJVvQNndzNa8mSU^>mm$~@)~1>EIz_`dSt zY)AQ1rbbEgpkfuxtBDJmr%39V2Pl*?&nZ>SyqK_^h8I&#rUWr7e#um{*BOmndrOdsiRZ zpS8+VZXTtZ&%7SaqJblt$_)sOsoX57Ob%&wLC!!mkvROy>1BMoJB*36s#Bmz;35N2*?xyvY@iEhD4E8-&w-1E)jw>9fNdB@8#bi&_r!PUe z>EJ->{*n7%93C7FFRO9?{aF2IPT$@)`ycf8?TY&oV?Z*n|Y06``JGr_VC;szC1WI z6}2CaBw6HiEr;vRZ*!SouzmX52SV)E<3L67$8h2$ocaRX>qqjb8NWX|4`X|L)Sdu% z5?wi?xwh%ui1V+LF;Jd$H$2HzF&2A=yfaLmMM@q2vN}N@=Zn7OBlu39kLt>%k5oO^ zN1(dxBlkYOkK(Gvk4#PHzv&4b)X*;s!Vu-J!LM5+?goskIwes;ylNvT&Z+KGtmQ2A2Bu00L{A zZQW~wz*M_J2srKQggmu;&e$*J) zF{?D~F^g0-~P{oOI#@@s*GoG?N zfk5%!kz~(UmYt}-q*)Hsvbdj?+OK8FE%g{k6ipdVEKL~#Ra3^8sVT#Vp(*3&WSU}b zQ_!S{+Z41rfo%#J!`r5y2_oARG$`IS1?`Q!O+i9-zZ6gSgV9h_*uW`&(4*0w!R-lt zHu}w`pbtj_NpWHrUw!9A-IkwpMF7S+#zlo*u(8JlxQA^X(cEC*Q6; z@$&7OK+d;oV{X1(Gos|%wIfcx-B@a25z_72w@lhnlOm=qwL5{drN;2mmYN`vw$z|_ zX-n;mowg*8W|!OSaqe^ARaL7Gh3J|EL~?+zV%#HS3dAC0>n9Rri~ye`{uG(}q39>z zs@&#Rb*WCc>){(;*b#~f5aY2wXgSAeSjQZACC4|Lf-d3+B*lp#L6{Q?egbe+3Mnw2 z_V}t}=}kgu(KNKBEr%?bEr`mUbEFA;6r-(g4>wYFh z`OMUdBE-nMC?Y56qRfdI7iGyywL8Xv37o%D6uDzp3Ksdal_JU`vqa(wWgf;`odB4zV@(va%j2!ZC%D_{Nm$m3cnVD`w~~TZI3YDFlB|>! z@B}(mUgborU?K``8r5YD`|#TT#|`hxIEo%2@-t0fd{Kv@8H%5wvcAM);3vBur++HU zTs+l3XxFsmiZ`NC-NfB)<6Lbnp6)o-Bl(^;BOv$)a|Z|w!3iGc0QU@l z+4RQ(@8ZPwiT3co@su|Kr0fj$VFKd=-XCxq2#*kiO?Z0lpp}L~+>{v4473UO$K_7C zj?(*J=GHPWIsU!izFp?A#64;65P93wpx~3lU;Z&5y(?6|%eHu^nA>~~m>7F~4!$@W zehv)cuAhTBZ|l#25@G+(!4-WI5a+b@k7`Z3sB1k+=S-p5s2F0i{c!|mbBLm|5j^49 zqzK}(-O&Z8Da37P+EhSyvGm5(8AD%uT}9H<$#f*R@5hS^6g#P%Kbj@5^+#jm_Wo#E z5v62~cEqZfqXE={Iog(4FGnL{l*`e6PE;*Nw|`Nu zp39dapDaEYi)1)AL_ERHF8Tez$S-MKKtAf_PIjJr`}#GFXwigRSX)v&m{! zRS1U_zBq*AkX|Fg0g*~YI1En32nQ9saD?NJT0dffAuDn?y~x$$K#HQq!5vGB1BR-^ zfxy(^0E(f)!5c$^1B9u-qmF<5PC$hgEtV23ms~Y6M@F|fd`()gNV>E<^0dhwAFU$0 zLho&h81wCIxs`Z_TR5g(Et1Up+yX{?t6N_A?{*8uSFl}Vmn~i!7DuVvMVfOUB6RkSOIL4aWVzuM6txMsUiIBf#O~ zJoZj5QVyfi^*jbLN|?jBr-(gY?Jkq3d*RH%NiqhXWu`zlLvV`Bz-O5exX+Z25)&?3DllbY#uqY_kj|8o<6uD&&X}WRb6d}o6ZLeW4b*+LQkv*Pt++iW9xYr zUH6+FPjY@@kSO}yqNF&7qbv#MNi1c0fl=d2Q0!YU(u=)XuPbE>_*D!_u#xl-kw-QG zqjESJqj(UNs(u{&WcP#eRKURKCnS}u@}EYp@}G)T`A;RP{HKCd{?pi1{!^hU|EWZk z|MYp^=ITcm1t%XMWQe#z{9=^a^91G}2bA0d1VW4(V}gRozcHWgADdNOK3dg2s(roU z45HV_&;-UMxPzR@|2 zxsx2VaqRGsz7re09WZkQhcr`0<-W+-Z=b_Yrduufm~A*i;RqCb7#w*c4}l{JW%wHb7(?HP6MEPiIXm5ur;`%ZRzz_f zDxT&#e|*(-9G31ngoN@sQZ(&#?oO;enOAPdiuls)916U4I}q>1+c895y&Wpv%eV7K zd;Ky+$gKKlAW_PG8c(dcpN2p!{ArAtl|Kz5M(I!E=tQ+Ym%DY9Bgksv%0Z6`FY(}#WpWLeesoQEgrfOevEKNQRfJs~ObB7lB~9D_4=80*vd1A_)C#KAKVtRZf+^Pf4dwdEQ1_}^2+Z#0X>jclCz|+2O zGy|RT1#x1;jv%`c1MyR)(`Il7xBib&Mz{Wttl@1mjiQcn{U4dbT>r-y<6Qqo#y~fX zo9Fw?A%eCLcXj!awZ+*>Rpwm-S4GpPjX9TfUDd|5a~sdA&8FI()#krc7yJLKuUApk z|Ni<&|95oLzWw&$xopn<*f*`d7k_1S-ki11#aUruJh{QYAENioPup%(H%`X)wYNI@ zbN+dcksSKaH~agM^?$f<8Q@}9I)AmOpPIA6ipX>fD84aQKD_RVvmbsqa~S>q`R2YZ ze0|ljZVlzE=+8fDom*Vo-F!TLoO2u2b}cf@>Ql1FH|4gM-{P^V z+lQ?A^QI4P@6PDly?4fNV)51hhqFvz%{s>8>+h9v+kL$?4+py2d48(~fpz&$k$)`y zYW%%+4B(x9$1nl4Nv_M#o?<)b?N^xYbjuJ`rW(?x$lS@q_Z<-m~MN_6GSWJLg6^jVxgcEA6UL z^O^q0A7h zW?SXcbK9h==OW*)3*|3ctJy0eCIAF9Ku}ad?1^aTe%ck=n_O)*-xfx?z;L-{$Pm3} zo*-H&8jAjrea>nX_F|=Yz+g-bk>PkBkf7QcA|!3rmQ7o(E{ad(wnWHe)}Ejj5GSE@ zKr~$4a1WJDcQsZkot0N0-DT3MxG2^|Tj+x+kZulFW4igKRpM`oXg4QGBXE}|mgw$J z2>wt^OhSdlRB>yb%Uyq%c?TL00LI|pcp(Y8-J&5vzf`pupeCEj)f=pt&~U<^6)1_&TQwN*4E&=;Y;8vi2HR)80wzAWsEFm0>a|K)kO7XHoI zvhj9MT_pXTxg&#?Pu-=cWzt~c>sx?jPY*8JHT2HuYq57u+j#Gsz9`V0)8vb+&3<|* z>blHPUA62;-L~vuA+QXj!*TiduBuymYNVZcqcLv=4u;=6L9|jd6vvNR&>`9}!;aN{ z^90dKp-@~GxZI(-{;jWqw3H$Rm_WK97of#@-8abpxqfsx{Gnb)aES!Nd&rFig#%dg!kY@o03Plhg()|BG>SIsAqAwpjvbjd)kP!+Fbkjp*;u zhS2GwEu`nii{-oDO|W)V4Z6|Ct5NrP-YW4oMXsBNN>@dFoo!Th=~D&i?$ip??f0z{ zcoRc~LH#{o55}AsVhe`fJVCTlE)-_EnVWSNbeOYDutS|?>K*Q^Yr_nA#zB3P>k}c1 zef#`S{aJvfK68es$&VM1pxP=O60?UF@I7Q~fcPll8Ung*t`z?~a>O^7#Z6~IS>JS) zpe0VP@v*OT+zt+6wJkSJ1krc?g5qUC>K(G?(rcY4O~|ERIg7Aqym+2}4?}?HYS`nDB;02ROj85X}}ALuR?n zfvd|MlDMrr%P@1@tKUg>?H-=DdHoUG3_lXcZSWpUx2|N(kRq#L*7sBVp#aR?HpMD`9ebDD#yzjjBKp5W4Zqf8s zcFU4CvRhcBZS2veC^nf#1a2Nri10>jB+0N;TB0m1h9tM#M_)rNn0*DcB=PmrqT;-I zc!{?~lT}5s4U*cE|1rsTW%JSqNuh< zMpyx{zi{vZ$dU0yP~6`*Nbn_NTWsXN;DCoLNq;Q1pD%Ji-^hQ+0hj3h$K_T@(X{K1 z#}bP;9y7Sm<3*;y%uvI=rZ7I?KDiwe zB0$Mq?$DNwd~u}UxEDvpqh1_3a?FeCA}HZQOS~lG1JZz@Y*liJ{YU=cv#(;@RyGiQ zamIk1u*fu+SxT~PR<1*l-XE&X$E21|)+ccMT>W*L0jyDzx+`BYJgbez^NDRd56Erf zfw9ut_|}7FxkyEw@DnxDMUI|p>a4l8NB7C58NF^0$IKELx5y0`%2rL6+$VMYsjTEj z-x!TQ_FiQf*%VEgPc{FeKh@#C_ft*$)K7KXU%A}AWc>s7U0&}G4f52Vp)pT?iEaoh z)m-snuc}>bw{GY0+p>D9f$-mR5)lS0kqvC0stcg)Uk{~re~%PNWQ4t6-|(<8=N4d~ z#tDZM`zqI<#>JD5{>B4|J8PXGi@*DTj&bt(a44X-V2h)If@kpNwBrcj!0W6?hin;} z(yj(R-|UiH4u^P!h{r@A4H(K+C71Y8VN_7uIxr}1jRwVeni!^43JVDYa%UpsYjg*sP&DHtTp7PR31N6{&wTA|YP0 zL?*}!X~0mnMsNx2hM=R~HFfPM?kG6y?+^9IRp|>&Lgx=>Eb0J4WEEjJvV8@Hzw zl7d_20xrSYFs#u^?rER4*xI~>a%=N}B0ldUtjz; zfq%N5F-6@2RQvPQwjYwh*U~OY;VaV(VWp}o0#fl=qL_gfa0io$&obU3g|F=f$$*P_ z=7JQyL^~!#fUdi+h%XN&gTBTjQFV;aFW+=PD3m8&5DkSiU?^KvU4n)ITXaC;X3Ihn zH(OY=#Le`Q*AoI(y`K0lSopf;!5o$jO6IUUr_2kClEczB3}5KV)_x9s?mF(n`ERo8%;l?aD_Jq$eUn}-{*?+eDowCObcwzB^%+(7dn@Z#AF*v$8;aoOy&;rCgQ zRr%)jouFvIfud&dM($ow+K-i=6)p*4vT1#tMagS$KGNP z&nW?p;Sq?2uuM_DdnOk4If&gI9pK#M(M6hpZBmv^9b2TqhZU)KL_rv*=7J)v$~=8% z5BoRS`BBmDdEHd<$rjnjnWHXl%v`8S&7DnC<|0G%S$xQ=9TG{?L76C;1&V>}P?T98cA0dcwu7N}XkURFv2SHr zKjfRLtjiDnLd;FkxQ~4?2NOz0T!1xV0p2! zR;&wFZ{UJop36T;A2>>&6C9QEf@4H=LtDsl^s&9@fKxCeeTig1YqaFv{F!YI@Fj*8 zOMj z=EV|;hOjJ#{JShkv+B7_suXp=K*2Vl0IH$vi{S=lz_Z6l2=^bH09ZixdolVRk$+@@ z;#C8>PkZT#5WOou6+n%oDS;@EBoYl_nU;LNz1g@rG~(|*K(YH^3lt+8p(W5-;m@Y< zC!ELgk2lYQpKTr<_rZ47$5mxNfK$0xH^`-3GH!!(kEg2D_nz;sb{~?EV`{WS(v*RS zu9eCnO@Ud%YFwBSo1p?zTkK0 z$gBN;Vs9dgbVA4Ge4$w5ZPXJ{%3b|k*VXzOl})Bf?aVCQ%`>lx2_6StJ*@7s*_O3Mm% zO3P+_(vsfJCGKzS{B{2lFt5%VxnPO`jbZ+qwDC3*@B6a&y~=)18hVrs%;1qWw7`zG zf%qmPZk4<9rLCKAI1oQ$QL$oYY}2EA*}!i&LKDB@h$a7yBXFc&5=-VoSNQG;z;#pA)IFz-Kju4W zkUr*Ec7hqGndwi?IS?cR$im8&w(jxrFw{)8I@|Ut`&1*+EDjxh10IlOVQ~hZZM%IG zZ@$kyBl>zUdhK^g0+jaH7}tHr*Mv@({&Gq_n=((m%(k4Ykk<>WnQa4d(9Kr^sSs}uY*rph=rw7HT`UwlVB#p5R zYpAA6j>o~^SU3{M(QqVUf_?!n|kc|a^Yd912T_Nr>^hkWOp=XFY4m~i=wnN`KwD-`1sSSvpgzQ4}*l1f3 zeFtrJ<*PKUvbu&Oj|k8ajYu?vW$N<#?t<-nedvs^5mi)q7z znXc|CbbF@9vwJi>58SBf;W2k>`aXtj66{-u+_33s*sjePI^L&Iz{U+k#oQq`VS?Z)r`D(PX;aBuJzKQW6~j z5$JH*@_tCH&vwZliytdJ2>L{s1)KR^)jvnvqgkv%;y`c>l3B1h?=?#Ok$d~xEh{8! z!Xuf;3C{q6Cp<7#{6yETSbU_z!PQ4z!yCDKEol!~nq|A|@~~g7m~_NpMUh^^8@YQu zX&?IjSWkR>gvtXU+&~!GsvC?V|3R z(cR@l{L;bE8>TZfzylpR#{JTVY*)U(RTEn@T`;j_p|uiQaMUu1z6ZIqr^n&dJw0A5 z@abW3YJB>(p)#KyN>%#w6r|XvM@Fmn>6_UQZj=@aPlIk~aTxv#Hq{pK9B9}O3&WITKAzLH5yk`D?$TIOXx*jhk&OJ3k ze@F4bHc?iYd!u)su)?%Gfn#S60?oiS>B;_-R4F=79hRM^jswn92aPvR*IAJc+tC~Q z6s$gr9~Ltl`11nc8qP#LS9DqErF@VB5X}eqD!~92D9Yi`RxP(Y6@ zEK`>6uB8E@(Ti~w4#eSERIErm+cX%9XOUzyo@HS1corBjBG0zY#pGE+SX7=!G=ybw zz8 z9RFvraU%e22j%9E_Ix!jvg)=oQxH8vL0|C_)ll}uazm5t7#Dz-d1h#Y^axjbp7yEx zdU{Ekq!MZ~kD*{y<^_s@?9i17S0eXty86DSp#}IoI%)}W-vwEP+>-(ekwaudTB+*} zrZk&pgj8pfnT9b=*9AnPXHN*o^(+z%VVSOcBt@b}GMP+014w4-fw6KUhDfASeFD^f zNVLz@oY#9hkygnr!yGVWVF|G@wqXs`a>-B0HgDglyW}r-0Kh;$zdLf1<@?1?*(u@n z>fUppFIt3a2>Z01aNHe4j%`I2MpU{g~Xt+=z!s1S@=M(;K-xk=e$VE zPcrIR3Z%A0LNdR~iZuW5#aGtGo7L4fcQ?P?-(CIs?bSEyn}?rn z9)7#JzeQXzglbit87{cOy@;WJvC5&*Oa03%Bb#!;FMigxA5hYLrHf? z=76ST{>|MLEJscQ(K~-ZanWyNlK`m-u&igGI8n}wk{CSplDTIhYRi(`YR#gQ-;{uEawmEQ%VmdpK)52T3`hl=jN3aS&Bg`siZL`89cH>@ z+Riq1!%)|CRu-#l^S5pQM&_Yt0y?ZhkroG|#vbM9J_A2y`bqC}fzWaW184mpToG1= zqT)kZtZQh7vF63lWYH7K)A$RyOh&QFV17OsX>!8G}6dY0HOGh(V#; zy?#pbgN>lH*p}v9Qy=nXmEPrm=Py99qe+AcMOqw;nlE~Dusg@)VVi8KY~R>FBg5ng z68x@#U=?R#C@Ox?%|)Ik`oT^mfjQqqo|yT)j8lj~q1?SSk6Syv>|VdnJlB~thEbDV zFI>SkhN8ikbeT43UOss5@OHQ(0KUuH3sjIzAzeoE*ap+-R5m|SVP?G#w{HsbpCZlW z?)Mtr5e?9l#iyQ-w-xa0jY4Gp4b7yp`@dQ zL&HOb6OTJixHjtBtOmA+C-THfVTwbXwt~TTf{k{zzok75_i^0b9cjO)%0tnAT}GCM z2%IM4L=DW%7#HSN7;j_Pe(M~P+i*oR0Nljba-Ftg>a9wan&%pXi%wLLk~tBOw60EG zxx2GzO*RPzVrmLQ6LUbgBCHHf#mB0=&ybzEDT3LcJ4GVCx1!;<;|BdTwGZVmqOB+g z#df1Q(_-yN9b335OdHsD=Mxb3)p-UCG0;lK_~LAuU=EiJUP#WDL0|>j7mtG9bY;^W zL`-zpMTB%ZI9@tXJbL`~A1B`6RUl7ckl%r7L7pjhWy)`^YWrWmHa7#HY2(#*_tL2VNF?of0ziI@DW4-hAC4S?ta0S{8kf zPPNp@`1Foy4=p5jq$v=!BaKpGM=IWe)?<+$*|UAbFMGU?ddMgI2z-l&yv@3lG1Wqs zk<_Xn`Drn4L5-^_B;&?mmyzRiknA|nThL=`5Zz`^T1HThUPe)`g(RtmMWV@-Kp;N3 z(e)PmNQIdd(CxGACM+yYVc7i*AY2hv2BgCM+tqLGLaqxy^kG3XU;Gmo5{~r2%C_(!1^20)Fu5_^gZ!R;NTX~$BSpamYnjq#BM>q(4Oj&% zS?Z#AfLhl~QfOqCxm3_~EzJU5*Kh*px{jOsN%ypT(Ph!Z!YguL%bZ>m=Uy%U5fa21 zu8@}ZO~NAI-+{|jIw}jcD#0wR6BL=D$6qK;dM`J5nFB8tAOq8(SfiuR1K-Eu zRCuv0Jrf-$J)v)9nYIL9PSUwUUr;i^VUZE^ijp(!;|*Oj3dR_=_s3XouaAY}^fq{h zM`u5OkB1kiAe(}@Ts~yQ?^*LmcY6;M_q|_%qHGOMNuyJe3xg1nV34TyMl`0|HrfcE zt+>Ep3q!oMa#3BSI@kh4{cC|(_gcyDy=(rL-9Ouj*1ASMx{l<*+wy%lg%}jh-6w5z zugXcOA!79dYJe!gH7S`Jk!izLN`A1MtaUBnDaKOj*wngS5LD|rKs>E$Nhq!B$Whdm za(X`2_{GX9I~86mKoF)wu||iY=ab%Qy}K+A`?By8GM2_EcnPKari69#NGMuu^AyLH z+VtZUV`w-!?kinC+T3;bdw(h2k2SdoqwaY$XmCHUw ztXuX;@60%j*4lQ`Y`JZR@>bk-VsVOYJKaRxZ3hsP-gZEw`nHpdR)E{7Cu(pzfS?Sw z10t2Uon*9P+)llu9=Ag-Danm!P@K8pXxW!lcZd#6;&T|bLa9S}E0m7K;$-lB(of~z z+7yDbNh;=4J+`1YMR6+$A6nrihNS^Z7;>^)zR(flbu>n{kkdTmZ(!A?Pe5GN=^3!s z^FcaB73z~FzygCOC^A!b2JP?vK|D&m!6be17WI9Z4gd|%f@)E`>A`5y#n$a&54-!D z(){`PdY5KEwJivbPzCEz5(h%k)hf2T7eqLXVS+ds!;t_Q%g2nIX_O*+3FjzgPr-*) zxQQ`o;DZCuAf$%~82}oPwyts-R#9RQ=PF9P2vdMH0bM=Yr2vm3%t6T`7?27@S{#*{ zqyZnBSuFX$AUY6sk|xeWa^4dBz??(rhsUo1;U>~U)vp#e6|$#00Wh1nuK*QfQ%IM& zBfE+C$Zmok*-auJ*-fYeT#4wMT7sQZOClcFlDR2Mk59OBYEj)j+%@(S;HCKbOHczs z3!zEL+z3sZ=z2Xrm>`S0XwQ!dM$x*+y(z3Oa|ECPl29#*H$4(fWd1FH=4nE6Z~<6g znwUIXgAiuo8YG&FYeb`F;~M>fd|ZQCkdbT9Oir#5kDirl+FH-Fm__i0uPb9!KXHV-5gXMh4l*&2%y=p(}ki2KMe114yQ@R4D?-=>YecuJeJ zf^KCP1E~8LUI8k|rm!w!U(Q-t^2^x~$9Zp_O+>cj`p<(HutA#n3xL}wU zt_Ul`Qh^`-ck+BK7l#ANxj4aCr~U`+!%)t;z2rSYlz2G@#HM4E^TBg60=uQ2oF1<# zMf(t*E|wwTZa<*lKlb=|E5Fc$ywe9tOw5v58KmedMGQ;GQXbxg`@dIN(|vRurg_&- z&{Z}qbOfTVvhjcwX=MaD>>Q8d!XjiuSR}=Q1;nJF{c6Yf-U1}9w?N4ARuXdgJ6)Lb zx!-(e?EUuYCb{@+2@L8G!Z8~co8wZ5{{i7MNkxMB)ZJY!#3Ge*}mzlx&ERz zhu)acpI@VLB=!Ov8oo(2N?`qhn0v9Y?+?Ysb|=S>MWMOI7+T>b2BpC~-6RDDA#~p$ zQP+)VRJU)ldT5{q9Un00Wqb%$p~k%n_kV1f{Spc+{(nHjuLph5+a*Le4eyAGkL9ri zcTb2pGT6P;s_fxGS9*KF3=_0Mls=ha6~yQGl=nZhWB*dRC(1%mJy9yAd7|ZQDR%4R zfKlxfMu=*!Vwi5H>8nL`vU$|oL$0^0wElYu)e}V_D4r-3Q9IEPh0?x0hkbjJleIBa zIBOfLK&NkGOw@T?-;jHs3dwQch4eTjEI|$xm7;Y~b&Zkq9Dzb=jtWp(jtG>JV2f$H zk>2lm-IZ1IeU|I>J}=YPFDJFIsXTTCsSl?RgBHYz)jrwhvg*B__M+f@b+16woCRU- zr5h>!J}c5Z`$rR<*+T^V*+Y>o?Pa6&s#!rpU25d0{+yFnCk;pFNu%|byTA0NK^$_D zj7u{JHQRh(w{D88$p6_&c!3YJI z5=Gk`j3P4?y-b@lFCQ+;;y!x-h&h2kr8fbn0xb*aIx}G~;*!~dfk9IRBNuO;&?`sB zyI!6h=z5%YgzE+43~fV_3G1{&NnLknm;fjK7Bn0u91IOdl!S&O8lvGS9)pINsm09} zjEOlcwn%1lDAwpG^bn7Vcrs+L_)N$MN1g`#potd%KlTH|eykDS>KzVRqrG~>fc2yi ztU`?o?Y{k&n>l$4w{`e4AY8Q#R-hXXB6msZcL<1Gxk-5i7~!phK85dALbaip)K^zu*HrYh_5zDb(0 zvW1y+UE4%rXw8e@K@u=MO5#9Bx>i+M)M-1p`Z24U5`8MBIP}tg6t5UVgVE6qy3C@u zgGd&}9TZv|ce3#o$R7{Y<}t1Loxu($-y8HRP?W8~C~@~bUF`R{Hvh2?BhL=110jmi zrKHXTrtgQce8}6wcS7!t3KkNFC{iLH0#i1O|4Tv+P=Zs3DpO*A0#n$R9lTB+%e|06 zzYd&0P?wTA6PP|5>Pgcs#g@b%qy{GuSEm+u6`0EQGG-xvEp{Pktqzu{78ISHeOaNi ztX7zvU$r3b%&L`&GpBN@sl8_h5p6s>D7NeDWFu}lJGF4{T4B0(Ey&-yRw_#GCOS3K zQ1pp*((E(rP~NB3iN$$N6X`}`;@t=II^U2RiOJh+B$_(eyKMCI{8nOwoWVFcJa9!= z8IlTHGMxW_(gEdPQTz%NWos}>R_2c2ZTY$2HduRoe)g%M<6^WKouy;))yCqGz7qU|B7m`x$Sx(CR8&G0a!%G$)1|DMZVbq8g9|re! zix1P7bn#)JOBWwT1-iR>}|HouzAfX=v}yKj2X@^`m@fxD3pLH8e?J%3zmBRa$6tm6IDE5r&0kN zO3f)ACZ_`iJ&yW9Yl&^Gx-YApwI3noh(ND$^dl8#UKAQ^vQGM7+GuoPNe8(Y!_YJQ zAY2Kojs8|~3;WI>n>D^~+MjIBXSPXw%sKcu4y6voE5^_T@$^zF=F>*j@NBd&IT4VXnxQiku?X0?JUp6&>4-ZAhE{bi{kBbTx?TQO}>_SYUepZK(9bMQn0YR(QcPS z!1`;9$?AInB-S`WP{azh1&~F0!hj?Ll%-ynfXh-F(`Bha_OjGgfy&aj#)?tfvc;$| z)?ze9Axcn<`N85-mSow@A!PFSAf?t0FH-n5Y0T;Oq=DIAl*TU5n{ri~z8YZJSrP~AY6zjy-U#!Mi>!VfD8Q=2oY~B!%=RV4qf;y%DL=Y zG+y+rdEkCql>VOQNsou6#}TbdSNgr+e&pVFC>x2b1nGFz0lS6)r@Sex-o>M`KQR zjs|A$8I4__ZgE{aFxMp!IbSE<}{U1^eTWH`%`Z zG}AG^quJy)dHzS-Y@T=VOIBj1N_*Z~yxc*J+|V23H}+ewIo(_D733b`Vs~`||1OjS@~HpgEx( zDOgwmXgd!YTJ+*UgWZepp$Cvj=OmhRU6XC=2y<*oM>yJYj`l$t%98Puao}P61UV8X z4#6Z_*3^s-KMfA>C9Y%w$oH5vdD{DRV+=>UbUZpnMBW~&% zu9qhST?dcyXln#?RM3tTEUZwpnR%UtEtuD7I5V%)_QB_M1F5%J zS@2pY9JmOC;;nUJ>t`A0(o=5Js>#0Tl{d6+9pb=C+)%tQfrgOdIGd^)3f5gu4U;`H-~l z(xx5$ek}hky6*&o^kFWpdyRdLLL0W)h>!U1l%}22Ed- zUAVc6a!yZN6vlbhqOkasMHvU4uc#;VmKU~J-BkLUP_4!`IeCx zrYdunF{*+=15{-fZgi@gx9K{ZYHQ9@ZD9b_)-EVjlbQVUkRH$h=M>3~F{d7^!^$Zn z%t%r_$2I$`pi7g^$_1TkR+#rmF{=knhV|_gC`?y6@jzU?!g~@o8o_0|FSkoHQ*a-G zDK}1PDct)=RqK0}^wU1Pb^lor!#32FtAsNyk>MWd!@IO?r`dk7r*5(hQU8WOhnhEZ zfYiAmB3NxR86Ks7R(vXweVG+RXFmaBS8Y*FgpS*{L<<(NHG269HsD40(0$9)=C(}k zD^aPgY5vQ8RaFl|J0!$(a4cRp2az0F{sq-We6d2qK4mG%_mr2d$MbGn@(Zv#2R*~o z)Z=k{W)6MCxJ;yvSZFqVG!8eV{=LkKo2t?^HDM&^<6LCu;~^>ffUt6~GPu%*X@{lj zI-l0qr4wqa4`GA$D$jiyzfxxNi#R>_k_OasLp7rw?j5A+?|9-=>Lc9*>U#jS=|kR4 zmd6-Q+s=XMq^;cvrq5#>C}FD}HC~pX>dpx3RC`7~u=+Cs1*}29L2^#0g@?EaZ-993 za%g+;kkQLf@rNHGKEze?_Gel1`W%t&;v78?${Zn~Wl@iC+gRCwmu;uCI}ti=?-F4b zF#vKwju`21hq8#9cS-GeTc&~H-WYL7udUK!pv_vly+b-XEx|6Q*#d z8xs&W;t;)GsmeSrm2+f^rbRZw6)Yj?QWi4wDsAMvT`^j`T`}UfD@O0MT`_t-G)eh) z;o3Tn_@&Jg@*^$;{K|EBsy9{kbYAhS%R{w+tI{kS`#2QoMjWCKB~@FK-KFX^gyn+u zoH@wWqJzq|F6!gs^lRCrmH{qM;ZRrN$Rwn6F12ptVtLKu90D@FM-6P^t;gyVg83W?r#r%Z$1cW2Ju z@)w&JocqNl22WgUVgSU&Cf@GGeyGZCS)TSkER~l}asE)|+2(3xIUDi{XQ)`bQ(4T@pTrU0k3{bMNJR7_QRsdoI#u-UV+T-AGD3kf77Q(Th+btF zv}39wbU!-PgziVIDhxuzYDD+y9Y``1Ncm0&zxa2e-)mg`Wc2$EE^Sd70+e9%gwNCrCiv*n%WUZWc;Gn3%Va+R_Km zIoT4N<}h+G2(RqaKiRi8ec@WSAbxwOsyM&r^z8tlSq#jiY-qZ^z<$&fa6T_^e_9gSm|%3 z6lq&)Iof0NyN)ypuSV$8`pG6e|`i655GXzzSCHNkBFddHESdG0iEW^M2nfGp$d4up!; zt0JdQSaIcP{-r`9<-vvzXweSrj}u)ZfrS<6O3F8!fPpN z$1ZPqja%}T2k^oK>QjyGjZveOn|yg`kp1N~3?)dNj+(Mcv4Ym7aHez~B9|iYT7p!s z#7soai0{z*=;bZ2q_innQe%i*h`?`2_56N}oA}FXT2)!Xu$N@Hs+}U9lA{c!+*fxJ#QW`K{C9leL*}e(Xv) z_>(2X{HdAe-BYYN>wz_#xxR=Jdnn#m-o{Owms_3kMQHZS8J-tl0z~7F={X1bHGR!$ zU@kU;BBmf#wBR9zP=V|f&PdmO!0th~a6_o_S6XS^p~f&lQEg(129@Z{{kIU4I=atl z>)Uf+4Zk%nqQoAGZFIKDs%=-(qf*#w2}EU=;l57CKHoX1^?Cp_-b;MtD( zMQL#8J`W~G@Q@Rs;|`?|F|!#V9cDLn55k4(SrxUR6&FGo^V}5(psTF>Gt}Gkfwhdz z6yH8O2awsP`(Dk^eh*K1RzG7o?z26Y-M)eoBp`2Wzs5yU?u@g?_$h~m@naA*ioXgL zI6iL*jNcz^4jtGRq@X7RIeqQpsCQe7@V!$=JqKSlrvIb;+UXeC*D){D4k=D9Uy z^Uf{Enssiig5;cgIZLPk_w1>*dkH5X>G~(%p68$g9!0{ zq1mm9CasD%cVT(Nejm2?W%+X0uj|uZKQJ%YLy$?q%SeGE^TWLh=0gk(`;93z&YywE zd<6bS^6MHN46bW>9JsFSL%?+%X7oogb8MR$iZ;!VOjm_|WLa5{OpWZBdCMi7AOU%0 zOO&hY6h>p=X-vqHb>X_8GIu_Hj9Tr&{c9R0UyA%~3HPIq{|Wa6l)o?2DlVFK((qV9 z2V469>V)expg=MCVZ16fRjQ|g&}q?&I#6!x>hSJl0V~f+PE(%9wj>BnC}(ve4$=Ej zN-vX+4{_L&AsXd+a71I_VT*ZqM#ypDYlB}g#7nCcH5z?YsFbNb#B1G8U! zV(h})egd5VH32MX!jOkP>ky|ym5;Q!eU7Vm)AU{z*8b}Pjv#Nv3lpeEH6G%+{=2NK zeOKQY?zb+1#2SZ3hU=Ox>UHg0%Ig|0;B_6cY|H#LJ@$?tvwDAMpdNb$NA%nlv@k*X zQsPzZ=(@>so%Q>ztk$*t1nd-ppMP2F!l}BExt>mO z94|oyh$;wUXrXe1q1G$suqbi=tCwF71#)4JGGh+IPR(WfRPXohL}`(nZh6?~ZyLRQ z+Qpf5%EMuqXWbSnK(|zHyM#eG$1wE^^!> z7omIPqL6#!Ot*n=A&OkK5Jk`yA`?oWT|^PFS0i%Ri4q|@QKC?LGy0Biip2DPz?r34 z9C2z1zzY+oe>G4AT$W2CW?xRovOnw}4)ycr(tOnexgKi*VsiU7u)y*8QQ!~PTacr} zQ={`#3$8-OTzrrFklXGQnm@Oe)cpB`u=M8s=g<7O+aO$q-Uj(2jJ}oo!S%D&(dQTd zk3X*g1&YZJWAGj+6~uyDUajap<1qJ2sSuoQdDXZj_rC#nVFC@H27k*d1Shp2Zh3`p zew6}`C>d++l+p!^*u(J2kUzjcO{y~q8k^DHM^tSpsbt9jaiT#i>@qPW|&s=56{{uHD-tZ ze|Rq|_6KS!_K&QC%LZlK%@41`GWtIbYm>vuYW-PR^`U9&63|5?ybc6;5H8$K72<2R zxA!ac!CUlex3_twf;t^f+h*6MF8c4t++=JgGmp8-5Bj9vz^7V9P4~@X6(^PrI7d5d zd2iNQ?2mS@%tP0Sx-v=q|N71`V}orNo7&3!BbRRy8@s(ri?qr%tB=>ooXjvjbLL`w zwm(*1y3c#-yZqu!W8Y{nM&MfvY)D~(^QVBxvD{VVVc#umU*SKsM-Rqa#|a*mKjymM zF5+DZ?e9EUQyV<5p#%-c6XXA=ySC-VZ5aCA-{=c|pdXMX+ilu3%_MOzPaVZ(Hk!4i zjASQmzrMW4x>&MsK!Zv8(&_G=1K~iVB$FWUOVsW~bo)lObEC*Pr5KzQtE$Xb7v?2j zn($!*K0Tg;#9;XoGhmy*3=g*q| zE(tjFyJQ+o{H3*2mBnLTZHC83rga6R;CRY$1|d%9DXe!JzmztoE}+0<*J(5zy>Jpm zzvRoRtjouc=ilE9ZzQ(mw z{dKJRYoYq<HNk)F~y^pW&`GpT#E^jxz{xLQ!D|9=lrKLE)XM845vuBv6T*E9>yG z5>S&oOtjv?vZI%{GTF*h4`o)ZK`!wMvtnfo(T| zLZu(K5?&U}bRNLL4hjs7Fo(4C3TC%>UVnrcJ(?5kYY-MY;GuIF;*;Fngpom>a{R+d z5)^OrEClnPvmD{p# zEz9g*H(R2J+zFaQJ3uF~uZmIeQ|`RnJmiI0@k@zAJiekheI z3LsUhwOr4-thZcDTe&`mUrSYPDK}*v|7q^f^55l-1^*~_;H1CE*WP-JEv#@^;2{{6jQ7;_kQ9^PD8UKbh(O)(7?oL(HfYFirm0L>L|L)oEvwx zML4=TV&wSh49G@U$4fuPn*3^MXaXxXE`co!N+7*KM9T8Z+DHT9NwM+pWMMcw=dGgQ z{?1QV_doK9G`0~xr+8af=msXU#$V*7;AZNFwU-Xx3RM- z-3n>GG)=0B@NGA3B=UWS7^4$aC6DH7zFj_r1o7Bd_Dq}_$)2gmIQA^0kD|?0Z0?wF z#&*QW8QU3<&Df5Ye#YKyO|}sR#&aTL;<>VLcuM+6-1|`}3`HPC#v+hq!3do6(QpZ_ zSNV(dE!WUu-*F9H_=am(Y2I&Oh0llv*c}DP3)3y^d1xItNn%lgQzRD6pCGZIG^aXc;k+t~N-^53W&fyM{%rmMr0ua_UhI&=i`+x? z^I`pxuv_5YvCGpP6upa+1cH3fQwWq^ku@szXy8??R#+t%miO+BXxr;4Xu7s;%ij3= z7V*L5X!u80(mN^CC{M*k=pRyZoYePLSY<_*(|unuJ(v#RVEZM8MzBvxs;~0m>!5(a zYm0BBSy78Ok}C!qVt+3e9jwAv)jH+j7I+tN?@W(gd8?Yb&bS zZ%sCJ1d4~7v7qn)3CSUb$RzYqF&f>LD>ec;ylf0~JZKbj@MPm4 z?1q7=JyxjLb1=0YnpkPO@7L_f)Dr0OCbf5F~_t$Q2ViVN@Wdqm}*g@OilFU$N+wWCk`aD#o&{H6d9+^yK*o4Gn1}rFW z1Sag_irU;}BBsnCW%ti9pxftwNfiE)+1PEeuVzNu9)r9fr?51AN#>_Y~vn`Z*L@ z)o%(*L>Ra-EE)Hb9ECe{@X)!j)hvPrn1A_{vr`H zLPUro?NJ6O!eiy=G^sUisTc@Jg9cZxCs@4r2CTn!eQP%53tBkbgQYdYJqauq?y(6g zg$Mg=Ir{*EE7~7{6MJn{RY+<3fRt3X4-BBdeE=q^aUYC}io6F(RGoK#N+SQ%qVQZ+ z+q2c#a+|;8vpUWa8GM1NPfwIgTOMr57EG}7gjMR|1 ziHJNMo+gL`nybUJbfY54*RhPqj2)gy66bUy0OsvjbVTNkW#PFy7MwPF$6f%*oRP#<)=)r-cd2|o_Sum&zzTRn^jonj|0YAzhC^- z(Y7`LE$!VDSYZ3608ZG?CR{+)(k5`?y4oOIlDViF2|@YbK!~Uy%o0i9nW}oc#7V%* ztDFQLT<9dglh!&3mjI3u2cY0|e<1J&`~xn{8R7_a(lhWp^Ii0YLM3_qZ0F5&wlR?Q zAqlDi1CdGSrBXD0%htJnpKh{$U3TBn%(p`w;xEr`90hBN3Q!4mPFa7qx&~}rj!A-j zOo&WEFO{QVm)r26V8QZ1U`g=px7eij{`b6Cm9I6fxFProRC4KkHXMV7lq3$nSNYcX zi_dZhi>`I?De*}!twK_PMmpe-$ zz>~z2+U*s!7Y~U{&AUUCbmgs_tyT>;D)mZWgChKnA1>iq@CsWi1U_GJ$QTP%USaDQ zI<_rz4Z%M`QMEkR{I1G{IQAhN#dw#G}s=|eF^ZnxPJVG2&R0}3>wQfsuxL6`VK79nmmxcXLk*%YZ z?+tvE2q5h&4pqoHTVQO$T}%*#E0e8E^-yNjN)(5Vhp#2`e3CetAR6LXA?z0c8+f-_ z0cA9{GU9SOK{^S%RE$JfZ0*G_%GY9DW~)WDh5|8UVL8kgn{XHPq9A-Mge{`TXF?#O z4}_G@f#6APKeYJo`vDyPwm(WEz#BcK!uuO}XFtL{?b$x7%3ZPF$px0K0Jb;|2UgIq z3~1V`T~n8WmN%z}qV-L{01y`a70%&RekiMmABJNCaX%43I~1irFJ4WNvvTv`vVUB* z2oj_r3rt_Z*o3>N9fg~!e9VC*vmrsSQg%oLWP7Ccx>##nvOp9VF>6GD2`v)^XquIx z)_i?g*egK$wg(*1uI&UD&>q10JGS-$g2PX(f{61^2$xXjlBxgAhB_~cm>@LNQ)1DW z5QU`Sq>2n%t#6gBlz8E#+8tzFWuCXB-a1AN_c$=;`6E)(dO`SC65R-JG!sLPc}4CS-vLob-`#m20l@7ZVkmJ^7^Q?2X9cvu7oVP&jvw?{i6y__IWUe9}`q z$_s)9!yyZ*laH|pcTq12;m@JGZZpi9K?lwbzyKB-)DT5!P>dK{;G~r%uW!=l^)LIQz%5_}m{4OOyF?pKqY$+523O!8yj$#Dx`VcZ`j0*9IM@9xNT9p2Ut# zk4iEsKxTxFu*64Ook0RYG>QUK^q8>KM zE|IhUeTFR=2dr$3c+X))exD^+1qO;pwVn#9Wc4_}XQf)zs8iL&K8F^yAZ0SCT2Z3p zqK?dwT-0cK3}55Z<;3)?4M=?{4c8eQjiDNV@2e@_1H+>TMwQp->tobWDIyh%>DO7 z=-zu|>idozx9>A#=k7;LT(t7HC{{z}3TaZ&mmFy#eSMj$Jfg=%qX21CAqc`T6D0Il zF)~m$h(?OEBgBBl-uf%uo)9D3{iRay-uEfOdw!Hkpl6E8vCavN@8a$WLmqUSHTx$F zj5ofNU-E)i>QKMu+o#yO%<}1|b00zV)?{&VE%AS((~UK`NXPm=DU7+1j`uG2F%;Nx zUpR{z*m~^2vEJMajR0@dl)e~e`Mw+!pTU1*U zYHDA~ujXvMc4-*)h&J@;e@GI2^D|_E{ZowqlnN7|qD+{M!fDjcg9&!=)QJPUs3Pz@ zmk`I&sK(Mr4@k0X(g`wqw_9|A+|s-3#YESQ<;g%qKqDmf`#e#_{3gzq3#ZGL;jrNSBB;|$0Nwv3Uwl0>&BPo z@-8sGDAk|euGeYiK5PkrBPyXZf?<6?r3|f(B;bvxkD|ApJ{o8?{o?W3%dlkvEBiwb zVTJDi3)sF(Q-IwfK%$c?gRbzB?ldjZX#)e4dmR*Xji;V{5DmZ*;HQwZe1C*N(9Dgg zO44A%;v|&T695WCn52m?N=`fnI*DTvN$n?221J(dr*$OzgMbzl5F{OxCqzfz#|gxs zfZmdJcqZH(o(a6eGl{yxGokDZN;rF;5@_#J5^X0C%R^Rbc0$_w6whPm-n=6kY#$qq z1TO6B>)}Oo#+(1{*msR}{`p)uhH;$d)-iN$_)z3X`et7UHpwYwj@lG<9;h2k7X!=% zb)&*6M92qK0A5C@0)jcAs$|5hP{mHq3soR~W~c%aazj<=$l0Ol3B>$Rg@o&;zgeqo@RxtpgZZt82fj8mE^_?)W{1`ffA3Oz@E{2_&vB;rj4AvrcGK= z&aWTgPW`siPshF>nWD5WNRtpTVL^m1NS2p&HHF3SZmF?Y@S+-9IO3fY0la6ef-sH` zs0M4_CdP4QH3;VrTcppeB?yC{nHy9U^3lu|#y*|d2^Rz_gDOEi!pWkzr#M+Oe2|kZ z9`!6I`v`b@w=GUSkHf;;M{?M5arSkyJ@t4);Ky^s^qe-g(>4rpAM8?#?foRvS>}I? zy5|MH-S`vMzQ6CD9pIjJjK^hb;W0r%cs_y_o)Vnj^WUnhk>;Vmpr{M)r)Af#lq)%o zV};YIv-zuMUMy!d@I!fOK2I?mHMn4Yej^L@wd1RAl%ZdLcazMnZm<8izn%U5d3JUE z)BI-s`yaFWo39W#X4~djJ+RHAX$|T9D1pH4kfRUYe~s50W(nb54@yDyiQkxpPlBgU zLzupb9?BP)g1H?JH9?vr|6VrN>bK@?UcShJ;Pe29B+-FzL9#Qj8eh^p)2|_(BpupE zmyUxZP6r|=6m9_O-7#;>Azq8$D`j!57qlDlX)Jh3+?$2O|xNmuVEevXgEa$ zT|TxFzij1JE*V-_pobckfTD**#8kvgYA_A%%X-v5)uyxdRaa%Jm8|4)#uy-2yaUC8 z?syHaQTKxx)dT4>;QYYa*mZ08_G5YfAMGbuJj>-am&~mJ6dG@cQRAq;u*Jg(VDzqya ztxms}4OXG5Af+}Zii^>6Bh;f}{rT}vxo9ANOi}2P^mhSb^67!Sx+$_IOB+(_Y%z@1 z*&>nF*%po0IupD;6KZ`X&iYK?`V9ASxn7h-xqj=$^W}1o322!QoG<<#A*Sn1! zSZQA~`8OoM6coF$3nmamYs0Ft>uR6MJeOupjO#K4qZ4uhg&^A;Nga5QG&uUXI2c+` zj0~&GXb=rY0}=lr>m0yQk4=cI{(D$kfDC=@b9P{rcS4?1#qsOtd4F>U|@osH6>?JJh- zvxPA|w_wzNTly3#>?ax|74|TO3VSf3!oGA26(*(>H%qidOo5?gF@ZvmZH}Q1rJr!; zKne;^fK=JYv!CxJW#}i5`tAWg)>yB3cNJZr-YWWNpkefjM{65|5P?FlA_EGC1q4*Vm~nsseX?Dz z)9Q`vx4}Vo2V-bKF*2|clv=0PH&D}2>i8~ORApU0HAz!e`ji`4*E$y!TjU-gpsaII z8o{zZpjz`PE$Yb$) zYVn-bj3{7>WXA!WctJBYlp^+mnAv8NOZ6Y!6B*(lB%n?dD#7+8ta{&<|C#-_q0d3dGbGhLPI3V%U52F%nU&5-V8@f66 zqAa{xpp%EBAR?xtx_Np8@-6W+;e48BBC_Hf06Ru1sm-ylN67+-Ah^5Dhb1 z3@65Hkx+oy7L6EPwzPQN>eAG@)fi{p>OxWKHj$~CeZsxj7AN-KX^;Rc3Fjp@YM4mB zsG$=tXr=~JWc#?zdR^yB3F>ixBdKv5Eht6?R6-xA%=l2!BH3R{oOnSqHIyRr^hGYq zzYAh8wS%!DsvQ^$t9GSh##T*u=1ErccF`fZ?ZSx{G*d$O1rus3AaGT-LBwqbIoXcFUWmCOzT-|{K`W&$G|JleYTdRlmj}Niw(bxYh@@=ht zH3v@~*)BICnL;C)kyr%XbdLsfqhR&b&&Wp0b69MlC}CrCKJA zUM)1HYTX~G?aBOtzQ;klpcooKjoY-5b(1X0N-olBNm68pMUL{La0sf=5!9LMH=q7} zR@d38puMXP@w|cA$s;%pgjS3E#!_Lvs_}VY8G;LXUojLYH+}+?n~&_jTD=CC?kg6~ zbpJxN;I{_FK%Lk_8iZRi-V|yKdfqKtyMOAvGqOoD$1dM-acG0@QIH^5#BU()KjSuA zXASJME)7jR#u(IPUDzE#@bY-K>kr7IuR^$&h+R~}uUT7M zXJBs{^Zz=BGFzmeJ|JAQW>Ma&C-7B$7|0s7s|J11o-UVna{Y*H?ixc*?2~Rc>Nsul z8{(QRj!ub>f&^emATQCHyV5sOnys?Pj)MctiR%vaO5N5`tfXyUzm_@j0&)UR;h&A~ zqfOJ6rnSszjBuL~!9%4l>?N%hcM#0SG7pj4!)mEI)=#ZNjd9jtl=eyUid1J7a)v&q zrqO7JQ$=YtH31L@Pmj{i%#=amuQ^+u`ku2W=Znr3i}a?usqJu$IN27({W}DR>8FSG z>NczU(_CORYT+XsycosMf?{N7CCs#gq=7*&ya1CxY`-@+#BWnDp2w!&(5v3SxHWIU zaK)R_k?Y-dFp>h)#mElmT#^h*hB;;8fWM`F&X9q70KiA?cVPmuCyKW}Z}gsutvcMa0t5DffPb#T))b7`6}6Q6({@@Gcks*jJS$Le~h?_wUs)WS(I}qJF908 z#Umr~pipOvJ*cmGgtfUUOOfQX@l{0~YdVg>nhLI}sJUOAGa?U;0Ye(uC2lC1Z-%qED*geO2n? z;I7hIF7>Fu)^SYaspOcBs^u6TRn6P-@$n6O0qg+Ciq8oYkWJw|=FSle*msWLBoSo0 z!z-i%5RH7OsU51r@%m4P2D?jFJZkUom@OH6fY}nlBRCF(SIetsSxbZTFE`aC^s;%@ znc6V>PDHgw@#P`K+$|#lEe8@Qe5QldPKTDO+GCZGrI1_qtnl-KpA{tYwM@V#^d$2Dl}fhJ*Q%l&X97yo;5dOGS{p-^hYeGchmDsa4;z{u51Ytpn5i8>1jaf+p^!yF zS1gLB>@PUVD(-?oLE+WHX};Yki+Vx%RaQ5ZzNLAojLK4yChyZg8^~E?!o#D$DiQ+a zsx)KzsZhw=Qx%I9A6L{S`~`byN|U`bD7TlUSVS*vknfkR+)A3mdmwQ>IY9u*&_hI5 zgc7<{NY99^VxR_U7336ATJ@NNxjX$$azKF}xj`lpOfO=qc3ZBzBvbeRdMOr;SPJ$r zl&bZiJ(}R^t^LOhebz={yaWZ!kZ3M6shey8F7ys?^wu@R1MO-Eh_w2%ksPIWR$Ld$ zO_>!9p*0<#p~I6X9D;6kV1@V}bQReDYp$C_knIkvkO@uM(A82!st&_fz==aW5Q&kd zB%N1;aXE(K*tbzo>^ty#EkS3LQh57#LUqZlc$$Y1B|zC2a>i+=)UPnzo^i%PxPv0A z;iz9?ek`+su zlE1f&@b1rUBS4sa-qVlSNA+oX>~S15_Gn0peeu{zu-e8D`Q=-t9z6zBllbkUmtn-x zrib_FJv|mmAL_wQpj1B*i6~MZ%F?G#fJxIwoJ^H@ipLA5(A2o9lLM1yo<@oYsz;4K zn4sAo6Hrde8BsuOXM~B88={}%-t$b;$Zy9nP6p_9f*r>GGsF-x!%LqL-ltXb_Dfka znK;bi^cM}Pw7a>)%M_cjIZ!Fd?1INiBs78lW zhZ=FShQVi|x{)W3y8SBu+RDNFgtn3Y5YO4a53mT1@j;a;^So5#Q0k*YHIR#8}(9Z1RZw$T^rd-g$uMmTK^sY0@StQS@G*!vP$ZmR{_ zI4051T{<)tK{q{;N~UG9RqC~CZ>@S>W zMfMI|L&*o@DDIk+C2Ka!ZD>S5V-4gnuNzN45Qde zYR<7Tmfg|;zB^jUc5GRRWy#GIh-ctZd$qei?dr99jl&qtiUHZCYl12aYF7X~UoCCC z%V)gsEY4|TsbAhXZOy!3iQop!n|eSg@rSd%DPogz5g_@$@LYtl+M1UN=%(K+?#3_ww}A zdA(XhN~Sk#&`SJC0}b2Eg;F7I<_76c6F*3QYB@qlLp^^;8{JZli2M=1#Q*=^-FZ1r z=jiOX)AvsBQUCbx?DX(#ax(3ldi}}S8JeD)xd#XqZ|=`=jCM?)PPfxJIXT(sh^O$c zc>2fvo$ldb=eXPJAN4wn{;=0M+;KWP8+a1tC(%x4BeGuL1J3<5+!-GKfFsyv`pW6; z&Jy2y<W=_}_?aCwR&A8y^i-cka4?cph6 zCFl-MafDexW#qs7%9&s{i5c0u$iorSg1z%yNcCq{rUzH-HLy+??<*9eR}TAwJL*?S z=mi)C#`3!#5K|+JUpX(S^nLiJ&d3J~6yJv|KX=TZy7J#S?qucvu+!-=`u<6;zb*fp zc=+0UdH{XCuhC?9_5H!{9!1zYxJ@R3?`9u(D@pfVy0d-$Q%~o#bJ*?oywlF{u?vL| z9l2A_>)@l~$@IAI9_-jZozCH!@()k3{P$V;@AZz4cbuc04Ltwz@?UFz-h}R0J?rcL zqkgB~mHL1Ee*b7&|8L@{2@odK4`x-Z*e^m_R;|!|L5S~!1)v?6GP;MVS^#26O;GwGW1yI*9{WT z)|tT-evT)mtoEEoKL{L`pXbg}hxoBVIwg@4-($gff2qPjNrzvCX>S}(T==z^&u+j< zx+9K^zs`7ziv-1DE9X^aw)6$dm^lfHmXKkW-j0}ZWC3PI3<|&b$BEI5LMNTLK4Lk{ zV8-_xMU=|?1nMa7i+^4_;$kA$D|4=a>n0e>ZiTL2ll5kd;*&c;_t?+N=^=UtTk+mWyh}c3VtMifNX6y2_Z9 z&>!z{So8pTPZE|@tkmktyx-0O1@KV14(KrUA3%x zuu4}d__NB3bbOTt+rNP>(7jO;)mEv{h2Q_0C#3cLCwUClL)8%m?ZR>xq_#qEhrn3 zL7XZd%o%&*HBbIMepJoNGg~=yjd0m-)5NI$hYgkK+Y>b#UMj z)_<7$ZbT@V#``XrAI#94F+PA^&J;}!rWir4(gP30=z#0!v%k;-@&m}8&!8a0pZVcu zLjTV|2yF&}b(Wij9cnuLHf9-k*1d31RP;Nx8y+(`mHcX$_nA?ia@ zLS5-gpX40BWQ;X6*oG=za;Rcy*K!rudP`~(_HEdle#mI^CZ@m&6Vh_Ilx%c^9}CmX zqP{7-fH89Mg&5O%^|DyIB#XLmV^(4d%tN$bRbE^_hFUYL#T$3Au$gCMkd_@31ahW| za)d1BvcADmIiTBdy>3-f&AV3Oo>_e<+q*P-sU17uRpzQn@3mCqseVLDXrUP)-COC{ zS=ScjUC$inl20bvGLp*drR?@@JzfLZ;HsUTmd&*rB&op;j;n)DOtxi&LLRl5_!}2_-=iXBtg#{D^V5bP&djb&xL}aD--j?i>Wh5ebSP zv>S_QKv*=HqrON5^CO_OLe-;c21YRQ*r3v>r5Y+d7Y8?&f{r4sGGWkpI{>OrBQoc}X?EK%G|8C8&?8yS>56P=rWjNq z+M31pOs9Jih`u11P*#2Lu{44~a$30NKApqah`Qz}Dl$q1XjP|0XNBA;ny8plthI+W ziywm3xH}FNz|fz)!4EjlQR*Gf6wD_ELl1hn9)9qJCxKZFeOP4DF!rwSLnAeisJiTB zgMFH#F z#R?iBv8zyfGBQ&piL_TINP39=IuB<&@Ry5-xR_F$kJ>~QWyWA<UuR=WVFII4AficP z35y@*`QD(nz?VIWB_x+5(d*vchzu-(*6-jL{qVBL5DO%ifpUKo)Y?6mI(iM|%!pf784r^j2 zynttySZq(p|9?Ds=Ra@a{*V6AN#~^3J?ioMKTfvi|8L}3bN@$;Yi#fT_%A#)M&8K% zAKgw@I{&|aa&o*a|C@NK_kT!dvS*)EN40M+1o_uLowI)L^tf|+i27dl?CcPoxxLfg zX%}_f{^_LaeW3e4I>$%b`#(1E)Y|{q@BirZI!BfJKf3+Sw*KG5BQES1hkpEY9nSm^ zOLusj@A5l@$2V{z$kA{8-`?H*c60sX_1*3-;<#PjfV{WxBz5` z`E48YqdjNN2ql^W!KXq>p#R6{x}W}tSTo9vUwz3Z#N=-pkF z^ta*l<=yq@`|F<-ieABjc9=jMVmHDu+t7BN=7xg!HX>far_8Ry2R|ZwrN%f4Ah$m% zS+dvZp8VF!jalUNBhKaz`J_nk_ZQN~eeO5Qcc5B8u^qR^#~k6V9NoI|DHxVziVxeO zrsRAT$=Ae9C`8|v*VLRB`GL(dZGemmpe_3~yZlCrZz4rfk<3FtBm+yb=9Gz_2|4lq=;y-n+ zu^anyEE;b{-90=$IXOH%>YnbhY6OQAL!JH#+N5%zXd4oGNl%@THxd8ooOI;)&vB=> zE&rQ%R^IPY3KI-;Qk3LZRr+0L+ zjsI-oskQ&J$A3KYy_dS z7)T@#8>6L#%$)x73(vb`%@A^99R1)&ae{(Neom14BXlOPq& zVEfajRXjPRu6RbOC%ueatlm^16<^G7l`dsba5Yvpy%KnERnfTk(N5_kSi#m)!dDh7o9Y|2>LCCrTDahLP=!|r^<>G)XOsjIHp=9e@t5~^kb@1 z-p919qMpR}>|cIl$`JFrt4F^39>*1^D=E#;u3^WB^yC@=engQsj4_&Dxc5HhXTwy% zs;EqXs#tM?dU+-Qze3@ds!AjOU|ayR)cl>y)wr0k<)bv2<3Wt)6@3fe%v3Hg;IGxZ z4Hf5+s6uU1RbQqs1R=ALp;QRW0Eue>@_xkE5t)NsE3j73nSooujFafdGzSV_l<2aL zc91v+p`enxrSb{Azag;8P3$=u;rRlNlBvMaBG=M^DXXahqimpoc_yqYdqB}b*;95` z1@~4;T!d#njdAo1npbUC`fO~g5|0dtT85!DuHn!Yuq6sTlGdgpGzqGRR#6&)Tg6V` z(35Kfm`@Pk%YY=FnEn@Hs(58W!ybf!kBm^JFzh>ggX4=JNcXN)dl041hW!YMhXA6M zVA!XCO$WS7k~bKukQAwmJ4RJ;LhpKMCg2#WOBADk%%Ja51y=rU2uWg+!BNYw03z~2 zOrcef$OPt4%3LxmYAG84lO4ah8Bm$DcEAlnctxV88iaz%a3HK?#R=-=*#dlnk%yxR zK~XjMrKU3sg{@%5Npxh|0U+cUWVU=eI{2mMHMJh)5DHXHP1abf~p7V5;gVzzFr_x0L~7s)^k^)T8F6 zhuA#WQ|88&o@opWstIg|2=!Vp+9paEW<_=s>3rgc*n<_#75qvnW7JhvoSblC}mj<)?u*rL+Y-LNhha?5iy_&O)G3 z^0x!PUbFL?V5;P6BkoIDhy`hTkOe;-%!0B#&_7McA8-5ztOYwGZV!0IQ3rZP zYXu%?=>5uwdPZP5i&f?#fGMO{&SF)j$g3t)QJLGW!b%vTUY;R9!BZUQoH{{Dsd87% z1X_A9g|*dSw2ibd&5Y#|7Nzr+Nvzyg;v+*WQ&_q1FeVY^6Voe}Wn?sV6XZn}0*lPw zZgPC&E7k<@_oj=1(!~6g%+qx74^JEiSm{35M=QrEa1eUS+^w9YUinsL>uW)@GE2`n z-QY)MJ(hhm_xPLxf3N0l?(buopVzDmOqWTlqS6u{8BUqPDjp4dzC!AFnfPWAAWIpD zELZWi2!R0uRk0AvExR%q1Eu1Y9hmisx3u_XEr6Dm+>B|>YMU`_W1&rnixN*8%WLYa z(oPq-WR_YX&kbc0o|X!0(dD$DwX!rw7g{STgVsaa45Ai*L?~RYB^nXsw7pDZF=emd z#J|@{GX}@|%pUO`q%swF#9vbe!mQ;0RbQi!{Pua;CxHd9hVG^5g#YzkTgvekwZpRJ51 z@eqJy3D%Yq+(i6GVKJG+#!_WIG9a14#xf9nU1J*l-P$%KCIX8r!_GQn=7&G}@qL|% zGP*YGRA9+p>&USK7h|*rl^}RtI81;&4luVGME3Rh5CHcU)E{{30X(M>fWN5?#PJ5u zP>-o%TA}#abUs1iAy6nKn9d-)B@Y-lj7VuW^6LJoW&$len8Mm>Fxp01w3r!Vs-F+$ z-P|R^+U?`Dq*|htz{gbI0migt+mETX*~hdMi}O9)Pj3lCixoV73y1_O(ro>1F<}z zOfb2vO5gNU5gxBvFbsP*qm%r6(WNY6gKDE+~EiE9$y3j z%wF=1PYNh9k$ERl!AU4yE6p4nuvr1gd^&iUUah|QWUxq|PXQ`V>XK;8PwbKyNmyh# z=BIZl7*QQmR@NzV(!geDu_1cE+9yP55NpY2ifV~xblTF5z~j&pF|RzT=MpCA>3WX* zpaNfuTuTS0tfmT#vVjJsnZT37kZ+~wOH`INSFz#*_3}&s%6_B3Cli?t(NvuH_gZOf zfvYv7MglE8>_N9--Sn&ih*;xN{f|}YuGU&J-Mv` zhOL-b5AiUzaL`r!v@j228waiO1EK6qeo2y5(mWhEZ&#HS5?J%WetGJ{cE060d-cWIK+m#ERq^DAvVpY8`#&e3C3n z$2zi6w}#8vci~DjSMqiJMj{BOB-f$qDYC2LHSAjAHAIvWms;XA>`nWZZR5??8G@96 z@#bqKN>93s8P(?LwBLYO_jYJBc4c0&l{PcN z8#vY!bE?{mHTe3r?xZ!wp>9pH&Tgwpv##g<7BuU6>?_c0j-5HF?;?BT=G#&TD}eWN#z|0#C~b%9zt({%<*tW&TsrU<%|c-tE5IeIEy| zH{IQ7)3Zow-~aB+aEx|z)28o#LmG?+h3|iNsr;}%8noa4ZX&^X=%0tt48`do&8Jp> z_b&0=Q>&_L?0ypl;nfT_nBwS^4iNZPKFN4J`2{;MIkkR&N3RkbdC2#E!)`%?Wx05Y z5}%GSQw%S8FctstCjem|PNQP4BNs>13VO|Rpw#bP>dL&jpqBwUNuQmk7X5>D)X$Q@ z_3^^}eH@s_y^psF&UULpmBz`N7dqd;d3*&fpFq zhv`JYzWDl(PX+ju>{I<6hwQZJIi{|Q#%}MZ@Ai(-Xo!b{;}f^*I=DwigsD62AMTi^ zZg;rp{)Z&o|NU{dw_}ZV8c6^1`@gdN*&}qvC{>OB!%<(D{|&~&qjvmnBK`HppTD!U z-3xfgzc{sCqyztp1AaN2!(m2|dHC1$dC2#} z$J>CQDLxNfP(DRI!I@(E6pB0-FLeq6^9VcPZ0`BkmD`1qILvcgniEG!R@lW;FQ94z z5=Y1j;+29Ae4=^*GAZQlyPap5)b9VMUH|omV{!dAIvTb2e-mlL`md^M?84k}Ht`qi zKJj3fs9p`WOSXSks%qp$)_+5B{x=--+Vx)}skHvfes&O?jhK2cG57vL9LBAdU zn@I0_Q|rBpEBoxTmzO_ZzdZZl^Rv$`U)@~Y{P6SH_0{ffLcHM4vKJ)AvkzDP>YRtZ zj~$rykxqKXNhXm!Ltcgsxc(6ceG|IaC!$2QF+se}H$!D*c3}oW=E%XBz%F049v&WA zACY7>L($@s{L0Newu-7PN`+W=-UGH4VPeHJI}SsiSOLZ^cIhA13LpGNA6r4<`yW;oPblvoPGf@E*WrJSEhM{|LkgG`8}Pep|k-$&siZMDbDlFMHm%p4SZ;sx+1bifj>pS>;jXqP&$UgQ>`AP8e? zf|<4h%ZV_Gv4u9**ffkRjGTLG&ffP!A3^Q|RKbBovuMru)<-GAx$jYcLKS^N@03`I zySM*h|HC5Tbxo61SZyQL+K9y)HLqp!h870C!d1GC_ofRA0ON(_ z!$F~ZJK0OIGw{cy|XM|K3~I*b$DCC=jh*ZGG!g?y|E^<#L^}wk_$N z`xr%RNayWj*_ePI<0gEI1MBhLqm9fQjf4t$B$J9m-pI5$*$-kxtZ&iQk=5B5^w&dn zEF8Q!uC}>S zyl`cg>qu=7I`q5kn&%CUBM(1d!kWnUNNj~u-XPe`AGdVaVUH^0IM8|%A6t_Jf9mp% z>|wG^WzzfeWeWY0s@xO)PIpdO5&!?dI%CtAk3_M2gH*(JLY-5yC&+o5%V)z?6ot_z z7KZZRdX}KZ!zzoOtp(~8jnVv7>c;5L2y@gpBH09olL-r8G zheF?Yaj@(?P_s9SIqq;GY~(o*`;5>%3jN|>rPU9zMm<=m@B?PNI5_exc_w@E)YgAb z>;ISR{~C^Z?fS2Yw88&h)iv7vU(X;_HF6XF|6a-eH|&jD|9>N??Efz=8V@%wB-?Fa z|M}GGjz-e>IXS+yCkP|Gjaq zC+`31b=&2y<5J+_Y3d-UUZDlQ3S4pRR=j2 zdI5H&rWXV>PxDzp5GjZ{G|%vn zeq5x!4~i_y7YWq&*$^J9I}N4AL#F;Wth3UB;R5!*FrZFt{BL~y-yO8$ei|IqrsKWO*=HIgdZ|LNENgZ_9d?*AL~+VQ`Uv~mBR=mEHnLYOa-e{TIx z-@<<3hZE#qhrYLResyNsiiGZ|)dEOiRVUY@dqy<{;qQ!7R5>61Q}e`FQANf@szdXX zSWySr#6$N}!X+gendp8__>1%edhTl=@adFq5Q#JALwaKHl`EsTZCNGTD2eS&;}xT6 zn@+XamG`Ax$9-v6- zxb^=19};!798Hg%-e^3bZvY0v@kwve8}z1w$@u7KI6Z0J|HtBg>86m@|JOvSZ2u?s z|Mhybdx-mgy5n~K*GSqB-wVs=eAnl?xLv6e@GBAqyT6xXV{LCX_c7#Vn@AxZ)=npg z;EPD^yny=z6=I9N2}#W6fW#vAVdA^N2Qd#J;;~*U!l3oL2+ij>>f{;^EEKpaSr?dO znLNY``HyHpK#k?GaM^H1D+EF_7S`Tv;Da&l%_OfzP1_0fy(sU3K>zZyyw zEG#e}uUZxm6=d;3UI1mXs0)D!PRZ3O@Ur^Mp@Q)h2Fy#L3=!d8*pGjl#mtEe=6ehsC>lB z(0Z^wPVGk|jT7V5EJjpi@_FPfB>-WC5N!v2EKH&_>Ig!N(lgG;K~_1$LMeQXE{XP> zAc8w(nw%e}_TjFSP7=5{f(oE~UQzSV#K#awdkfe71=S0gdkjKOFh>xg9Oag-HIl=~ z)nK1s&;@2N>p%{+Ztd-}K(%DHQ6~s=u2Do752|aA*XVv$KT%St6`BwJ52t$<2##Z) z;r+7G-=$_`1!!Bx^Cae)WR1at)2xs45}li9!3@9r6*+O@1ZDEef0;7jfF;wnT|)Q%TECI?_>YHV6BvWDl@ij^SN{#w%SwyyBk(<#C6 z*4567ZD0AkT-yZD1kAEI3Y06~4HJkLCfErBm#k;N2i)-M>H72mI9nAz8XS12|w zwU?DvA->H(x{9>L6VT4Pp%sVuz)l~22%?_n5!D;SJSN)MG$QpFzcNfag{{*&w4)F?rFvN@C=v<5Vry7RN97{myw5A1o?o zNTgHhoASi%qnl6Cc@&$?SDZ&uT5NQrfPi!$U+nCEXk=f0^aK1+Mz7QSy{oU}Iv{&X zV(XSL^;SJMJbT!4o%=fNkXmI+*IRnV3Rv1*q}sH)yNIBwhTf6BaBp9hJ@cgI|9#r` z|J3taivMZ%e>Rggy#KH28oRMK!{_X{HIN>T`{U#O;Hbardkzi=hPeQB?M310MuB!q zz`rR~HF6{G|Hmuu|Jw6k8%*W*|NP|D!|VmmVd4Euy9wagrQUEloZ$YEJ2~l2M((hC zJUkiV5gH%&&}cLrH~;>h#s3U?ZTwFosj~eWnE&-hLvj8$=(gW~Y9wu#|5bI3-D&8% zIATwbQ)_|A?ggK~RqqLHXKDYIRMp6h%>T;Yf9dwe?fu_GD$oB`&xze>)3Z*!Bln~? zaEGWr>Gs_2aEQ9oqwcgnK02B9rw;n3=6}O>|7Rnqvi+ZY|L2(c`bzshhpqpwnN&Xi z?d;;4t5=fX?=yGi1^-;+_t_+j;u}QXrdvmg5t+<1Q9v^q^Kv$ii}8taaLwS$GuKUz zQpN5o{76I&LcV68u!zF))+*7A_@yXv24;p!?KLx#M>yZ0JJHr+p0>d`0=q5;*ESsv zj{DY&;sp8UNd!*ug-Ajsr5mhE?{06pkimgawN6cz0uI|lAkvhI=^iEUnU8|E?1F*< z9a5j604k`&BE7C_c3v8;iJ+RMp5J5V?MrXw#n`=c`Bz+HJUe?po{uJ;@5QAqr(Q(K z7;5!4wovgcP0^|r_FjvB=YzZs_^oW?yBQAHb3m*UsXVy~3Pm*QgaJc&c6CdQ`qa<; zFmY`s^5#;$qR`VZT z&%+?VtjCCS$McEgHzEC^e=E0X!u3oaGm{ zMaF94N=8s?Rc)Z6TbQ6<4e8h>C(SdB+BS#aeOIbLvmGz6k7EoUSCSA|W@-}<<}?DV zq1mOQf+Q5=g1U6p!-0^JS_8UxHo+0O_vUsoA@Jyt-D(Q5O6sYdO4_NMs&akmRnG~K zdfMj%XsGKs!LfM1kTZci-4o+i5a7BDT=&R$Ku~$afn0r$I6zZ)#DQ3Sk2pZfMpr36 z!?Aq@f=D}DErYuqhY^a`(p$;Z zbnJ;3kRw;1>Expr=O{*gcn99G5{K1neG)4moP}J40ga_M=na1Gh-8W?k%BKJ1(MII6nQ!+V_z(^vYO^eR~;ISzZDrV}pO928hQe?JGOKUhx%QP&sR31l zl?-IG-WuOp#|9Obv4YxGaG- znEU|%G^o^U!zoAxAT!%=;!$CCE%(D_^Ud#u90>jjqtX;s$k(6A3Mib7T#5dywxUJq znbdA>l6vN}sze&-W2vqhJDUozHyF9E1Aoy3u}s%f5^I1@4KyMY#B5r56H232iUJ1V zD`gnSl&diaXt@fU2+!cPmr8_6u6?^=N=8xZx3!5D(J;xVn&dtmv3k_Rm5iX)s@gzB zw=hAc8sLRT)t*<7sb|Nl6iHmBf>1r%Uja!axDMp%i>_OX1~Mv2b*S>tMH@#CbXJ;p zzAJJp3Fwh4!$9T+HF|X3;As-L*Gc5uBZ5UPE4iAlmqZNS3FRs@UoO4Dv+x104Zr2t zh7q_T2xN&W4C8P)h{}CbDXFA7v#}V{p{7HR9l`PWJ&KSM7Y5ZbH@Tc9v$bd-qoP!s z>NO(dF^o#%LorixY!DzILkh1wCJ>nNRW{Nssi}QLAdwJA)Y2-U|A4ch=E5WMB*r2$ zsg(B6C&%JLV5Leuk`LiqeCGS$G5I`Jn!6^~qJfNxQXQ(da~H*U(~fexjveJ?H6p7zHkDJ5 zWfS>^>uDRmuq`5pwi~~& zEh3x+ZZ>k1+CeI(y?uHu8px<9HKkgjSKGU3h1N2EK|+y|`E^3>Uxl$Z^&BK~LY9Q| zy^wM!5U5nAMK77euz*)M%&b~eN%{6Cnq`V>JJyU1Q_@ut%Q09L{mtI7HaAWK`OL2n zWd_nA=O)dgErBwnSD-wu2Pv;%m>b1bT2aRimUAUQ`D1+GC-E21>fzY36DyCJmo*I6 z$kOggyOMTS(kfLSat**+SViSpoh(s-VkZl1uiHsDsT*Bpi_8KWDnL0fMtjWf8!AB@ zj72CXUh0uUIdKd-3+2RNS%q@q<#rg#i9@pq<;08aFq9LAW)YhyL2g&viU>}vEe*Wr z8YFDd4TWc?<+p8)PiG($3+^_Ds3nB*!^g7RuFfAzXr)JxWwBkILYB~qub2R;Z9{Gu zAo8r*Hsn^BH6p)1vOyw0Z)=lCC`E2C__F&*EdX_!NG-CyaXQ9;zTF`|14dD&Z+FyB z!Z6R<6*px!2mdUaw7tP$%bgv#9W2|lGv9+fzjk<m=~#xPF`IUz+UR|9IT@-#YzH z?)|rJ{r+bqX~p|*WuhUT^(}wvt$ytHpPb5=T*>=yz5M%c{rdf%N>ai5Z=eLo4E~(vXjNm=+6BoOOBkyl`|4qFA-R}14_ur~WrTl;N_uqQG zez$Mxe}|n;J^xpc;QhDPzI=9h{q2jdhiB-GH&1`H%!8qOMWm^2*3~Mq(r9`Zgli;~4|v{W-b+q933WbU(cureCf* z|Mc?W*>%Cwb>}`ML9DAvi?!$pJMEXrJYtu9yzXnF4SMu8y1b5Xz+~**8SfC|O}m4G z1N07?O(r;+pJsBOQU;EBL;^ROiisfR`OJ&kW^P=H;wkbh(-l37j$ z#Wj54{{>-;Zh#rs_vgH*8%`#?1BjO`e#THZMg&K^&|#~6{C4ImLeIj0K#BO4pwW!_ z@e>+IQ9u*o-r|6=3DblVD3)$fQ;`e&MjfYzIK`9~246)q3t~DU2ENM}h{rw)MGIW9 z86R`v#so78eHVvl8ig;ZM-WB;-RCHykTEp%aXb#A31XoyObJd7j(J!5K5|12$OS+N ztvF4o*@*;wLD`+z8)v?+8voJt_48r63vk5wH}j#x6_uai;K^n1gu{CB8TCA#iQ^c% zcg!)M0=6*Vq)ozzJYj@4nrBGypbS8Hu=OS=p0PNbpmXuhIVbbNP#*FymCc+GG8bkr|G#Z9@J9xQ}r7#LkOW7emO=-kY z1Re?q@gxqAL_vQxUaFgkP#T>P2?X`Hz(nL=FXq!@f=`vXpVgTeTY znxdch|8Fr3xIi#}AH91DydoKj;I0~V$@7o~F&9;QLn24sUt386ZveDokb&i9BymV$ zUJ4K{N#6vRabD z5v)W6g)>nUnkgG{i(ks#V|XIQ^vEX@&P5W4-19R5Rt;>HX~Y)<`^lW2XUuzQb-t~H7SZ@k}^iVXROe6Y|W7B;EdZbuRKcA5qc}Knw zaEjzEhR74@+n7XB=af@&wsd2EusQh8Fb%c?4R@s9fj*P-p9p`=fs*JH0hE_S_l`;ZmRfO7rOfpEV=;)a388vWLCuuu8lPzk+=GvGKZ{mJ<40XVa;#7Ijz`ggI1Pg#+dNDBu#{{5jn5 zScmv!}1GMe2upN2PI<0#-V+St>&D|fvhFgcZu z=hHg^COf7=-@`LTKv9)C9+>rv#Ar4}*yx^R&X7cZ+uI*lQ3cAnK!Vd?T&;xg9t(5M zA17yZILpoKFaq#4Fjkm~d;1n5YFJCAr^k~XCAOsNn!surzsWcsNPxt0Ar#lqJTa$8 zgkDl?Wz!bwsKtxf5=*tAGyrX@N`-cz%$|cO7T!d7dOLT%>9tPM1JcY$H+mybU?M9+ zxlpwpGG87VzKEhQVu)pbFPk6a>Swn;4C!R*lMhJ@i+DpV)8m=%e;N5rBz4AjM)R0_ z_x&kiGv2F=X>B_BE~}j)0%Ym0D`zjtgkuD}OJL{F33ySYkqo01BagTwh?P$BWEzH? zn$avqRN6-AIy8W5kRv|geH@d>^m~AQmr;l1k46Lh5~}?$53sMp=#E5(0_nJu` zh`GF(Yr4@^V<;skonee4u2)*};rXnX50U|BisxVi{!jVx{L3_7bZ1n?nvm7JSP;bgpqd9cTvpyr-LBh%SJDJ9~i^liBF{~K{tRbGMeaNLruuSe8#9_ELwCA5u^p5ia0WNs7 zyznQ4OwWA!lJN5SzzB)Kqs1ImCMmKUiZYp(!%zj5L*U9pc>i@o;aWvR@Z|m3cuXS0 zSSqdxCwN6odn$4YvyxTxnlvwpwdG>;`aw1l+{CvWw*tkr*5F2F=Ji^+bJhTvVxqac zUK-|y$sIV^8;yNQkwH~KlHeTCAB|)Lwwei9k|aYU^S0VUwvXayUeYDdmPlPWDQb=U z(#Rv$(*Rt;!izk~t&Bas0ZXe&vXm9W7U!f+j41YTo*3)U+>E|^Gc2TEd-Cv_Xd zVmes|`7f_-fb^kE)%*enx4xPKfn(*36FMPy{VcX_ zfCt6ZQ{BFuzYs=mfzMD6VOt58CjP);6dB0!I=yV6`~h1>pN8Rde_#VgDd|>1UeM7+ zh|?Xt=ISooK5|1s60`=NmUi^U8!V}`;oeRGZ_TU~8*k8J>~FAJXQJ>z>z51nFdMdZBj<2@&5U6bnXb^>hK7tq*q` zMsj_pylxuO6Vx8?%+q&Ki~sxN$v%kn*F+wLqA`hJXu<-1k0XyY6Q}t-FcISZBFxJL z9{Gtwp#frWgu=y)ur)cx?x|Q-3mWzv{eH2)NJ&@^HYA`azcdMN>D#5MOi^#ku*YX{ zgYq*@qlnCFxA^Ge5HrG=SZK2A{! zPUsgN6xej8=6x}YsjoFQ(C--mzh~|!OajJEwF+$2sq&$`3*8TrD4=P3=UtQN)r@#e z)ZTbSv^}3--6O)KEgPUuR3a9K(=8sxAL@SYd5I35B85@Za2`${PP`ZY*Rff1r06ta0pY z+hHXVh);cfI}7g8=gbO({&_^ijZ}0?g}WYMI3oPh97bpm>c1Jn@_i(q@Y@GhPp{ra z+#Jyt9Y8&oCEsL@J&DhuMj|I>Jpf9udn@(+DW(ykK^B+-^pSAzDI3cgyR0S5ss=#k zn=$hy5`TS#{TYb4eN&Wc8D0$mrsBn7a_|ESgS|Bvmuw)3oyT=*ZoZq82fOw5QXb^y z`%P;|k##j=<0xD3xy3G07V-{v#N@zCW?p`3gT%^}y|-UDhM|B2sSCnUdT|m6?g3y# z19{CX^yZG$c38G?JJ}n{GzsSSMVrd^(oF6o8*4=$lC7C?I?jaBBdB4D8Y}OVz4I7s z)OELXN|)sf`jq7X6zD&%!=c#HZxCl;+`ji7A`TEXV|;DddmCl&PVk*RU7%fDC=TU1 zRJ7;~3ilyNa0^E^J>i>>j=2n)#!~8=yyXKc9VCsSpo-8#6dOdD3{IOZwjD8J?@OT6 zgCh|nfk*=>al7c)e?hO7sCotV{w_5?xYn$0Gr#!a;`1*rhSx8yFF(6{_TfrK!m7u| zf+Icoik8n9=!Z0j_cKL@aX7sPv2iYZJZ1b!HT8YUzR8=fOBwD8SPQEF#7Rc?-~_0=d=EQkQ+g42Q@E7UTrMrfCwb2TBD#r- z?40q*U1~YeJOT4m_VI?NBLt~Cy-am*AS#JF+>rp1Trgq4^k^2KP+Bw-PM~txIcr?X zx(I|2$wR-EGhUio;9L>y7SX(Ne3JcRvdJ7-=2~VHPDyk5DX8Uj8&)(t*bLwm+8c=A zV`y(hb6yhu5XO)U6QgcvfubWb-nkqmrDV=&L;edyz`G>+LeYz)pwTa;+67|xZh~Cg zCrf_F_>AwQ7Y3Pix?H*7*#0@nX~7s2-tc>IzWWwWrz8L&g}}9AJW@IZT-isxRtr&e zOG`~EYR=~WVKl-Xf;nb!OtesuOLwvqc2L(AxsI#Uy2Dn>Rx4X;$tu^D)>_U}ax%wE$B?PUmNg(VKwDnNG&?kp9~#i6BbNd`diZ_&$%soU|lK3rF~p zS#4koX|eVgz*1iZMQVM+ayzbkp4RbAovT1)C*+mL0`R*eA{La|c-33bzu~Hde$g#` zO5nEYmofDh&E%>b4H|`vF_$H#oRUVi?mAwL%i2R>56Q{nu{vT`YQP$un$+FchoDpO z94!9gW7n>ln&lTkFSeTL1$+y=Mj?^N8wCXI=Uf^#$IR{abWLJ}er2l%8=6<4=<`37 z%EDU$(8ZpO1O7P07Aw|V3cF)yoZ#QzWaHVjI16sqc|}&8Tqk%Qj1v*w`AwD#qm*?E zKUFZZNfLYK7W*(Yq`9(Y10Np!Y`V484$Ee3wXbcpr_b=qhYZpOnRjXSiGvI)>dW(? z{K$^A0;rFjhQW0R0D)u6!9OK(B`6-nW*8!4`ADO&xsdT{LCZ}HW~(hm!k7l~{oF*0 zGk})2H49>+Gw{;On)mUhoYm-l@prL2NxL9bOdAGJyhvx4JHYGSoGZELwBGe5>&tEL zmK*e`COz(*r(ep5$X$Kf@a9wb#^-=F|M?W zEkt$=?ZlEQNs;w|Iarcqm@;s9kpO}_e?}O?H-xQ>lj^El9j(Edx7i@c%5S}!yH+Ce zbGJvf@Cj$ol_&&&CfAd0_RB-^xYFalu4EVg{c+#_>9)-H@4a@nRmXp?BCUA;r%W_n zg|OZ7kSUbz_WP}NzkA$&)u%2A7y(oDZLnvu4+Ygv0{xRx36m>%|EJwLG~WN{_Iv$$ z{8y3k@Bhem77lbMyMvTFi2)DNTvLL^!I;Soui|cq5pN-N4tJg-JU0i?g z&5QG^FD{fhl6@Cw?MHyPey2(pAFlZ=J)FI8aMp_aRRAX@r zq#2kAux1K*CV)zDi=Z+X+wd<`5lxY~@qAiF8Wgd_amL`E#{e&#vd{?KHK4&uOgblF zz@=TEo5j`TB?lmGaMAl=y<;Qy^LVVhfT*Q)2ap1)WgL(WFUW<>VxYQjOe>gmRqeE;tVZ z&XbuNhf&fIsk~ivM+&4xr=$s#JWgnnKbMi!MDJ7Kmi)lSHw^L77INh45-V`nFfUD~ zrsY&~Qqc%@*#x4CV)aJ}HM$t51{Q4(KmjR5r(eLcxSsx3wg0c%ZrATWR+3iu|H?!o z=l?rCKHM^c9wp5C$c<*vv0Pm7KCF#g#x9XoKtVPjYOQ?8g7& z+JBvX$F%=?om&5^B(1Rj%0we)){&p2$|!G+F>anc)W+UFJe4uI68o=rWaxk0!`@Ln z{;NoN`!Bt)9i$iP+T{BWrnWokxT98oeAqcTadEecy-w$(Hzr=ccicVcR&W1_^BGG`cv5kWW_(KzBCWI##GSm;vNr%*u$0z`rs9(F}aR~0WfvkCTn)cCFa z$@}~0@21U_Q)be ztqA`!V+5{$hP-N|TZ-H;h`CnH;Q2sc+c|$j%(-@6sf$Dwq z0TnL;L$k+Y>QWK_oq~SZLE)HJ=Q&(UN1T?iFbEvNX@{{PL zDTyYOF+hu$kOLHlq8U->i?{m)oO=k9iLkhjj7D?WYT09yFz3~x&_~55fOJ=ZC~=82 zd4;uL%hqNQL>k7#$T1NAeTf= z9@t>L@Kxen6_8N=7f1pc62`=B&^r=n@rH=EOhylvr34#!cIt_5h*d@5Tt-pPoWTvR zgKBuSak>;mVROjtbFSY6;Jg49!h_H%gt;(;w114ucUa}z@vxvC!p8V%+ z-Ad=%mqVrAHsfw_b@gz*u_;l zGeZP|d=|#KdUNkH-qSFIe364_kc>(gJ?eNA!~_OOEe=zWe%NmB07T)y6pFp(LT;c- zMaT)+5-~?KO<^(QA|(*b47;0}o6SrYuRFxxm|9HKS`-Gm8dMUjSSlNfzn2cBMUi?G z)uV_UEac%IKY%`qV+mekFfLz({k}ITB^PvaRkAJnHXx& za18dAh@HHv(e@#U<)Q_DtXi@7_j#&EV@J7V8p)rl#*Zvf zkD&kg2$EuOkO;&-eiU5>GzR}Cdn}btBS@=!D$hpcQ$=f)uO4HWRZ7Xlze(le_4Hb` zOYg*Ru~H37SE^yXQq`j5v@uhHpZ^s1|Bia?`ut}Vsg(bZe*Ux7Y9F;t{jb%o<9}6>{`~!ql6YGrm`zaj zH8SIrUH)ydX6~Dag$$~qHUVF$(?22EjsME+zoTwF{wql2;{IQ+-LLJxDpD!`E71QA`8PBEL%Y8JT}fJ@|CNcxtK-o3NF-K}x6z!iTtL91 z?n(Qoca#qZ_*5!?iSk(Ma(`DUV{#?>U+2j5{~va0{jZX=RR0tAa%*kxzn(h%!{bhm z;PH`rjC-VeG{U&oKkBtwW70n!wf`plkMIB2`d<~Pl>b%ef4y$*{6}s7SCdxge`TVP z)Bm(uSMC$6mA!vTDr0gr`d|M1N2`wiUP;R9e;-ESY+5UR|C96=d&k=3I1S@7zrw>8 zmYMDz@8=9muiL#Vw~w;z-W@Ou<4xSIAx%o0-ce@w?^u@QC~5c3Y0Gn925_^9EXlGh z$+Gmp$I0!7YBozg`RIdB($7A8|FaLR*_VF&?gxnt2$QqFUjM`V&maDu|LZUL=e6Vi z_vn8g{a^q0uleT{`rqqBK$-D1;v{C=}-4Fl2|Mi#rvn~JY;Cy6Lz(Ru8J@dQbQPL|aginSm_Z0*Dzt;6bN8?U1W&{Wee_}o40`j zCC7vd&#~9Tq11@Kef_0pi%Lg?>WG3RQ}aax6Y#3EczIWdVrfS+4ODcvt`4Y(E6WaO zAjDA`)4Ll^pvaWJ;sw$~7Bjjzds*rU)o$5Veib8$ zj1ZA{;+SAYcJJkqxDz)Cc-OhAUKZug0+!5feOk6xkiWUxWJuGqQmZ^Y(2_b_NSz6p zrlm3lMi3SgF#1JRz-X$)vU1Hdh5x}{GcY^g9awN@4jGYYQ^igdPd<|2`j6qcr;?5E z-+--0B2G%Cy2{kCS*k?OETB{y*ruGI{0*o(Y)%meaNfjF;K_9;{7q=z_^x-IB(OW| zxm!%jl@i)fPUKMjlb6z^ih<!@WOFNE{cpZ1eH1)dN==4Bqfrkh8 zKwjvC@A9n?Ms*AJ$YPa8kE;hiLFl8D9&}X)7~zrQ3y?P{r{TTR26CkXfksG|97QIT zP_QyJDQ1a*#Avql4?<>;JAaK}biM(xCv@eM$bi6VncC3@XxsZ%jV0QzCo0{Rdq0+e zSLKcCbb$T2MfgBMGzC4|CC!nUPeCIpIXCUn4nSI%M@Q;pej;vHI!lGsl5SPm3;t-( z&l{OV>b+a9Otf6V%vyz zn;j9Ipq1#3oi7xOk~xsj^m8H0Qm$cxS>@V-Ab7xBJqIgiblTW{3aEg9h9KBMrSpOY z>&!j?)hb?p=O!BU9chr=0K!~AgS}}Szr-9E7K@0N1;*;`>*MA)9b6P>Umn}vR{uSe zI{M#TJ%C}YrCe5(OzsqIt2*qck*Il5iC3ZhSdo0vP*Jzy=;LGS02GN8ADLMGnRmKj z;yZ}aj@!B=Ayp&u!SVZh;1U$a*J}VnI|`xO1z7)g@`Xi&mZE^7%+uBo>YOu@G^Z1B zl_yFhsMhrwWG&=c+$!q3E!O~8qxjPoMjTBlB^Nz$CKF}##h-iP5nwY=Pd44z5r?1zIu_F%$a2*bg(11yG<9*RM#?SqqqCs}vyDf0ND@ ze<{n<{uvZLrv>gV>|=uLJ;eJsM*}QcOGc;N7#IM=xtqf4ySXCq+gQ)gXvRk2P8usm z%56TGUg!!2E7gfhV|`b=goSGD-oToAnVQ9_I6AMss#rk={(L}mRjD}eI*OE<-K;iKDlrJD;V{ys74>nIhV{9!T(bD20V*eRfFOL z*tJz24aSONtt!=C2yg0VI^ zalI%?#Z@t9M&5#Pzsgeqzl(gP=PNe}*2St6b8h=TDhkm5Tyb1+p^TApcrhGE)TP=yg4iIf&z}fa89*0Hw@}ObJX7K&W7Zb|~_T`xk<8pJI1W zdkQDkF7@OG0Sh}uY)Q2gm9Fe-rGutQTxCj?DE&fhl4cqx92upsuffH^Xj?%Xa?(~_ekbKraZ<*EM-~cswAHg#;c(Pvn&i4 z$fyQoS#UCwSh@$LOn!D^l>#y7LRuMRsC#raS^3QU8$vs&wOq5B?X5HlSM>~58&Lp$ zd-(J`VQS=1KIDm{Of_wg+8`;>66A%ypXw-m5V{)$ACJAU(@(9Zw9-bEXcXwHiJwUw z%4nn3n9gK3No{iUz$bzOP?EDl26+Ar(S=CFUmRVSxK86;YR%}vZox1ESyrGa@1xl> zlb-bZgjsj7WcXp~=pgV0prBKty}R#bP!52L*m+gpKsI_8w<;_0dFQ!oKLyZHX28Y~ z^C9>E7{r;lzI!sLH}TMBZ$vuT+=IeY+XS(8y2$0y_8@Paz9lp9vM95(^NGQxb+mHk z(Y2}_+v8FvamJiK?lrm2(<*9`$Dj=t6d)U8jahgO98)JjJC5+pc zYep@m|ru&W@|mmm_2yLjVt@{d2rxf#I1lf2gb#r3M5j z2637QFYvZ@SScL=k=-}lu5j-=a?fN^1A}khk+)6BIl|*fU?3>`Jr~Gt6_$5Mrn=zC z26^Cn^8-yk;|9BhHpr|hUm@?{5~bTb6@Bp<(dOdJJ7=QZgLi7+;z-Zzll4178+X#H zz3pz%0(rF1q{Hea&x+*d0U-|TfRp{5nCL+O5B;w=v2*@33Oc8A>(qjd#DYXF6c3E) z)YXMdn@S>Zt_NH)a0ICH<9T=2e>X)DuxMzB2f?A6wm7Q2-|oC|WX?wm`zsw{T#qoS zLd$!loS6AF0cC!sOH;X-=pK6&%>lYqD#!UjdO)Tf;70cfdm+LB#tWIPz`n0kxd@Z1 zDy*!Dumptl6e|s95W-&}8_91)K}`S?yAEhIFeqWa2Tw#^h(%E<2D+GWs%W*QC@EkD z-6#MwXnR(oC~+yL$Z6Y0wJLKV#Wkry4HUpXM99m^cX!er8j93za<(eGtA*GbSn7hY zdVq|can1relxb{-&~Gk&Q)SU3oPkn3&x}1uOSQWW?#qN%5RKIG2aUXDeUs5ap zY+>$&R?Lb6rDTho5JGShK1<|MfVnP#=hX-ApIpda#nJn{_dfij_u;1>^gjOZlXp%; z-@a*9w+5UWd4(NG-gT-?BFj{z-Pkv&Wb$+DCb@$~l6&ZoV3jG za}W3c-xWn3zOLU~+P~oHPC9>VI9dHPbGxjUDVb%c?YI0RGELh@_ACwb9PnIy(OORMjz!4fX-kxDz zB2#3}OO!Wg18RMcYNlSu+*?eY`4uZ^+Za~U7&lMbP9oUNaH3FH@Lwte+b0iE*ADI2 zeg2TOy#E{us=c!&j9Y@dba6LH5070b>bGLTv?xH9z$LborIDOlxd_f1IPHyAThmo3 zDcIepq{vg8GGN1jq7ZgOhb=0B@bdPdKNbb3MJkg^AUJ&7CbfCoUV_7Cp>hzah0gV2 zwW#&|j|eTxK4VdOsY*Y!fw%Tw%i7Qn$fWvpsY_)$vt+RAYH$*{RJqfMd^j@kgga5ae%U%fMr|x6d$KZ7XIbS({7Vyzo z3a|2Uoro#1*{?5k&-uE#v!BNh^12GjulON3Jnc7f8h-lkSl>UJPZ9QeB;{}gT6Wg9Z zSFv*$=S4+^k6VjGf^j%o=MXTcfdV*}Tfl*PG!GL`&An4v=Jk1}SDNCj1;5NaQR{eP z_prKdEdWO#6l^VOXulkTt(tI0?KhS|4e4T3brG^ZP08hJVb^IBX(xI*J8HUgeinlC z_gQ<~hLe(gO{aYEXM0E##?x~pQ&rv;vP_40wI6F+ zw_rDOE)l)xVkZY)AH^GDK`gpU*mUO8lY!T z1&%#{%3u8Qf!I~Cg)K>`cDfMJS}e9Et;CBB6L%DUtzKwj`@xH!aCdMXKv>zY_%jLb8oZ95s1lSPFz$|VPAsJ^jWbXQ+#C{! z0eV6*0HJ@Qs$dM>uEhv@Hlkc*D%g)XdJdWxz))duygz6k{>r~S5q=T2`>LeynxdA16-!{r|r7XvX=biL_C^A89(@MjAN^HtBC# zhdHhFoW-%REzx{I8l&PVaeC!4a~J3Q4#+}ODN$liR6gSgybj{141bkpQIl&p#;5yM zCAhUzsaP~=kGdz*m~5(fQKa|V#z*%Dh0%hzufxCnXR}qQ}l9n-9Ry&Q!6AE4{>fWV113?3H=c`PX znKuVzU@M9o@N!;4<{dk?6+F&akBSD#Z9CdWQU$)b;E+}dAp&n$G{mfwC{S63qP-}5 zKq~n@;b{%mk#zry*zE)AiMmFX?78B(D_~=Ue6U+A|Jlqj<2ocORV72nhh+H!BTQC} zFUQ~1qpairI_hrxGxB$wNo_^{;d+eg#n>+wLX{XI8yQ+_g5K@>bjrdhse;dp1;U-hmU9-rP0&Yzp9OJ{& zwzyfM&+ePTzWc2-E6}kv2P8wswNTf__p;+WqKxW+0Q;b$E$2=@6maT5OXAJFNj=d) z9OehNYF>K%8$$M@6B_Jh>|HjFblkFlJO~Hioi5eryz)$pKlT3a?i%-BALGeF@bC-y z-XU@8<{h%mH$ZD?KggODNiK|~leR;W+)2tq^sFfIokX0)(RPh_L6R>h)5WAJN;S+~ zpgHV`he|9wXkEgAjoHLnNju-Z`R`8U3t9fGDoCkTt2Cg;WQ9!W*a?sNgCaCj71+W# zSZ!f11A=mcRzhqHW>Z+k*eS<|987k<>vl~(LK+WxGu$65|2axcH=4(jkN%%_|4+MD z&;Wuk!BjIJ{Rxwf2g`4M|N#hu+D&~t!! z5HUT#Y$O~0RVe{mnGHNIK&luwqEl?#H*p~oU)MT2o-xmFi(mhQ3H<*?dDwa9a+7W3 zXM@3Whm!)zCOmcG=&kY9WcpT5yyY|VQT{!-)GnbK z{OPS|^882v9?)O6bYn~c4?Z{lVLN3gT?28cdzUAiwu&dkYCId|c;fCDHUkEzYeyAS2L(fgFanmABjiH&D5$ANuEG%2UM=cj%BDdj#Q;=>p% zySj|g{i_vd!S{wyKxaC)-ND&H3&s9fuWnzm_Jq~^ys6ul{knZMU_loB`+HwOG}P<* ze$LwGb^G+Y?Kt&MS^J8$N38t~Yd>P`Yu3JC?PsjbXzov0o8j|t!rG5n`;@gGvi7&E zJ!EYT^J~_=VC^YuU$OQ#tlekrXRQ5{wHfUr4(F1!AF=isYct+HVe}3do`XJXKV|QK z%bqis(^K}Gjr)M%GkDJ01J=G`@Hq|){{e^pgtf0(o6+@{Kfht^XROU>VPkj7;GcfY z+6=c-hVyX1+6?CjciLp5rI1{fxCItlejA*6;XR)*iC|JgA!}c; z_6=+EeUrhTFdUvR9M1Vz^YxRjE$p3V69$vLGnsN-inT8pZv0!WdvQGZKEh;m!p3DX zV(o{l&3N)1U*~zhTrcGFox?w6Z8jE@uUVVP5Bq#ie8}FJur`B#^DS#L8lT><_K>wN zS^E)dkC^N+`5ZD{eLH01e!<$$UT zD!6m}?dxXltsJAP0s?yGBUUM`md?SIh3@9!mB>jSgvmOj8*e^RWRGgcSX-NQe<06Y zT-8@`6hj=`8pZ5arg>?!tAlCxs<9hvI*5BIj!6e2lAF79QL%074!Oa4cFC>Xb8e3E z*Z8K~zv^=fcEU|n{>?M~&3D|Y>vMCmVWXZ-x$(!pdCXrMaa#}&t&Kc;?p9^bt3m7-(BRpBp_BZVipOS=F$g8ip1B%j5|+iMV|fh;s%K z{}EJ8XCh6w&BK2@=9W=V@0|JcjN4EA$Fo!J_256gn{s>V2{)p~T$8%yX4EOSug=+z z0NPm){Kx4zx0(9fnBuQBOsh+7-hW|PQrxmC6gt~r1y|G{mQ$+sNzcjsKw ze#q7F3D=Puiu5Vhw#Qtp=DPiqzxI^>c*cKxH{rVVW3F^R=Nk1XSEFyZ9zEg8^BLEk zPq~Wyl-p~Jp6A?S{hYfNpYtW{`4xX{e8x5HYi?rkAHkvF6z|hcI+Rm6Dk#o)ik$9ZxZd3NE}B7= zz8+(Tayba_EBJpT$)U(yDD*MYaLbAwAG=aVI12H2cwPkHv4?tRuetQPojdK*`*0Js zlJV6^+IK)9*(J8RnG^L?ILtwHopWgpFh#k_bDhUVDCxYiJnImQFEM6?dYjqrViTyi zvvBAP&al6PZsV?%wo`Ibl3ocxsmA5dF>b_TkFi}Q0SCm99dl-zuPx=bx+?ACW*J8m z3ks>AdSSa7<)`qqW6*)t$q~bKSs02h3h`H^k_$0}>xL&Jn;D}O{TmcnNuR3xg)WQS z-O(~WO`ncld^Zn?G2zjd4%z$c*85K3Tb#JbtstQLBs?1=e; zb4Q>t>%eO=11xTJPN9vMG0BbH=oD7lRZ^`=Uv10h3(3~C`@sn5OU&cFGN9zg4@!kGVL*cZ|bqlC6L>#ydz(;5q@pRF1VBqf*a2fLNXP%59GR z;K7KcG{&V0rOh}XBzdV6SfVy&AMW#HiG zr0RAxpQ{o;nIco|^rJdQ%i==javp!r8B6REf9n3Mz7?l!V=^JY#&6xF&oZ<{GMPZ0 zh_^Av(A)IH_#_ghvLF(t50~U3akC;7sjJJl@gSPTJt=?$??YAeWG&DhiR=?bVrA@PrjU%GNGl(lSsLb|AkSK{+QB z8DqO>U=XU0`7O&p{t<1kuM#U~eelt{PaejuU~czmQ7|ovb6Lg}_YadaC}^&P&Yv_* zA6v7l`#gn&u3)}q#e5#-;5O}nb{nID>+sfY5JEKp=)C!HQltuVyu%wOpk5p`Ga-Wz zz@OaOaD<7jT$@0{?hT6&{H4J_F_Su5mGNFv=Ri9z=HU2nS6#jo=S7@GyIs5iaY!*= zs+Ls4qus^27G;jZ>%`g@+}J+rFr{Gpy&IH$;7&{8o8=$Gg#}x#@gflql4DE; zR+MN7CjNU+(lX^Gt}Te3RcWDIEDMPtLNH6rcck5CMP3`Tq9`{iS9uAFzxU^Nj)3+K zJI5r+4TAOh3Bl)Do-cHs!UYd<9Au)ik$*hN-o0BP)sa5aaYZlYtZEN zkA9YQ(TxbUJ7@4N{g5MfEcIS#BE1WY`VhVo;d*Js4RtKti(B_r^y6G+t(-+$k#Y4P zU8NJ3??1dO6IU+MtpGazncUG4ly)S~ci1u7i?I09#_^yd_YWAYzj}P!La=Xfj=uNM zaypp8f23LZY?-Hl9W&RvOTZ{I<1VJ>c=)6904myB1u3%WBS#Vc5i_zLtyk1=M2w?% zO_DG7QKxj@#8H0&JFu9j@&HU_&^qxIzQfNPXX~G_yq#j|z?se(sl&k>@w;z_TCjN7 zI7V=Id)NJlD-KG$y*Fh-Lwb86g3+M*GDcU$2561}brVZ241nEO9p`P{gjkjbI&l*} zfb=*xo#e)S0SM!_v8aP%*?Z`qj+ZOT({_XJG9h=WuK9|x1$!^1z!pAof<=u^`(C|(9a=MCE9^m(6OUP5wv*Px4y;VyMxOGitdk!E+ zr!hz@=q;M}_Jec3g8-&a<@2r#enO7>%EPNO^E@ zPVFX(IH3VrhtxRs^^XtQ`NthP2YL5F7(TxiOi5Rx7J{Gz6#BJuH<5J_neGU}O!4TA zi!y4x82c6Ha)L_h5gq}(vp<6nvIQKgy_!lwd@}H+jy7kDmdgd(d9 zUJ^!E%9lOi7+^p3LTe!Cpo3q7nT1_*i?_%6Fv0L)k1Y|X=O7i1;*n?+HWD8;?)F>6 z79-fP-7S}!3kK53p{=+%f~BkM`&n`x#|gq3rS#x$H0WG`H=^<{H|bjZ*k`~W6WP&QYjV%Ca-gR?%5d9?q7Ic++#zUre)9PmyA;L*%~NDD6s zAl-BF)vANLNoccs4uT={*kKerjoa&bg2WU?VHQPg+8fu24;_^4Y{o$2s=5P+3265S z%TdX3z~DJ|$8ELb7#J0O&tsRep)KDfc?(}NKFC@hDfbSm6-NF&P-$^0VGmSk)lEm! zBz#FxcPa;=Ok0~WB?vL$4&Z9(@U&yF-h@tBMY5N2Z74^G7io*;S+VNu``pJ1dlSjf zFlc*8JoOfF!)i*U?@DFAwTg?Oob9le%Q6Lc?Ug9Z5n7Pg&{NTGZLqq$Hl)OdE~sM#y3$GGEN|h0HXRZUk9MP`Xf&^HXFm*1{oka?rft(^^Q7sGTy0+b`qxD`a35 zB5TV{jjiYFm$EAkj)8Mk@$z28-stTW=FF&`D|Its+(YJhHUd85^}&Yo5L3mY>DkuF zP}`*JOHOT9tF7|MOFkYz8+3-#wv9^ zT2q8B;$Sy3u=}wgV~hy#(2I(&&U@|}$-)4=`v z?D}=FDvio!XvtUmo9P`kMn1s~vcCS)rx)nl0f#U&PM)2UAlfgsc@6`hk&iGxzZ9|2 z3nRDWw(e=RH(9{ctq0uW@2_z9y8CE9(x$B}fHl11mIP0vtT4Gm(YU^Zz>grq=`rjU zaMv9p58NH@cd!@2$nTa7L-LXD#spu)YMH_=(rGTjLgBa;ujBNy%fYPWM0~sWyeW`kfOM<) z&6V`Tvd)mn=p;{<_m}oR$R<7_Y6?<(^Ld&l0}J`MbzPZ9CYHqn(gLLdQS<1wBS8xIK~XT`hf&F8pM@krMLi32+ZKTyu6juj&aGN*w_GTTkG)6Zu?2 z%{BlLKmb@o&=)=i?x9pMh$aSyh}>hyxbi8JreriEq13QdY5bU=xCLjk*o?5yXgb{> zFjoN|E?=k*;e{g*aD;qY7m278?$rBkr=lx3_^D2_Pd>WAYxf_WU5vp*z)uuV2D^ZM z>{bcyE3i&mDP%0X9g8H+XZdS&;jB#8pQu+2yUfoUI8HNDf}GEETx|dF2&ny^@%L3~a zTTL~jsmP&AGpD;t{j()dxqk(!$NF&wWCetq_Fp+LzHtLZsRvJ-dL$l)d7|C1H@ISO zptSS>foF3pO80&?#}3aDc{a!XbLQBy1@j-VU^o`JA&hGw97`L_ip_EVO69B#21m<| ztwOzPtt~zfpRKI}vbLi2B>RQ2&n%;(zAy2tb_cAbdbZ9V;k=Us`4Qu z(x`%&j<(8eXl+F41WGaIC5Zj!QlE{df zLn{D)h5%MTslV#0G&rRQdo)!$s)Ltbfgm?e&Hb||J)VfazYt_BE6Rj1fV_hQQSd1~ z4HD1Zz7q|{Mle#i6G3@N(-Mj^Wm{c#NNEi81QJM8n~6RTPB&U{kNOm*WGMw(CC8O? zmWSBhuDP276T%PM4*%C=zb1&XFimUXo z+nIKUeY`wpT|CfYF#M2^-oqhd8OMoY+Ev+Q_|8GLzrvTsis36ux+PezhI=l_V}{2vJR|G$-d5l&!S_9XE>E{pH;j`*|w{r}a!uhauvI>oSCLKUH;E(0MF z-c)?umh4`dl>(0A?97XS?@0YrwPUkCY*iEko37z1u4tZmH%ug8G5_w74K+ETMD;EW z0UguEhD=}+MD{-+fAEBi%dN7DuI{R)D$hc(e>h80(;3YH;nBj+a7jU5ZcImaw2i%^ zN`|)>&>V^dT1Y#`@EV2daFLGEBqlmjFbT*$cc)g{Ey{+`_@q*I*RdUOpd@hXoS0JQ z343e&cMX(}3-?3Ot7T#IlyrTls@U zf9pW$Zevajf51YGKDGAX28^!;58N<(E5iZ1(;kLVVvEY}ds)CKJFf}`IkZLbN#z$O z=ihCiJTNaf!q52)at?$QR0FlnxW^xxORLuxx+Vu{@Aw(s(tm*A>?rA>9e~Wyo@1K< zSkoYoTZr(W_}PMeudKA>z;L^|yv&XZ^Q-Q*SR7?D&Zai`2`z`SwP!qaTZd704I!~a z7?y3b(RM4kEhc*h! z#c5NWLW>HD;!2}+lr?e)?w}w6z*aobu`;Ox5$$G!4PC~+&{x?tIndU|EeN_L#tq)f zwlQ*1!%5phg{AKx8@Joih17{beMg>d=Cj)T;BxTr8TT}5B*>MyFw-y&N3Qu-0!y8Pp1g}n3G6w zJ5J=`5u9~ULcfgOP@$8zcGw4bAYUXoM7mH|*j!QD6H*SjcPFn`!VuOzXvrP;ybU7| zAfCqP(f__aKQKh{CO>2u_dGuGU>an{t#$lt-`%ITV!yl32hme2qs!===G&#(NKl@< zC%4P?C7|2TDHuC`XLrVeFKFA&urO+U^YUBUix+hsn|SXCh_ z2*CJC%u7viQK1aezxvwSt^0nbmcFzZ4zOo#e`;mi^1Y=BYLQ(yIKyq!$wMSm1Vh;A zsK~(~S=U34Cx_)UC(!?INtji{r_WAG+W$*k(luL9Xk^4 zr$TnZxGaxC;E!t0q1SWK#FHlOIzmb{*UtR=@F>nyfis&x>PI3yh^p4YVh-9nDfBx7 z{PjYY1n%(0$IOry_T##mbEUw`i&W&x?gZBLcm^Sl#BBuOp)0k{tSBtxh9WzEq0^T>)LYe6dFHIQm?|4dHQv5V=yOelLSiVIs1}$ZZ4u zTzi@Codx`K8P1oIA>{OZ=6Ev|H*|0{m^0+s{}pV~S?>N=rb83^Vj#JggVdbT!kwN! zbm`uh?vFWcX#&ojNFZ3wS#=e@lx}|kE@A^z`98ROTs2M*~WAvu@O@ab8ksvPC)k3(quuH>L+FOl=ZO}(Yih*QE+2n~cc zo*(e{hs_2E;U2gE2To7?IO?8gAD#vEY_FOW;RePeopUc-@%O1xtJoW)RrRrP`25mY z>weU%7AgBNOWK9($0GT>DsLgtwArIb33K$sO8flCA{YH^@-3MN7)QdeHzo=&4-hZm zor4xJ0m^-dnJ{>AQ4>Z^FK)gvWuwcy@~XDKuC+hs7tfbn-ZDMbZx_5 z`1-$st;9nA2Bx~u`|tvE7n7WauCBlG?3qq`3q{0mm}{Ro^iDH>C;Lh__f`FCW~^Q6 zI@9IvrmjjzFA@QES#n@eSNU=Z1Bf3-ySuP>?4_G4wj^Vh={GJQX@GUlY~Sv1yuKN= z>;vQacAb0BKBEwlfZN?7_9ZQ`ZD=|s?{f+c-?h&05nmwL!N2jhu?hlwjeo@R3chs6 zjDY~|fhTa>)C_=wCa3)y6rTGdej2|^{q)TFC3f>kbo>w!h?Im+u*NHcHwUi+5`=r8 zdKx%2+28C(yMsost`BTN&zz%3%4HQzX00l7_ebo4`BDMBwT)KRPOZ{AIQGnHyd{Hm zGXLU1djLI*`|$tqo+mf3Jj}6PiYIP*;7x7H`ED=P(R}t!*P)LUwQ=GNq$?L#l4O)k zmJM#^eQlaXmu?vM>_ObpcErjx1OfmCdVnh|eK4&ni`mIU`|hJ{0a8%@tTEGNq3RYa zs<+U;_<;kRVuki;RY4&Mg}13QC?VnpX8`(>@W?PIjF>eZLv+!2Ue#LGS@7i_?sQR9 zklQ;`lMm(w0H|iocv{WJqT)p3#-&T<%LUI*)6Pw~bic~A8^R6GU9sHnas^kyMS)yc zF#*N5;d|96OMS0xgZs2wT{uPskW!*kSn+`f1q=CDo2copw6t)mKg>K;U0*Xb{^r3&O_zxi`p>*4If>_*!L@7Wu=k=ZnAdPh>TDx)`?7VXBnp)LkGu0h?VCY#0r zj6)o&9)P$#_NX0H&e>0}&4uG@)Pp{$tK}l0$c5Ur^-_;y#VC23cCO)KDA(d)W$YH9 zh+Q+38h;;F@TD6ovTuj1d)%okPD(%@lgc*QOlfp%KxOo4i~Xdc%1 z;7plg1z<~>Sy|CYRIy8r6@4GJqhQ2Ve_l)2TknIXJwZpqC8c;dnW6&&tzN+dj7M8M ztICZ4R8}#Jtz5|ELW9{P?Jx$m%N)kicEB;{mofBu9@7UgN{j`4=BuwwtFlq1v_RBB zi>~!dLm57*ltpzbb3HR9RndlSx@@yd9bSs+mMagyl0qLVV5O?O4HrnoeS9<30UJ2M z$PG+a{A;b8NnX_jRjpgCLg=e!@hEEAWD4NN_Jy@WH`+es1N}fkF8c;EQ;2Ow-5F|H? zsfuSuP`Rv{HP}HCtRRzQ#c5PYql?w65;#Z_ zT9=l5p?O+aW-JSyusT|i9DWq2govYug&Y%f?~6&yr$>fQv=|n zWfNV2s2)QRo=}i}+IzuJY&`Oeq~noi9Z=}?+wwQFR*n+5T%yEMp`_u5w+9UIyM;{U zZAs%?yzxgLBb%K|#`5M^a+iUC8@R&Zs6X>%s8r$IQ6eh=+pKiVg&XhewA9fKYRvpShk*VL zi%zh=L2E7Dh^V?o`|6O112m+Ux=&Hwt}^@P`Yb!YzQULB^mc4d)f9GDqCP z1KJ;0Gn_}n_v7sKlk6k0H{afT{B{`jv+J+F$|hCL)lI{^wZ1jBsXJQ+a{=C_T0qJ} zg@T|ZF(1#V^KZi2LZBnEE_0L$6fL0Rn*pFNEGu<|o;4IMK(gUlhAg6)fV6e%edEM$ z3hS(PeQ$hl2f8s-;pl29$;}T%=fnzeQ9y$zj1cj|spsX>>khf?<}T`zQ=+qSZAe2_ zp`JP74^A|0d5}@Po9rrhUbzQ?CmRMzsHWC5-jYxf0-6VE{!v<))rFo8_w^uh;^Ks0 zOLuq<#9+7OS8R(-IXOi*u3^OOghANaBod*^jC@YZg91(u4phJ@#F@kZ!dt)Ufz@2y zOJOO45fMsPrcws3xP)VsRajyXi#!f>o_sxjSevS8ACKj{BoGJUV9l_usUR|P7o-iVOg z-e+`PHz3R_9jYNCV{l&7*44f8wXHRA0Z$ zSym15L}5!#!P(mo3O7GZWpezRnQSD5*l!*SU<=nB}z^Y z2LpwOKsQ>s>X#WS?g2J;yq4{6S!}7&bc@gJX@lD0c?tI_06oODu+Ob)SDAVj*GtV$ zP;zCe&1V!R7%TLoW3f8U(LPEOyu5JQ6#sm_v=GMx#p@xs@QpurIe!M<6UID@Wu$x- z>6;W~7r=4c!cEFUq5d|lI4LGbXzfNJ$vmR;00Iwk3ae7Ladz!?jm$(qUI@s>YNXR+p&%bw!Gh#xsZcGhN=m@) zY+x^8m&i;`k6bjI@DNa--Jkt?jfncxD9Kj$DIkuI1Hy2G2^K8)b?-7)=Fcl;={i z6piIbCbd&1cDV3;B!$SL4!qto#!QHr6%Q=z_!10EykV{5?5wbrND!q1Cb;#f7qD(% z*Sr4bZwbHbcWO7{P6f9<{LqgG1A>=dEd5*jQOAgc#kRlq{%aq3=Gl2mfH|A1+ED*G z{EH0?*p4pf0rxrCipzO_vBvHIe^bjSti%8BfJOk=UB&W{o%6Av1LDGDMv}h z&0+V2>UvO^W9_D^QSc_mZiw$-(X<(?k4^wU&_*Q?%%6jW2Q4@LK5$=4m2$TvAE^(X*vx1`?Ym=f~HNte<_5m-i`sE!J%= zB*FNClxJ+!OPRGCJvDX*zVW-`M~_yK*>ME4vzAUwQJ`}({#pblqQ9Sg1n)(kHs^)1 z)TopRIi6W#VH2t-Ot<5avQO~h^v7@8gLxG|vqp*wbtO8ID50WZA{}8*Q`a_>{ug^k zw$!*0e9u>?l7~Q*!JD&E`;e3aNyRx}gCWP$maxX4iY&P_atQhQOm|O@TCxlySr86A z?P6Qgt(l&_4@Y0E+hv?*<}|ETS8=6cTK$M3#1x|ntqVWAOxkT0#(&Rv;S23IBb5~# za>p=z%`;u_fl0}VDz6xn3Oh@>j{(^(NtMnPm8>@2=%X!|5#96XU3RDUh%dz5SV8ow zI|E(Y9XT8{X)sclXE~5U_P4PA=w(D=i7$e9{&4KmGRpaFyL2tMXw|+$J2f=H9JsP^ zS)u;Hu+v;|;YF-lcdY58P7<@S+^yoPD6*~?__InVid<5;vp8Z2IrzmK_$MPbt?kn< ze33z_{B;ckU3lFev)4QQ3UUWSn)um=xx&QZ z=tK79rs{^C@pe;Hbnpv;3z;l{b-TEZo6XUCY{#wKPkhHM=PBAABv9axc=R~W&jyc4 z8s%9W*?#-SJ$bTS?bH%Z8R%MgB_n{<_R5!ddP)HM070vhOTXy&5zotYOix|Lmi1F; zjv3WRowj-utW)?LKN62oY2pEV<@*NMd9{`+@8ZK=(1(&7K?qd+)x^9cRfOckA(?Ws6l@e+%Zak;wY>r zc%o!HzHZpYkTBG1bi(b!!?>k4v48Vs))U2Bv`f~5EhoC^O(xQEY*fW}(avdAW`fifS}J|) z>|I&7;B;ZnK-=oD?_hDC)1Op}5*fB9G^|Tx{=pqrzX^Efd=Nlup{d(_!`8G#k2b@h zbD@1>&()(s6u|lVP^Wc)>wC2(`97R0b7}s<0^5T)#p^nUmS@;{Ix@I%T^;|FlI15D zo(_=78*{$iq@3P{zUI_$S%$fRfT*&JviTakIkeK=by1kw5?cWHGaX2(ATGYn$GuTLp{ z_5HV^n+M4e*X1)cui&5qZ(C~-^X7G_l>^-%&D}njPk@h!Mg*ZVf}i2Md(EPb2PH#Q zv0SjyAtcJEmmi*xt97Q4W18fTd||U*MQ*yZvrT(jhR3H1C{Mw>vHH7*sl*M|!}cv3 zFFOiW)Q0I2bd+3CK|!ty79C-dFmP%T=a5F%K%^2?IHH4J;|pj$Qd*0lb&g`gJ!iO< z&G)3oG(<+^OTw|V&X^`{At>C-wK!-lk7akX&@O63*T4G004OR|U~cU+>WR2tE=jrj zY4;8CQ)CB^UG8nuk=R}hehvA&>Am?ao|fj`OrZT=1X%b8toFQL2LE#JfH#@7V5_jG zD2uEwEa6)qBm5WpNHZYcPEj44LYRg|WKwfFh(0}x2L-1PKmX9YWdfEQ{j*>p?eOep z#)Ma+K1Zm7{iP^z*%kP$*_otr+ZK@dmw%#)#n$!IxXAsi$sjkUo-L^-fWrjLlQnAC zm@0VV9h*+g=33Lb9t6f23xMq_7A#s&Xi*VJB0LU#*M*C}LE5Z--bI~Qu%UbRwVS;Vc! zT)0G+))Jz;DxI{XX8V~6j<#CQm(Zz>o705+>r?QO1fL$hkks>!*JN9)2 zgge%javk%cW|#Y$H_ze%SI3uJ`s7&~cdZi>^MN-#o%Ng?^>Q!rZz_#4F)lYgo%Nk~ z)h6Sr|130wj=@ncqtTnO4T({{H?Z&P?XoX>HY|R_hCfvXayqyFuliheTjU_}HU~5FzVqv+LGNDKh>W>RNbHm}$O}mn>~=hXR6@p%5F%+d z#4PW9Gp~C9Z&kklw8M`O7Q7SxI$D$v(|avK195c`2TjX7MA#A!jN49LOqK<0h6r_U}ASed7%*-=v8%6~#H+*Nd~MxwCfAT9Ivi z6D+%DV!~Jpc_ZLbv@|vu_C+4=bj8~!6wP6#S)syZ-D6&lF!4>Yzn)oF3^`7==ZVwz z+Y`kZJZ!Fpyz5Z_V-nv6>|ckmy3hqk!>`b-PPySSm3)jxu*Y+>IE=M#^0iOTzk3Vh zOi&o+=7^;L5EzM(dfW_?)t${Pn27vla6qIHrNL;pe?KX1ugxcej(&&0FJT%&PRE|v z5S5ErMVQhqw-NIFi)T*V)) z7%h`xv{U2{H@08lHAso4AtfdaL(OWndU71GoEnEQe!6rcnjl9L=q%wgL*0YbWZ?%c zQ9jyM&(YfK_XeTwoeoTR+X+&; zeH#iAp6J!>PGNl$@E@1iKmC&LKt+#5MR#M1*M7rpg!48B|F;6&Z~TX;yIZQ_I*Xw9 zD?TwvBbP8c(YNV*@56Vev-1x}!G}&&G32obK@&k01-@#{(gBZd<~BUp={htk<7X%Y zK>#K+#EK^SlrFRSkS{s&+??kQz1V+_HI6OOt^smia}H~req5|>dR(uRy}5?#iC0!p z+e1!Q=P9bK)4#iR^Qmt}Kf{pEl{>@VeTBUHW)+z0JiO#PgZTDEiP`Vsil z(y(>%_mOAMFW5a}h#$E9!alKaYOVsB;APjw#J-Xz9!Iod%zM z^5vHYpU{xT{8nP9_`@bK)E;?U3Q^}jd=dZI04mlI;DbW~4I+FeuT*xGhb!atcL@0& zYm}LP4KlR4CnkoCJtQi;yu2A@naq0G+@zpJ`WNY6X?By2_yfKw?gJ~s-QS{+M||e8 z?%Zc+REWp^_%{0o72bCmQ z^<608u>QWaPh}KMuG?7KSbkdxX1R~4$ry91yDtc9>yQgC#`ik9tp)W$&#jM?x`7G!>X-ICmjVL6wsjSd-dc zWPVph<#`0J{mk2Hqn)B5T29cRYtR=7qx#WineD!Wgk5lm(X#LCsQ&sVUf$kwY7^}y z?QocQm7B|utu^gE=Q`W!sWhv7Z|7&m#mCyU(LMYnPK}wo_H_aCbHE^VVQIv(+jI^g z?}gOs2~TyC+=^N+ctgV2n^WSHi4$1o2$%8NR641Txjlu`w!BHMs-^k)?Ma^`pM>k6 z#R=TbrnxHHgL7JV0@>QwDnzEUV`5ih7&hR=K^nw+M!29$ba&2<_C z5pm4IW*gv_yfuf$Ck_>@lau4K)9LYhOcsP+)Z0!{^KqPBa)~U9;nRLxLWAa2rVC2` zH-=|O&mV{y0Qiw!Wd&NIpT7CzlkuC+Y%$Z~)?jlGu2u)wyF0Nt5{K8tGTCp8ph);~ z;8{JKB40)}*%2!+$_~{-i##HVfdrM#m8(?XxcIoXi;V5mwfPopR**`_2!--p2i#hF zaq2YO+HvA_C8lEqBuhoOAo*I2YVBhxV(?Ni-@|pB?}Ont0K~a$Q`eeW8vtp>owjn< z$BEZ(Qqt?V$bsV2td`;5-?X-h95}fHmFHQ`Gt0Thbi-^`ow>SS5!AU_$B|QYN2>^G~l5Lc#f>a0Crm z`l(skTr0TE^!PpnOu}IXM)C`gT#qgV(7ya%|mnQPq>2?~1+nUR1 zf$+Oh2cyN>Y&*b9)Gjk|P~iV==xAscygNF68iNTxWpMKIFmY}RU z@4%p5<*`;qIY@53UxV8oG9uqD075tcVFBUjf=6uH2~tx!L9+V5Ys(+E6v@Y22sEZC@WIzQkw6tB6SZhTvGbu5Y{-!CQ`ff)tzkhss_I`( zCI1@TBqF5)-j=1UP#i>KL>(7)qDLq(KsYos?oydAwK8I^{j@2#L##3FYy4w&7EY&T-cVOe8anMX>muWLEabFvP+4B?irJ&=opt^q?!;qbtw=447eQ zwp+W7W;a=G1ffc=ifbAZ$a#ynA2Ld_TIZ`wD-8qbIn0PMM^+Dp1&&O{rK^#pd4_9g zmTYK-&;;BV*QeynRhAbd-!$~qH~X9e7fNmqN!htW%RwH`$#clp88~AIV3G_)h7*qL z>ZW1!I*2k{hDvO>bryfSyBNe%nBXDwm2>!Vd3c3n`GS&c_pg;}JOAbRvR}T=j96V6 z+WYdLT9dx-i8XB@1MpHTUNV36zU&V=a^RV1z%Q3eJ!4JtDbIFzzI=F4gP#PO9>#?| z-ng*)9DIzxHb);rV6oL_o|J@S`7VheeM`Qw)3;Ct!VZ+N4b}{62kwcMpdX zL*W?sBMyhF425I(k2W06zPs?%KIU*ZITX$z(Ccuxx?QPa^xpR_QNA! z|K{^?oJQ&&OpX6&JjPYu=jP*VJ~v!6mbam8gT@O`uq~&>=!j zA!Lzoso+(>jxeGt)(X>Q7<&8Yw?M9|F3i9^V&BbMv8xWu2=oyM7a01h!HmGegv6;W zg@KLH1sGZ&v1Hhr7nQl{{rEe)ch}g;;@qBewn0-GG^N+7DWUe!ERNeM0Dz-!6UXPI zpbb+xhbf&eX-cOTLwH5z$g`Lldaql$LGu=vuoCkK$)^Ocj|y8_$zMnI(~Ub<*q)2# z1A8KOXP?`j!6|Q&O5KJL1Vi0Fm@?SED$3$PBelx_Z=0qQi%i3$PCN>&sL6TR;F!$5 z@~x|n1uNDT=$W4zkoW&ZUz#2Pg8U_^hH#=}LAK*t#nqDOr1qONCJs zleS&IOe>WyW9%oPM`Tdr0?wwkEgQfA!SKtA30`uuL}s3caMdCwCHfFMA1~`Mx$rVu z7bSHG*-#$!$b3=)>Sb0dQN3%XvKN7%G-oWR{w73HCDdfNfT)Akq0$sFwh@$C;n3dO zuMT*uvqBiv&+c?9Nr55k^2IKaMg2ozhjM6JrkAuo3-3~MGZBbC}J+W~l(1C)x zPkcFk^9i;`Jirdl2ZG2B!dx97KG2mSPN}g&4;J+UjFldY>cOaftw!~8vTl2v!uwd` z!--w>JAU_`O=8Xf+(m^c3cOVjpiEwX-dyk|{PJ!>u4OcBi19V4gJOmTsodUH9dbCZ zyu9;(U#(5|9H+2%we+^X`$J?Rl>*uicBeo|^J3BzWWc+bgk4NQhTO>{+7Gf*Qkiqw7A-1#(8G-&R#CDb;!|%^RY+)HP@NO1ju)`SqzHE*9 z@cOA&{QL1HZX!{Pleyp`va02}*YXFvl+6jBx&_N!XV)vO zk}YtHzM$b+Yt4bwQZI`BhGPc{L#)P)g1H15^<hgh`>2mFh;?fy%fS1yaauN%Wdyc0mVM}k zvJ8J)W7((MP}U55=((Bfpank>E%>)hzSDPK-8Kz%`)@Lg&~e_7mm_kp3Lf1m7#hiT zvrt~2){PPHNEKn6=m6#vEJ0DG4_rNqBB=$cp(g zEaulj&O1<4#tA!Ldu4=5$~Y?#wb3K2ddv6kQN?DcV%|@z#d}5Z0*$$%o@9nl5VLaC z*y)7yvQFWCfSLujw|%u`KCg}TEdhKiofDnJk>woVqwt@TGw7U8MCTlItVh?ePS#76 z$8(lDJS(+&F@5KZ(FT^!dFu9qZuK;DD{qm&6A>u_He}xo-1up6W3R6LOvKcl&IK4lMequ;^#Y37y!Wn?;_H-bc<=uWuVi`M{~48K;&*$a~YF zgEZvYU$?uOu3DLv7zGIXI3VEclfpVq=__1YTbgB|=W4?%T?QX*AdwgY+Tog|e4f4HjA8Y!XtvA?v7)8d<8YGA#@{)%TRigWOsU7Sq=y@ncLM04w| zqawqY1H>?OC9W;AEEx7h9{ZsBA{DkfwWe92!sXWH3CwQn&t^(vMlofLZJ#Vd-)|o+ z!*JoSHB4$51(56a)>SUA!n{aTeyHJBSi8p=q@uhFNn+1hikjbH-^~0tJ^$`46jKuv zhFQyJ1quWNM(%uFV{YO7t#83Zl(P7iR+G z*|}3ib=!UP=pFUv&G|T0I(v`|)orRXgWjq_6HX7NCo_D{I&e1DVV*jg&Du zfzf0OI2>XFiPwL5{e5odH3gHkEna#3{a145j;QG4;QxOj;-0*rD+=vMIYR@|g+SE1 z4m@NvMe*+E6^Q%Y&3zjBG!Xm!Y1K^cFH9J!?Pm)u%HK^GVgzM@QijgQtDhl+*Ge-N zpZ8}qubNxmOBISO~{du4K5nJ2T%0n2`IY6zn|sB8C|q=^B1{|Gm8b zUfzE%@4vt0{?lj(A_!rVn}a9j{`U{Qij{JKQt*p$U8c@kV}DoAPF^{GdU^HAsCXqg zY{I1HW@?rWHF@|c+YkeIAiUfZ0q`N(g{=kahO>`Vi_~m8m4I)i*xQTzV8M^Vg+mtB zd+@Fp4<@V5{sMJOr1wiX+c^FM(;3a4-FslCtLuBC;vSsJd)Pz$-b1)*?~8!0)mE z0Pklfh7e$Fl)!)YZU-KWRnFFQ0+jey5DS2QtcdMPv4x1K!N?oqx}phR#VrD$RHj%< zBN#Jx9th>TFch>veXOccI643JZD{Bafc2WND&cO_`G(QPIGAe3!t3uI75KXuz%lQK zZgeTP)J=T~VtfHfKdU~&^vEhl_GW?MS~}ol#qMkFn;OP!xxA~4g+gB z9#J3wPWK*+Mn$o;gqgSwFx-{@w7~zXwn!AqZ(8?j^sZAh-O0+6&URr-YZnPh8>8*I zhI6o@>CDyPzc>O{8^p^pGv9?qmu#0`uz{BPlkG9nvj+V4ogJkoa9G2z=>gs$L7u>C zbp7;6Grlpd0`_?s?r)!d;TXiTs`0kWx(qB(J|t_SVt9zI_}z0GRx>&{7inAypX}TX zbetjE$EdhX?^=NZa(Uj~g)joN*36#kZ2%yV6caxNs45Bvl>j03ai^UT)I~|Qc^Bx+ER&t7IBaF@oDjtAlUrvsGO&6cdMzNwQh-P z!zOy?xpXPai@p2#8~1ep^6{mBfG6*hLO$|&LY|wojc?}NW!JR!oEpm?a=O!ig@+M? z2_6i=Nl8l@^=rkrLbVvqUZ9yfiq^%8m2FvCqY%-vkbC`OKPf|)uV(WC@y)hA1Weh| zCuoh0u*t#V*u=Se47!1ho)S~yp4v$97aJvcA0-m|_LTQ?$HwF>$1vMwpxdxlu$13Y z+2k{H6V2|9qR)J0Dp1&%2gl0H#Vo?0x(;Au;qD;n%5Sdj;^?Y7X}ln(Y6<(_w7`Hm zG;@_418_n8pb?@L+Ury;+>RIeO#m_eO8O|JLZ;x8Dm}KdvD}AAEA& z_W3e#G?1ZI>!733`I%`;{e>*1eg=)4RSN(+yk7TP$;xHAs5o56pMn!g;--HZ!0p$;TYh; zKzaUz-33zuy}gjPgweSe_I@~!gJcg{q&{)8q^b2mCb)@U5m25kJn zq$L6gV)m>f7MUf!HjB9Z*}F|e;*Pt?+12O%k}W2L{_5R?T4`6UDUan7B%?VLWoxi> zj;X5V7AK8y-OCs~1Q11HE3Y6%nD;(!n-q)Yr${g=3Vsp zX&L**B%TuF2_wYzf8~76OlKg{ouAYB4oTza7l@q{=6{FkPx%9RM1B;$VJJG*3^ak*-P$0q-s|&WEB&-BwN{<;-sw8xexJu7wN9NrDv}XN`G^7< z_%?kMwl!GSU&PO|LvyaB%z=i0^G9$|N3GPDaoyl+3$BykNVU8~-7j#w6i0K`W zKefS`j^o__x|tbFWh-4r_s)98l3q@DCsJsR`lPSGHgtv%#t1-nkT%ZsaCtuG?D7;> zo(_Xtg&aFz?tF$(v}&JtZ3muI8pX)D9Rbv^jU+hsG)R+Cyn8r zw@znhJFr#z?5QVq3@vEA&aQnU5FRJQ3QyZi_b9 z>h1?6BkV@3Z#B-+$KriW@!W@)kWy#W+21R((jGBgrqIeYTD7&Yn(!c$@U*B;3A+n+ zGCRP5MSz@>Gf=WyuZ;c0QK>Mx!I=(8Nn?RNyPhJh47!!++Rmdx)WbsjcK|qTOk0Nh zmiF!tg2YUZbgO}H3Uod4fuvr~aucdG@WKY@YJS1pp9z9?JL1H)yM6pQ*kyUSo}vE` z{d}N!FB?xKvB{1ha8cV*@YIB1azZQu0nS||cZ(b>B)eqf{t$7U({L2eM1QC@ia8rO zJ9~Y?Q-HD-7dj-S`!)=g=keK?#lcZoU&r_rQ$jr%=aC(l#nQOz+Dp?&3bry`prq-F zYR@QVi}u5Dc@_sA(-0z(W#?}y5dg%MH7tBchpQpeKzZAn?d>X>X^v6$Vf)Eg0?yd*N|CzJWd z-2q~-ty`d|Xu|2QJC+Q2JERAnx@)HwO>5EMf4wp&`;rbmh1LP5U2|G8=_Q-i1`6d0 z5T{NgP!Y4#*S_ zKTP1-QiNE;Hf(i9!gzWl(3f=RKy)K&81+vP?zePIarlhQKgt%E8NF6ZCvhF77^+n&@ zv;`PdZKZ=RJ#2+M15*oI<@NFmLFUo4z?o=7QjdjpH;t=1ED{%fPmXDCDZNdy;+206 zoIZsXYNZFHq4V(d6Y=o{!fWLb*z-#Mu@IU8i^eQCZ=MtNUQ-A(4;ArEe`g`bVj}sl zXsxf|D#$tzfKPBUMNG5~C(uSQIGV{%Ua@3B&nLr-Vg{G1MPFJ@1_@s*Oi6j5Xt+E@ z!=g#oE=D!2&FN(A}Nl^I49|X@yx=S50RsRKl(rxOyk`vrAP5A5v3) zDJwU(ARq|;J&Ye#4#q&MTukF9UY=m09`<$ zzotx|2Ha@3eZ34+w#{_nc~~Ot)s4wJmtoi}Rjr2-YhmEvU4bfvV%-st%GA#KXtCy9 z7@-9p0j;6R^%j0ogXEk{dlU?Z>WDjbmNi9a`F4y=%}^kBU?a52qmWppin;GF?$9}p zv5&(Pt6j@h8Q+mEc&x*jrBLlci8LsZTaU9``RdZX{Y0hdSo|VO7utuBP>y75-VxBt z)PDL1lKOKjWHNQ29x~fPeN+V6qiyEFQvHR+6l>B;s4XQI>RRYC91=cxQv239G}p&i z6s^F%gAI^ON7@WLM+2LKl(+I2h;0j`e(=?UI07!mx(W}JHPhBZ-KYaS%^QX|sb%8O zWXoJw$}QKmFTz{5#pq)?H4K44$f6j?K08+G;FXLhPmm;%(feQ zO0R<)`&Gr}>b_|@9tN)^D4cRT>xE51l z!aIoihn75In0>62U@>5T7(!mAuV{t#&Jj}B$90NwPHFvU@T{m#qAQVa22*8w$928- zwqsMyeZwiC%mPt#;PWw6tuj*!HS~aX!&p|%hm7k=Jef3T+^=ESysf%?@+YMx9ycLO zwVi{*N%Mj)cz(MvI!Zd;dRtUs*5{Q4n^w)9NSS8=!y(h1H!{-sx@C`@urqQtIglX5 z=0VwKDr(ZSmh+oh+i!rE#>Fl;`#&JC_Zgyytv*5XCe(|;kKlb1vJ~pFvN6rsfWqDd z6fwE})#35h5%{FD$LjRO`CrU%$&xNoS*B~tV_BStR-4j8iJ#}knML3k6+e3?)c9B? ze)0e?mxUTrWAUQ7tNn#VW@>jPExvQ!}>uDn%9Kybpn^?>R6gtqUdR9=_fE;V zvpAE^@ctR`wca-mbPak>X~r4HftxNxU%oz~mPLAV?lgZ`N;_WxzcrVQk zn^LP8cMn66F>*jgK!;nA5Ly~nZZHhpiJu3T11yRhPgFuFS#`^?=HNt1hz!Qq)xGJf6W~Q z)7Uu6QGyS%!$;9n_uNp`@jKgLyg9D}Pt->`$1GXSp>^wqgM;-ost`*%@h9nPe1jki zQF?_pg+<7?n_BblUm>2ivJxMx1SeJI~cG}$3}0p*dgD3PB8O@{R=w} zNIeH@SqQC$4CiBU2pEqDHWi$h-tD*fJ;nF^ozK_g;7cu8D=f^|F|{ph9a38xjOiDw zKpLJ%5QYK7%W5qJ<)}%3rR4?}mg+TxAhSu~SE(k!-kG55gwG}{6kJ(xS27(Z4EtH@ z_KJ8QMQzc?v&%Ech+(WwdPkRMjWp^ zfN&;{@&R4Qyj^Wi#`yEw~Id7B9ZWdZt{``2O5d z*Sz~SoSkcQg58Jko6}liaX-W|&t7<__%mFTq)`44$2@s@xv3!>O}Heb4kR6pFeFw+ zm11DxDYhuP7ICC9Sug{^DJ%05#qF*~LfY&0?z3P|lSnFzOpE9mmOr;=rVjh2sl`f< z>S866Ikl)I(lteAeMd-ehdT%H-5~L$+&I4izgV!@aYWbdh%>zrK6X+H81zXhZB(uc z{r4zUE$?N*ii1IN`H_yozgY~|$0RJdt0?8HP;bqx2;)>LAfBI-w@%-DXYF9qyGw>; zw8E}#hKEBedvLcVS>NU69CDARh0z7ozieUq*SD}W-UneiSx~nEEl%D&4e33C3^N<* zL;xxk;NR3wcjx&=oLMdwLi4mClI7OrC`{pD6CYz31WpaJOw-MUUrX5gKKZC{bGnyC z30ScRT#M8xt}efcNYnQ50NZ0SXpzgM*FR!F7r|I;@Ut+LXA$(cF4dgjf7rd4QRAKB z8S}}+`{96t8Mi@G758Dd1sE(5)N=#f@L5CIxHWp>KTC&HP?l}NBRLbU#MZm>89WT^ z=%n!%;kaLR)+|P;Zsmw}8nkiS#w&kB^|M_~#&t4pB8aM}$%cU8g0a$UZ~@vI3b13) zoPmFUX?ja?>WgNW*D}l=H>d1wBr4)xF(&LGW_uU&a4Qwgliz`Mh0=1Ef2ITU6PfXT z;vGQ~y{SAp4N}5BtdqomF13t;%!C)p?p!`PK2yu{`>QUo_yiFq)g4nBk&NDMbwI!$ zs!fa$HqvHJiv)I!e7}#pZ_6a@E5+Fe%v?y4FaHSTr{lj=!j=CKDyOA&*EDrj+mDeNrwErc9cA zsY>bf(Ei#TThE2@AGOZb<&kzJe!L@~Z;oJ?Jw?62v7;7AQ_ooAAt2O;^|FwY|1*{q zy?t&rd2pnajpMO=Ay#;E3DX(Q>|qhdkI@;Ek{=9O)-?G)V`VRc2x!aC+u&u3`ISdn z;&Hg~+t%Cx$*%T?1j}-Vkeu_J)_X@??C=2MD)e+Mvn&|4GTCCk%HVOmifdRfEh6!N ziKQMy2isefM-aO&v_ZMnELvPJxdDyZz=d|j#t9}gz;y&38?Xon(NnKzlS9p^MiW?!#060L>M zBN;MqYhptmb!9;I*5XjAyqE2hQM9ahP`naY8IO2eat^a@^l19SSo|X$M~)tnnsxBH zA&E@yh(tgb&b%?%_XH#9s%-z~58;0Cj~3aM!`7Hc!&=oL03@QVP!u|?+``2;p1HeW zggo5QMQQF*SfHnz9v{F~bjc@~wQHbrXBZ}ZJhgXCUE+WYz8~)QjA~I*&el43#&|Sc z9->(FPmA(2{xONJOJ2307S@P3&6wnNzRu>3@{voUuI`NGgkcd;dG{9#K(Vh^{U%Gz zv@@6%*HYM1idVmJ@C;LOxJSK=ZT87<`c*6^|INx$pndZDQd-Mbu4C|&83-#+hWeVV z2iWV0jL5X>rtTOMQmnS0baJj1>CHBbtiJ> zrgtKul{I`srEneku|4Mi6*kyj*5Ag-Gd3_UUMw$S;oV#|jkzm)2Xu{ggI*{vjzF=% zoI7wp_m>Mo1)aQv@Ug`E-9fHA_mbwlH#p3}fCE#c@&jJ~yEjG8>B&@Bh9w%o`9k70 zvlk)?gU(_<=F&jiLJV9OnkE>NqM&t+f&qa=pWJeeP5MahL^-VW34*G-M%G?WNx^ht zc`m7gQ|idGj?rM)v7~Wo16NT)Bjo#FX{9_7T%%^WYw%#vrL z4&%cI&rLPwMu4TQ%<%Sd+s9a|`u#rnq|~o|vrOV+{j@Ew%|_!Kr>qbiRM+<>*nLun zKfHp#IB&42X@`U=1G8hDqG7{AVJJK~d@y{UV9eud!2enPl@!Bb#X6r7gJGH_ZO~9) zS-K+}M`S-lXcS|795V}ym#sJc;YNfw>DHP>@envcSew*6wI9sqJRhDDQ&k|vd!V_x z1KEg6({Gce^YptQyG*b1dd?4T)LZ_*PFL6QcJRrbi$`6Z*e5NCG$1aru5{m|+_I$z zqXsPSpKefrFs?rl32l_vWG^rYz?LBP(a_%h@T_y~Mv@q!%5 zHy^EPyr#zO^$HgE(*0`TO$!AjBuM#Dkm&f920KN1fA>3xE97U&pTD@eI$!^ud#vCS zmGe6aIHK#d&4-o|;C&7Ww%o1*!SR+eZ=uZ)1=tv;qM4!bsEpnCw6(9-waI2Lu7b>> z@z77^B0dP!YuE`y(}B|S3RtF^HhlBSIvi>)YmYazXdTX>AYcYDWE1Eb21YS7kHV!A zWOE8GpFDV#8qdxn^&x8@)u3)-H}=;s%&-?P$p#^OmxStm$z@iH5_~w4GD6-IOAg9J zJ`@L7dD=6wYz)>zE^W){a0AM6eSaRSlYO&y*JTV zYiqUVRpNFxEFQ;Yizi10;IZ!)7XWr<5EZDL62C`4P+G29 zl_`CU$7Tc&2Fd=0gE(RTK~l8WTqBNU4Gs&1TOA`sU&XZ{cLR-2+mu9+18WcjGN#a( zz)p^3pH;^WaT9dj=M(>`Frr~|l5Fay*<^)5jyYBYcAj^;5xbckjJct-WrvH&J<%H5 ze(wary-VH>4!IWz2>b|tmu_w{D2h@koaR8e2E|wQuAl0F!-5}#A@fb?UyC0{G|HyF z*D(Z7+b=?mVBZDVG>O@8*HKqG{$=G8^V?eb;cn4z2t;bju_6fmy_s77tQ;df zCllXl9oyQ$*D-0}_rcm%2bE(^#2ypkEENPmmlo<{0c?j3oD89ii*RFe#SlZF?d$S~ zffy@~5u*|*L>II-eU=mLute@NRT$c2yTAf36$@0YHB?u%s-hHjLO@?Fnigdz?$^On z!pO$(Rtpu%_0`%y!vP97w`~kZ__UyZYrVAabwSR)Z84M3qN%;G>HrB^S?ZOww>Srt zy@N2re#NzN;bduzV1x*vh3Nt69270G`RtPJqVz0eRd%&}K+0qK8(7943lJ#6J5Lgk zYkh}x79!JUA6=L&mu9AhYTkxh&~+HG0Ip0A=8bq|H7#5;C*iGEW&y=lUQKFGO10XN zMS3b{E#}zsVY^EL_R6>HCKT#au5 z)G5xkZ^%QU6hr>#h_szN4+EZ?!5Ad`twPmhSjiX`_?)#?1 z@JgZumPYX6U+O~$aRFlB9)hxRaXkFI~`HYw2N~rL&F)KoBv5 zBIS1{GKQPM|L)$Ca_c(MY8!(R^OJB%;|~(PtopMHpil`qr%!&ya@B{?5v<@#GWw^H zkrMX<*oZZYe|ASFL~*!GmgTyj2@uGm^k>46F7e;0V8d~2m=YkjWJ)E6mk~0)T@SXUN0xupnwG}x@I3gI_pfyObv~}&Qy28`0SxUW2PE-?y|JbxIEZlK;nkiUK zGy%gSd>9u>5DwPnf<-7?BYgV;W@=$76&S@BIPF=C$Cu?F1}glV;DNWMjm@1}bvDJY zI*!Ei#7^ZdL*$*0ZD(MRJh5Um#l<^HtC8=L=g5m;p&yxRt$G!c%tJcWI3&5xnuP9;y5o-e5r>l+{5VQguqR)3L)aE zZf>>9hy}VQ9;5eFI9^2wcSUZgKBglS{MwQNgSJ)~JRmo&)XQCR8PDUlmk9pT0{^e# z=zui06OtHbTlfjO)V&u!3p_pG)q8qQ z?Gm2VsSA7#&r7`csI~SAIBa^vmfUk&!&&*`%bIhaNwS-Q zN&(0aO|3kojdJl)77sCFa$#x%&c9nb^{%6cLgzsmrU9mRoB}-D$+nt;O9(SCH>Htd zCE8K5uxOO?5ghwWl7)RrCTHYK(nsBw*wm!z>JCBw-|Jq;G^PGp_G_G#mipyqM1dTk zx#g8PT*wS*tW|18$WfQ07{Uq&f-vZpW~R0D)4Tw;-;HyiK&o|5{XLAW791tMY)kw! z1RJh@iYx_96+1rYJ-@Iw&5QUnYrO&P6MO3qwKRk=xR1~SjBX(sDI~xsbS@j8aa35&T!&+65P{udq8>bN93<~hwx+a)HmjLP zOOePEHE`dGdPZdZFssc943_@;6_)< z%63;G0-p+O$*Nk1g6?<{Yw1^_po*IEw-0%>E=GbO>Tj z(NoTE=FehtR{%CoMY$7`IfiNAj&Lw9pI*kAGSE=A%s;%JuBFnkO0rO6L?k~5rAO{h zz-Iyfa5bdN4M1r^ADT{!*VWo4ifm(2a`a@+;7oO@s8F4Lu{J2{DSdmk2B#!1)(DwD zAePL$j)&M0_|PQ9dlEu}i^n~UU*~X?KcuZ$Ylnmye~RTP522_ix>H=g{RJZ&hjFK< z3=N^82eC1im!X+d9)~S6d2ACe>!G$4=~^2Ao7N-B3*~+}nNjRZ$IK~`T#I`ghTME0 z#9j~Q^G#{MDewqSe_xpLQq>86zzoqi6vNLB+$#%te+SE$hZn3(b*7^ zenF%1s+MHa^A1f7l7()maaJCRf-Dsv3q#+5&mjp z#=^X}YZ3UmP1{)GxhRz(Al&hd`r{{C>Wjqw6?U?99SwOEM*^!bBp{DWOmTdn%#q~% z4pbl-?>16_+Uz7$fvSoO1U|`u2YY#17AmEz37utjx3wlIR$J?%pFfUX;D~AV;&CcE zj-aQr5PKH)@UHwrb_BMQl%UY@xF*c$Lsu6!KA3T# z!ktZBs_ts!TB~6FY-BDoMD#?a#%d|xcrrJcz*u3#dDsUgA>B_|PSb$77&=RD{=p2* z6#IhnT{miiTmuzcjnoHSf#W>nfx5nDF8_$-TY`+cN+HH7zJvWXT5jHuHnRTaR@58c>BVrh7_J#^-s1R~?1UZf zvmf$cUEi~xWS$n~nhQ`?Z;v{6BbYjCE(D*1hHEoc7<(z($;WN(uD>ht0i!aFPl>7&I^H5)3&Mf8l)tXgb(ZtNMeEg`;HW!BZEhqQFdz0dT>w$Qfo zD!QG$4;)7xq_2uRm;J70@*V~#QYe8N9!_2CWh%tB_Y>RrB>uaU8O9&#Gc~f;TGo^A z#XB`LXPaA_4wXLsvI{j87c~D+XH%3I93K6!(B`c<*ZuUwc-Y0rG#VM?-7Ss{ooseH zI6p!32t)mAJ*G1ZYH2+=p@34mrn$sE_|#9=J4X8a3q6D?pS*N;ED}|LUez<#Z(VA8 zrA;}hCE^`<)x-wV>>+B{vFTFq&A1OjJZVsGQ9gg^74N#0&JSj6fOU;VX8xtABbu+k z7EWO-OAN?oZf5o&C)M*4`uSz5!W5B>;m1yL$fWp+tFsZAT^(yvHx-8h*0K|#Qt`p} zNSCFuf+V21-^;#DvW7DCDtXd9%>t_wc^too?HoG598=xXm{poQe5Py z;W4x(IHe4eNY#YKu^xD#zKl3k6Rk0dM=YnfhDie-LVQXSX8*;>*m;jhAhaX`#C%3! z;eo-OY;CAG8N5yeR7qeme)Et5MGPfKn9}riL=ZRi7&6Cuy$HjC_7z=4sQk0a>pmzx z)3FDp^sL>sVJ~O#O6&8j#Q$&U0~5IqlBzukxpK7oNf?<43A^+n~= zOvgM;T9V4+#LrkvQ>Zjw5*HA1J}QALE)#TfK-@VKKG2f8S+Q%vhQz7tU5=|GCOd`h zGbB8I7NeVe4QwEcsM+9@z0(W}IXEf&A{-%K1Vm#i^~ylI*t;|Sr; z^hGavU&@sKY=kzR`k!jI&+kMe0y8hgZFn%<;NH2YM0rwn1=M!(;~O4DfmJ7JC?{`nly*gQ`2Fhq>TO88WB?a7Zfii3O zV=@w|oJAtU`)Q#2AweHIrwZ-o$8hQ7vaGr0$AM$Z0U;;466$+y{yb!Jj8*u)?EQEPcQ3j1wcto(hB!61{EeY*uD5k7zJWcG$fyx<& zY5AjNf22#G31(J%?u6!)d|SKfjs@4S$5mlxG|n_aUqQ|s6+@XE?SF^Y#-UFtH_s}h zoS3W;lM3rf(y=7?ntU)e>eX)@cdtf56l_|c0o;eu_Qu_qM_N)<8jY0&r@QelcEQ-| zU+uSj-C z`A&4~GG={92muHPJ1lg?7-23QwO;npW!YiGi0oDP!>q9Pe_ZGD=?L2 zOk`R&Dabw{D}ZgC`l~#S%vC0!W`-D6lN~}6Tsumrq7vcVjR9`05RYpAT}sIAF&S zb(M(lYX^Y+J~Zh_a&`^3>%rQrU{S>Fmyp+XZB)v0Rg9-?5?v8L{hbLxIzT&TMTwYO za*f$flq4%|3{7;KYg|hsC#g1VGB&?tEC&C4hs@S4w#>lWTUcQpvdZgtZ3?6hw?8!` zo-Zb?HBrYff?exkZ*sHSMx(=QXsS}9Oge)c=L7B|9XPQz>%$Car^fk(SgBM5BX!mJ ztUbnxTT>)D=^uBhhP9BtfYaqd>pmPL=)sAmWhl(PG*Y1oJ~JiAX-p%Hues)nQ>2-( zT2={P0;n|{M4g6=p(R8EJ~k>ODCf4HC?!P4XtHJ15|=I-Ld+E+T&t$?o~2~ECXuJJ z3~i|mJlx(6U1;yGGFZ5%7A~q=a#2mYraE;z1#J%JT(R)AO(;Ef1L!H1*t-#R#T4NH zy9dWX_F78rPJp=myFCe-oB(nAcXbjpeFDU--}Xt+iSG0eXt9DVRDcqu@bo+L^&>Uj=I1{DhDNw#xesH<)oeHrO!#_a1~Zb!Qq1iTTKp;PtbwjYi1!! zZq#CTq8G0|G~ze9x48OXdO`l!-XtVq5Sknp^NMHln* zPkP?fEra)W0S0pmMBJnf7gb4YO8srI^cbHU@Z!XTI-hZJD@lek}3Pe(!b`V0T zb|@!_qD2&hfRe$p7&4JAC44Y}oDtsUxSdU1Iwrd%QOBG z$}gzErGlF!(LL&5Xt^q+lfQ)0IX{!$)e?C{flj;Or@P}$%{+=63MkXZ3~jT0@*Z~3 zk4Y{#qTz%8D9EG zxlBKcTo&u3l5hm{skIc%&5*-Antc?mE^A3?W@o`=?G+v$jV{;*-9bkT^a<)ELchQ^ z!im1xQSX~3f%G)N4LFpgh7Fm|uW1^1+lvk@l>#yl?NGJMHTc*=!3=>@hvX^pEot~E zVmd-C*u|rYh<#BFUzisq}jXbYVR}5!Dz< z8}12Rl0=`rHp1z4n?MG%5xHO=-=uwyyHdJT5fEqVjG~j?t{B!CW9Ooz;TIa>Je0)&AD0hT+RtWcvMGB}W)Bh!l7|e_~opw}qM+DU!LBb|0o=x+9Q#(Uj#UuS4&yr*-n;?^B-HN|(p6%Eu( zUQ^JAc!R@L&`dAP^-8z5JFal8H{L4GCA0a~d5-7018=}g;{0ZFpo`@8*2&$zPreHt zgKwg{6PpU&ws@fRI94q~nJ}BfHbN2Wuj`cfM^C9Q*}qqrp8(@Sp)5qj;B`)! zlsaBxoA%#A$tG(0NLCQzq}wp`Wl>~O&~cCNAY+Tt{3SCra9J}30$wq#`sc`@UZI|8 zEcqI1hzlsVflAKaTFOyTR_4<9>!LrVhieu1469N=O26Rjs~(|HRd9U9%SdjDv>9nX zNSW%r%7{>JTt!E%^Lb(0$#{W@b1N}`EfOYD!L%bKVZyM-RB61F0auFH1FG^>x{QHj z1a=(H5%>C)I>*@ulW?rRq$+AZ2SxG%fjIHYOG6Nyefw!4O9@Bd+NTuVpn>Gl{HAiR zsF@I|I9DZw=4@g1xo*Ptv(U9c4I@r6fbS<%*n@ry>Aj+>w9JhQeJ4f;?Ht~w^7yx(ZUqzj0qS9 zVv++gtBPyb&sQxSGbRmS7x9Q_iU0|Dn2ny&W7sWg#H0ZlgweM4h!k36K4Du<947Zw z{Fh<}?#l%C3vY^n3OaG>(K_jKjF-!zgnMQF^5Lb=>4`kIhg1To4jo!(@JmzIOH)CZ zd{zD-rb~H2G-c3F`@7OngiJX0Mno`77vr*zr-p8w@<0&>;BuP9U){(&2|K&oo{ z&My=G5_p0LT9kF4GsR)ms4g9wVw~1rVNrA8k!rSHT&g!-#p8yot&XQ!qV0Ps7Pbn~ zyA7RrR2a%OS_fgX-IhfdZZy^n{Ls+)i4M&-H)%(UJT*m|HFiXWqgaL5U!s!aTKN$& z-;BCKZnDS-wacDxntZAt5gBFkC(z7smaQ_}gl5fcVJGekYJyEkm&a=)aJmyQMq!-^ zZ5FtLqqoWK_SUnBZQD0u6?>bD8+%oxLCf;{dj)ZCi0ZZAY;D*T$J>!mDdtziGj44p zB7=*kRq%yFxOaPK2k)>{{UC1JnQ)N0xF!z1qL~8Dvg8OtOu!}+qmh#jND3E78L`W@ z73i;_<_}WORK#d5sAx(|g}wvQLG1*Ey+PhPPy`+-uASAW1?Z|U^?~Wc2VfT0a6Ejw zZdrS<9T>pGzz5_(;r5}h3v0q;5insml@`~S6@8dnn9C9E4iZMRQb(ggyS6zp>VVq@ z&N0@k$ZcXlNV>uVP`bhF)MnU&L<*ug(8xTk9SRzELy(M9&W^7h=t_y9bTV}k1MFvo zK9rM5d~OMZB1jx4n_LT27{N0aFDdZUwY_{jY3z%{`x1&EGcw*OF~9>t?9!+#(lH#I zVY(1bl1M%Z&&N&SWQZ%{6~SxK?v{HE0?09t+eb#$;;MNTpkUUo+DlA4s^`REQ)W47 zl%&iqEw?!>imwH{Y@QyzRS8KukQ!91Fr+0ecO`7S2&0p>Z6l!}40EkumO7zcMjYDB} zQl8LJh+~l>n_T8w` zv=)|DNY8HB(t;ExU&h;7Z#i?qw?}V(;6d|kmwK?$!QM+)a6`$OHnYCfVIm4S1B9VL z-U2DE?tn$>Cd+AsR-MPb2{pTN*>~O2_4qoQirc>4w(8iX;zq-5tJ|@uW|VX{iACOf z!^+pP(5GoVP&buE_#=(#h0u5~GMQDHdDUnva=C8E9YUUO%RdsR>abCb_ zJ9*uGnr6wM*}%!-Vk z%wcHVEXO1KRn!1rp_tt*n<>uCQwM|;i5??#j1ha5p;#bGJ1ya+Rlxf2Hpcs-j>oyw z3-3>qc3fB}u_qost2`|(^kRKktS|4~`Z8{`!2I(48`kSHdtN(Rx;#6uO?AC|SW~{` z(&1sq{y$5H=efLvrNa*AV)S&#y}nFY={IVz<#M7oQ@ zsqBNAzMdP)uvcELF~q09XHGCfLgxh0?y+P~?<3W57ax8SrGiIo1mC|2e2(=+Bk6}m zGeS?>wiTcCp$3lsql7%k0|=CB#kcRpJ2e~+t%z2I7d%(Wfy`w|v4^ZfX#Er8s(>r) zki-0Pl1qIGDX+riN51Pz47*dB+NcGXm&JH+#u>(OkC~>hoYlJPaPihB0EVh!Y{F_n ztE|yxY$BBl`ATDuzrS=Q?T6}q>B<6kzoc zHFsQC(nF3pzyt%i!FXqBLyH}Xn;?9*YE0`SMHU0KWOFgNp$#3TkYu{qR7x>4`z^R` zJA%tJ;0ig-s!j0R5r~a8?+A7T{o95nd%fsFIYX+x{GHq>H&MiqQvZZf4oX3%}dCVqeS z#LzSE5(Ehn;Xa`iOi%R)sMUQVO=%sTf?gp2McjiBo-OUB9JCXGUBH?*eNhReJp=Ct zPJMWv@96(wmV(|NBub3sOiZB z+BOBs_iB@YlQnQz z3g2L~TZ`~g+bt|Y4}34NSZfw*&4XNPI8%|mq3Tc>4uvY)_%Cal>l$=~u=lx(5)a1- zk<-2GvchXh_|6iA#3n$kt1mp)a1+=G>V)6yY&W7QnBus6MKHka<;GuD+Tmp1RDt$X-6RhfK^W~&Xmd68^C z8jMx?BDqO49)V7$tQh9)t=*@eJ=xyTfOw@PWo*3 zS#SHZ-u9_9df>CIXS+KaOYJ|f!e24}`Qy$1Z8QJ3x1T;;N}ep;!RG^?|2K|5u9r)# zKG*C2on15bb^C8;cYC4#@8a``I!!*>KRDWZ`R1!X4&Utk`g-r>S3evd9RKS*>c;LsZ0NPA;smSL9r**_Z%-N}7Q^U!S%M3k zTtfm|NQyj^CYNQ5{tEI@f?3aaD>U|WS>;^9FRHA`i=oPla6}jrM&dGSKro=eaL$B*ji3mI~u4{uQ)PG-qM z72csLG(7FmaX0o7S%kbg*oQ-lalaauoWX&@2(rtGp3p9R5|wX$Wy!I-gM%kSI&qzd z3Jz+vhcsd5Lqsr%RB|L`a#mF%{bFMyE&6(WsQP80i_>b|9Aa(^@CbAR4kk}UZ{t*A zRv5hj(N`NtqcY#bxlkFfXAP8ewWjhlqJPaa5_>1eIF&=a<3LUl=ooeJ+*_G zt|vcA=v%*{Q(>|8+iJ48_T1dKT3I&#c?|#g1OBtNj54>pz8pw!yXE@cs{BUt}DbU!#ONySLC;E&4XwK>(be|^|i!3+xNEmFB1MMgv19eE47}tS*Bl|$^KuOFSxlO zsxg2jc^}?Q)I=>L1w|fdy18{GG{ht3gK$fghSE_HGIIOHMGn&gAT!{8W+@##6Etp9 ztvr`$92H!1Ab18}sif9})Av(jsM$gTn;_3WUWJ3xYu6rT%o-M{I#t0voq|CB9?OPd z89)XCF_4^PYgt>QB)o-F$s`6&1~06sze8-IA2BI{hOs77hcl0|Or|UiZmFV(AfCnc zTc(BzXw76ksLo*2Ft{su3n6VKHG;*d6>k3~b86KqgR!@|Qd!2f6K&|ELQo27gm!#c ziqnlYkE${T2!vEZ7?x`oaNJE5jm<8jA{Jhb5W&8ETPsefFIN2zb=Cimz3XdkoCf0W zd?QlKP0;R6YdFI}OKYt%rbGAwxhO)`8LOydvT*CwY{@Fi_>3nJn~mk3Hz`}_z6 zQF@JqAe(I#i^nqO{z}Q8*pg#fj+6(x{T{l52tsvQpwgk)t0qN@tWE7jjq@s?yV~6S zVrAtzM!AZkJQBGxn|_MPQc>gI*r~}zDt`hlFUIQNkNM1OO0^JDPi z?G3La)E7D&QY1CAo*Ki^T7`U?u2jc+ffiU(V1(de2q*b*_l0BeL=-44ugWY!o`m~^ z7c3Mlnp`A#0-HXu8PhP7H)HP6__)-Jsbv0Q4VeGO^+p4(cf$7hGKbAgW^V8?9VUbZ zW3fEV#&suc2!Q1y@GCRme5voF@n*gNU2WzuBl&HmribvHm?76hfNMsGjlJlH`)DTM4l|xc;BB_VJ z;0?<(SZY;8F5n=zP5aMT1OyNnk$Vys<$Z@FV zx?%mXWGm!+H5RDiv7bktQ$>pNBkkGUJ*3+^zjMlgW?ifaDx25>q&L7s`9Y4yb*n=Y zUh1v-^;yLVt7h_#WfGT&Wel?!lR!&852HMV7~5WiZAc}NwsBZpD_0&HS9d{f*Ilb| z>92hd{|!%PGAR_yVG~em$0E|qb2lq%p@KJm;-JpXF&{*2rH5(cEPs-sX2hv0_6tk9 zs!CK1l1WMf125w6P-2G=9y&C0!=O=n3@#2>pF>BZQd7q__w|BBIEjm!gi5C2R`9(* zFQjAevm#h6Wxv9C!q9W3X*eaFL@JL4wqRFHwJoKJnkq`5#hD0)rg!%A@{6cIyz_g} zr%E)6lgtc-aWc<=0tY1v8Q}w3YNNcw_(9AdtPW92V$Y^ghR9ZM%SH(MHO1Wsk0U=YOBq|I5kgN$LD=_t^V?+0C`W|I0eo zD7$sBs)iAo+C9rZ-r36wzt(l~Zv4NTl>9&FKV6UiU0jR)UjR^i55K+dmv{L(k>|&~ z?(s*bN1@Qr?|yVXI0?@OgQLC>9oY|e@Bifl{J&^5!25sM#kIEopWXke@c-94 zJM!{>7Z><{x%~m$y&NBP&VKLw{^qCOe|Y`N>z_)lTz(va=`G3F#mj9R<+G|s@hFO= zcJ@-3Nq;Zi%IiTEr8!KsNk23mUw-{w##0D?-Z(I2wIQ|nO&(;fWex^Bb#Um;(s6H+ z{&Sy1VX*X@#$joCUYUwC#o)7`Ol6DA)K^CJ{Iv4xSB*nmV=e%PR2VtI%eDC)pEajaK!klWH43Q)BtTkVHXRDuca~Ew7_B}? z$^V_t|9c&;|L^2lG5=r38h-x&4qWRxc_;J#v$Fo*)q=p|e;3!n{GU}3QUg#ID{3Da z-QF1R&RpH2j|O4)qvOtT*gqGtd)hzOXzh2xlc5}*^gI92{J(qL^Yi~*Txz!nOseDNhu+1>2QDfqq9 z9sks+CZ4GlrcTAWTn+6D+^fXFXJtqmY=qe;Z1*|YMgmSMZH2WlxJ|6EKwv%V>=VSt z(0dci__G5p{ooaJ5>aSLYJJ+qv@5=6I$@qcd2kgtGq)zNkI%hT6gZ6?)xx&56!)z$ z|59V|-n4aunRDtuM!9tT1;6EQO185b=s)6wPj6l|ifnI7Zt}KJr{ch92M34bHAd(2 zaS2Bye&UPh2^u$tS4^a(fJI5emRl(B@RQ9r^O`u5HqSi=gNiX=ab`DnNA5xKbSwrk zEM?0XY{9cc=0R0A*WlP9$BQ(z6`TvC8ri%Q#;-5{Uo#gqihOADZU&q4_7WDhjC;Mn zxLnpI49xPlMD_wIHUj4|+V4dMAsTi4Do45C@8I{eSj=bhg7_V^P_e=Op}O%^*$2fW z(J*Md58FOlruSPn*-Y2^XV^^Hcnc$QGR@7Whg_j@rTB8a0a#wd;e$6t55(Y3HqGb( zPuK(nW5_~&>LG%2pjH%d`DGf)*FY#)YS)%&i{E*>Az90+FCtyHF18FU9vJz|8rQc< zo7=A=*iR2XnH^yfVrjO0ozdG*Hm3L{6R`pV-=+lP=k{yLeM|bNmsU`a-(|@I^7BPD znoeMs_@4uba;b5EF;lq{i6d;BQyCsKgSludk;gDCT`tG|s=4$xU3F&f<)8AnM=4jz z0g`5A^go4EbA>_~iQJ8!VerB-+SWJu5Be*o*(p0{-XBZj!a&5dK!pWSqr0v4pNOkE zow{CRGxM`HwOl!BLVX&CYjmXIH-~0gb^!}*FcB#&O*Y^(b~4nO)tYgp1j}GGW~*sj z%q8dhfLQ30_b{{wtu6m@eGz={fxY|jqXqsm#oHxLBh2AQ4>08~vhO@;eUs;@eN-Wv zEiueFl>7V>EsJ2h#0`^B+VOn`L8K_QnnPp-eMLQHgc> zg(^BkQ4`gs8;gKC6WQa!n!Q8tBU=@V(UjMwOQ!{jp0TD%K4IoaF86z-c(xxp2;w#D zcXQpSp8ap<>%ZOOj<^5q;##r(yN)&d`tLh%t?T5StpA=atp9ep9{)SJmaPDfKybhR z@>aBhmDsQQzH^rzXwQ!1`T4o%pLB=4?ztEoorvM_(aCx5ymNN?AFcl$o%!|Oom^}C z|Jm1ndnac-H~wb_)_*&vUjFaoS{?rrChg_7zhB>6++1B^c+f}22mLxrrm3O>Mq8{a zFE0J?x+`TIKn)_8m#b(Ln`8bWp20EtiHK#4esq+aL?6zd3@q8`?(nsVVgwd4F_Rhl z@QFV(_lMv?1J2D`0v-gp6rG5-ni6ovpmb1e5$pexEKQ87k2W}8XrgBg_?kCwPn8Tt zNPUZI0S*GhSXs{^oHxXW$g?DwsHQDD6&X+qL}E?pynhOcx5|svgW6Gyrs{yH<(>At zg3p~m)BzV1tV5i(oT_mM(}6ncb{LLn#z)h~$tbGr4+6_3M^V9*BA*c7C8LoHui|y) zwz92+^7;{bxwVklri+o6V=2g`G(}VouBB4ovnF{fWAd0ot78g{k(??|&@(G=GX7BL z>mvfwZdJ=%fVrbR%%r-b*SsKUJ_CPO;3<~fBSTpmxCWZ9w&^M3Nah#g@ukiadP

tYIGEH@Ruq%RMH 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
CFCAHM71;r}TAB?Y&bJaWJ1! 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 G20Z}ocBs(+ diff --git a/Assets/PlayFabEditorExtensions/Editor/Resources/PlayFabEditorPrefsSO.asset b/Assets/PlayFabEditorExtensions/Editor/Resources/PlayFabEditorPrefsSO.asset index b312ae609..b93cfe30a 100644 --- a/Assets/PlayFabEditorExtensions/Editor/Resources/PlayFabEditorPrefsSO.asset +++ b/Assets/PlayFabEditorExtensions/Editor/Resources/PlayFabEditorPrefsSO.asset @@ -12,12 +12,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5d0199c11aa6f514784c5c69cd8378d8, type: 3} m_Name: PlayFabEditorPrefsSO m_EditorClassIdentifier: - DevAccountEmail: - DevAccountToken: - SelectedStudio: - SdkPath: + DevAccountEmail: kimsy198402@gmail.com + DevAccountToken: 4469kxx5qoc1x7seij1o41mj8omsnt3wp384uuwzxng4yhfitsop89pwoh8bgr3mzykmezqakrj6zec6s6op4nracsij8h8f153c5uc3f1caw5h6rdcmjzbtwodm5ufeuzf9qpgr4jyn9shux7bgjtisme4hraosfmy4cyh9w6og7fmfxceq7f81edmg9yqu1rmohoq9 + SelectedStudio: "\uD544\uAD7F\uBC34\uB514\uCE20(3rd)" + SdkPath: Assets/ThirdParty/PlayFabSDK EdExPath: - LocalCloudScriptPath: + LocalCloudScriptPath: C:/Git/nn_himminji/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js PanelIsShown: 0 - curMainMenuIdx: 0 + curMainMenuIdx: 1 curSubMenuIdx: 0 diff --git a/Assets/Resources/PlayFabSharedSettings.asset b/Assets/Resources/PlayFabSharedSettings.asset index ed985f71d..d6c1df3b1 100644 --- a/Assets/Resources/PlayFabSharedSettings.asset +++ b/Assets/Resources/PlayFabSharedSettings.asset @@ -20,6 +20,8 @@ MonoBehaviour: DisableFocusTimeCollection: 0 RequestTimeout: 2000 RequestKeepAlive: 1 + CompressResponses: 0 + DecompressWithDownloadHandler: 1 LogLevel: 12 LoggerHost: LoggerPort: 0 diff --git a/Assets/ThirdParty/PlayFabSDK/Addon.meta b/Assets/ThirdParty/PlayFabSDK/Addon.meta new file mode 100644 index 000000000..11d3b967f --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4592bb1110a6b1e4dacb06b424cd2759 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs new file mode 100644 index 000000000..a1cf333d2 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs @@ -0,0 +1,390 @@ +#if !DISABLE_PLAYFABENTITY_API && !DISABLE_PLAYFAB_STATIC_API + +using System; +using System.Collections.Generic; +using PlayFab.AddonModels; +using PlayFab.Internal; + +namespace PlayFab +{ + /// + /// APIs for managing addons. + /// + public static class PlayFabAddonAPI + { + static PlayFabAddonAPI() {} + + + /// + /// Verify entity login. + /// + public static bool IsEntityLoggedIn() + { + return PlayFabSettings.staticPlayer.IsEntityLoggedIn(); + } + + /// + /// Clear the Client SessionToken which allows this Client to call API calls requiring login. + /// A new/fresh login will be required after calling this. + /// + public static void ForgetAllCredentials() + { + PlayFabSettings.staticPlayer.ForgetAllCredentials(); + } + + /// + /// Creates the Apple addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateApple(CreateOrUpdateAppleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateApple", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the Facebook addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateFacebook(CreateOrUpdateFacebookRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateFacebook", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the Facebook Instant Games addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateFacebookInstantGames(CreateOrUpdateFacebookInstantGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateFacebookInstantGames", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the Google addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateGoogle(CreateOrUpdateGoogleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateGoogle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the Kongregate addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateKongregate(CreateOrUpdateKongregateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateKongregate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the Nintendo addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateNintendo(CreateOrUpdateNintendoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateNintendo", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the PSN addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdatePSN(CreateOrUpdatePSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdatePSN", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the Steam addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateSteam(CreateOrUpdateSteamRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateSteam", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Creates the Twitch addon on a title, or updates it if it already exists. + /// + public static void CreateOrUpdateTwitch(CreateOrUpdateTwitchRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateTwitch", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Apple addon on a title. + /// + public static void DeleteApple(DeleteAppleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteApple", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Facebook addon on a title. + /// + public static void DeleteFacebook(DeleteFacebookRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteFacebook", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Facebook addon on a title. + /// + public static void DeleteFacebookInstantGames(DeleteFacebookInstantGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteFacebookInstantGames", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Google addon on a title. + /// + public static void DeleteGoogle(DeleteGoogleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteGoogle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Kongregate addon on a title. + /// + public static void DeleteKongregate(DeleteKongregateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteKongregate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Nintendo addon on a title. + /// + public static void DeleteNintendo(DeleteNintendoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteNintendo", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the PSN addon on a title. + /// + public static void DeletePSN(DeletePSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeletePSN", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Steam addon on a title. + /// + public static void DeleteSteam(DeleteSteamRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteSteam", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the Twitch addon on a title. + /// + public static void DeleteTwitch(DeleteTwitchRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/DeleteTwitch", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Apple addon on a title, omits secrets. + /// + public static void GetApple(GetAppleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetApple", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Facebook addon on a title, omits secrets. + /// + public static void GetFacebook(GetFacebookRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetFacebook", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Facebook Instant Games addon on a title, omits secrets. + /// + public static void GetFacebookInstantGames(GetFacebookInstantGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetFacebookInstantGames", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Google addon on a title, omits secrets. + /// + public static void GetGoogle(GetGoogleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetGoogle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Kongregate addon on a title, omits secrets. + /// + public static void GetKongregate(GetKongregateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetKongregate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Nintendo addon on a title, omits secrets. + /// + public static void GetNintendo(GetNintendoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetNintendo", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the PSN addon on a title, omits secrets. + /// + public static void GetPSN(GetPSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetPSN", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Steam addon on a title, omits secrets. + /// + public static void GetSteam(GetSteamRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetSteam", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information of the Twitch addon on a title, omits secrets. + /// + public static void GetTwitch(GetTwitchRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Addon/GetTwitch", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + + } +} + +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs.meta b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs.meta new file mode 100644 index 000000000..39ef2ec76 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonAPI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 16e6981cbc311934bab9111885dbfc1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs new file mode 100644 index 000000000..acba30cf0 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs @@ -0,0 +1,354 @@ +#if !DISABLE_PLAYFABENTITY_API + +using System; +using System.Collections.Generic; +using PlayFab.AddonModels; +using PlayFab.Internal; +using PlayFab.SharedModels; + +namespace PlayFab +{ + /// + /// APIs for managing addons. + /// + public class PlayFabAddonInstanceAPI : IPlayFabInstanceApi + { + public readonly PlayFabApiSettings apiSettings = null; + public readonly PlayFabAuthenticationContext authenticationContext = null; + + public PlayFabAddonInstanceAPI(PlayFabAuthenticationContext context) + { + if (context == null) + throw new PlayFabException(PlayFabExceptionCode.AuthContextRequired, "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call .GetAuthenticationContext()"); + authenticationContext = context; + } + + public PlayFabAddonInstanceAPI(PlayFabApiSettings settings, PlayFabAuthenticationContext context) + { + if (context == null) + throw new PlayFabException(PlayFabExceptionCode.AuthContextRequired, "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call .GetAuthenticationContext()"); + apiSettings = settings; + authenticationContext = context; + } + + /// + /// Verify entity login. + /// + public bool IsEntityLoggedIn() + { + return authenticationContext == null ? false : authenticationContext.IsEntityLoggedIn(); + } + + /// + /// Clear the Client SessionToken which allows this Client to call API calls requiring login. + /// A new/fresh login will be required after calling this. + /// + public void ForgetAllCredentials() + { + if (authenticationContext != null) + { + authenticationContext.ForgetAllCredentials(); + } + } + + /// + /// Creates the Apple addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateApple(CreateOrUpdateAppleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateApple", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the Facebook addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateFacebook(CreateOrUpdateFacebookRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateFacebook", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the Facebook Instant Games addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateFacebookInstantGames(CreateOrUpdateFacebookInstantGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateFacebookInstantGames", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the Google addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateGoogle(CreateOrUpdateGoogleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateGoogle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the Kongregate addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateKongregate(CreateOrUpdateKongregateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateKongregate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the Nintendo addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateNintendo(CreateOrUpdateNintendoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateNintendo", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the PSN addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdatePSN(CreateOrUpdatePSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdatePSN", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the Steam addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateSteam(CreateOrUpdateSteamRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateSteam", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Creates the Twitch addon on a title, or updates it if it already exists. + /// + public void CreateOrUpdateTwitch(CreateOrUpdateTwitchRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/CreateOrUpdateTwitch", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Apple addon on a title. + /// + public void DeleteApple(DeleteAppleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteApple", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Facebook addon on a title. + /// + public void DeleteFacebook(DeleteFacebookRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteFacebook", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Facebook addon on a title. + /// + public void DeleteFacebookInstantGames(DeleteFacebookInstantGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteFacebookInstantGames", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Google addon on a title. + /// + public void DeleteGoogle(DeleteGoogleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteGoogle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Kongregate addon on a title. + /// + public void DeleteKongregate(DeleteKongregateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteKongregate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Nintendo addon on a title. + /// + public void DeleteNintendo(DeleteNintendoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteNintendo", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the PSN addon on a title. + /// + public void DeletePSN(DeletePSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeletePSN", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Steam addon on a title. + /// + public void DeleteSteam(DeleteSteamRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteSteam", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the Twitch addon on a title. + /// + public void DeleteTwitch(DeleteTwitchRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/DeleteTwitch", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Apple addon on a title, omits secrets. + /// + public void GetApple(GetAppleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetApple", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Facebook addon on a title, omits secrets. + /// + public void GetFacebook(GetFacebookRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetFacebook", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Facebook Instant Games addon on a title, omits secrets. + /// + public void GetFacebookInstantGames(GetFacebookInstantGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetFacebookInstantGames", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Google addon on a title, omits secrets. + /// + public void GetGoogle(GetGoogleRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetGoogle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Kongregate addon on a title, omits secrets. + /// + public void GetKongregate(GetKongregateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetKongregate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Nintendo addon on a title, omits secrets. + /// + public void GetNintendo(GetNintendoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetNintendo", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the PSN addon on a title, omits secrets. + /// + public void GetPSN(GetPSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetPSN", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Steam addon on a title, omits secrets. + /// + public void GetSteam(GetSteamRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetSteam", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information of the Twitch addon on a title, omits secrets. + /// + public void GetTwitch(GetTwitchRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Addon/GetTwitch", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + } +} + +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs.meta b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs.meta new file mode 100644 index 000000000..4d4074e88 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonInstanceAPI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb16ee30d77a0bd4095b94a53a375676 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs new file mode 100644 index 000000000..24946cf7e --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs @@ -0,0 +1,793 @@ +#if !DISABLE_PLAYFABENTITY_API +using System; +using System.Collections.Generic; +using PlayFab.SharedModels; + +namespace PlayFab.AddonModels +{ + [Serializable] + public class CreateOrUpdateAppleRequest : PlayFabRequestCommon + { + /// + /// iOS App Bundle ID obtained after setting up your app in the App Store. + /// + public string AppBundleId; + /// + /// iOS App Shared Secret obtained after setting up your app in the App Store. + /// + public string AppSharedSecret; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + /// + /// Ignore expiration date for identity tokens. Be aware that when set to true this can invalidate expired tokens in the + /// case where Apple rotates their signing keys. + /// + public bool? IgnoreExpirationDate; + /// + /// Require secure authentication only for this app. + /// + public bool? RequireSecureAuthentication; + } + + [Serializable] + public class CreateOrUpdateAppleResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdateFacebookInstantGamesRequest : PlayFabRequestCommon + { + /// + /// Facebook App ID obtained after setting up your app in Facebook Instant Games. + /// + public string AppID; + /// + /// Facebook App Secret obtained after setting up your app in Facebook Instant Games. + /// + public string AppSecret; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + } + + [Serializable] + public class CreateOrUpdateFacebookInstantGamesResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdateFacebookRequest : PlayFabRequestCommon + { + /// + /// Facebook App ID obtained after setting up your app in Facebook. + /// + public string AppID; + /// + /// Facebook App Secret obtained after setting up your app in Facebook. + /// + public string AppSecret; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + /// + /// Email address for purchase dispute notifications. + /// + public string NotificationEmail; + } + + [Serializable] + public class CreateOrUpdateFacebookResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdateGoogleRequest : PlayFabRequestCommon + { + /// + /// Google App License Key obtained after setting up your app in the Google Play developer portal. Required if using Google + /// receipt validation. + /// + public string AppLicenseKey; + /// + /// Google App Package ID obtained after setting up your app in the Google Play developer portal. Required if using Google + /// receipt validation. + /// + public string AppPackageID; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + /// + /// Google OAuth Client ID obtained through the Google Developer Console by creating a new set of "OAuth Client ID". + /// Required if using Google Authentication. + /// + public string OAuthClientID; + /// + /// Google OAuth Client Secret obtained through the Google Developer Console by creating a new set of "OAuth Client ID". + /// Required if using Google Authentication. + /// + public string OAuthClientSecret; + /// + /// Authorized Redirect Uri obtained through the Google Developer Console. This currently defaults to + /// https://oauth.playfab.com/oauth2/google. If you are authenticating players via browser, please update this to your own + /// domain. + /// + public string OAuthCustomRedirectUri; + /// + /// Needed to enable pending purchase handling and subscription processing. + /// + public string ServiceAccountKey; + } + + [Serializable] + public class CreateOrUpdateGoogleResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdateKongregateRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + /// + /// Kongregate Secret API Key obtained after setting up your game in your Kongregate developer account. + /// + public string SecretAPIKey; + } + + [Serializable] + public class CreateOrUpdateKongregateResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdateNintendoRequest : PlayFabRequestCommon + { + /// + /// Nintendo Switch Application ID, without the "0x" prefix. + /// + public string ApplicationID; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// List of Nintendo Environments, currently supporting up to 4. Needs Catalog enabled. + /// + public List Environments; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + } + + [Serializable] + public class CreateOrUpdateNintendoResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdatePSNRequest : PlayFabRequestCommon + { + /// + /// Client ID obtained after setting up your game with Sony. This one is associated with the existing PS4 marketplace. + /// + public string ClientID; + /// + /// Client secret obtained after setting up your game with Sony. This one is associated with the existing PS4 marketplace. + /// + public string ClientSecret; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + /// + /// Client ID obtained after setting up your game with Sony. This one is associated with the modern marketplace, which + /// includes PS5, cross-generation for PS4, and unified entitlements. + /// + public string NextGenClientID; + /// + /// Client secret obtained after setting up your game with Sony. This one is associated with the modern marketplace, which + /// includes PS5, cross-generation for PS4, and unified entitlements. + /// + public string NextGenClientSecret; + } + + [Serializable] + public class CreateOrUpdatePSNResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdateSteamRequest : PlayFabRequestCommon + { + /// + /// Application ID obtained after setting up your app in Valve's developer portal. + /// + public string ApplicationId; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Enforce usage of AzurePlayFab identity in user authentication tickets. + /// + public bool? EnforceServiceSpecificTickets; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + /// + /// Sercet Key obtained after setting up your app in Valve's developer portal. + /// + public string SecretKey; + /// + /// Use Steam Payments sandbox endpoint for test transactions. + /// + public bool? UseSandbox; + } + + [Serializable] + public class CreateOrUpdateSteamResponse : PlayFabResultCommon + { + } + + [Serializable] + public class CreateOrUpdateTwitchRequest : PlayFabRequestCommon + { + /// + /// Client ID obtained after creating your Twitch developer account. + /// + public string ClientID; + /// + /// Client Secret obtained after creating your Twitch developer account. + /// + public string ClientSecret; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// If an error should be returned if the addon already exists. + /// + public bool? ErrorIfExists; + } + + [Serializable] + public class CreateOrUpdateTwitchResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteAppleRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteAppleResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteFacebookInstantGamesRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteFacebookInstantGamesResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteFacebookRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteFacebookResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteGoogleRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteGoogleResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteKongregateRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteKongregateResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteNintendoRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteNintendoResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeletePSNRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeletePSNResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteSteamRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteSteamResponse : PlayFabResultCommon + { + } + + [Serializable] + public class DeleteTwitchRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class DeleteTwitchResponse : PlayFabResultCommon + { + } + + /// + /// Combined entity type and ID structure which uniquely identifies a single entity. + /// + [Serializable] + public class EntityKey : PlayFabBaseModel + { + /// + /// Unique ID of the entity. + /// + public string Id; + /// + /// Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types + /// + public string Type; + } + + [Serializable] + public class GetAppleRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetAppleResponse : PlayFabResultCommon + { + /// + /// iOS App Bundle ID obtained after setting up your app in the App Store. + /// + public string AppBundleId; + /// + /// Addon status. + /// + public bool Created; + /// + /// Ignore expiration date for identity tokens. + /// + public bool? IgnoreExpirationDate; + /// + /// Require secure authentication only for this app. + /// + public bool? RequireSecureAuthentication; + } + + [Serializable] + public class GetFacebookInstantGamesRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetFacebookInstantGamesResponse : PlayFabResultCommon + { + /// + /// Facebook App ID obtained after setting up your app in Facebook Instant Games. + /// + public string AppID; + /// + /// Addon status. + /// + public bool Created; + } + + [Serializable] + public class GetFacebookRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetFacebookResponse : PlayFabResultCommon + { + /// + /// Facebook App ID obtained after setting up your app in Facebook. + /// + public string AppID; + /// + /// Addon status. + /// + public bool Created; + /// + /// Email address for purchase dispute notifications. + /// + public string NotificationEmail; + } + + [Serializable] + public class GetGoogleRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetGoogleResponse : PlayFabResultCommon + { + /// + /// Google App Package ID obtained after setting up your app in the Google Play developer portal. Required if using Google + /// receipt validation. + /// + public string AppPackageID; + /// + /// Addon status. + /// + public bool Created; + /// + /// Google OAuth Client ID obtained through the Google Developer Console by creating a new set of "OAuth Client ID". + /// Required if using Google Authentication. + /// + public string OAuthClientID; + /// + /// Authorized Redirect Uri obtained through the Google Developer Console. This currently defaults to + /// https://oauth.playfab.com/oauth2/google. If you are authenticating players via browser, please update this to your own + /// domain. + /// + public string OauthCustomRedirectUri; + } + + [Serializable] + public class GetKongregateRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetKongregateResponse : PlayFabResultCommon + { + /// + /// Addon status. + /// + public bool Created; + } + + [Serializable] + public class GetNintendoRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetNintendoResponse : PlayFabResultCommon + { + /// + /// Nintendo Switch Application ID, without the "0x" prefix. + /// + public string ApplicationID; + /// + /// Addon status. + /// + public bool Created; + /// + /// List of Nintendo Environments, currently supporting up to 4. + /// + public List Environments; + } + + [Serializable] + public class GetPSNRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetPSNResponse : PlayFabResultCommon + { + /// + /// Client ID obtained after setting up your game with Sony. This one is associated with the existing PS4 marketplace. + /// + public string ClientID; + /// + /// Addon status. + /// + public bool Created; + /// + /// Client ID obtained after setting up your game with Sony. This one is associated with the modern marketplace, which + /// includes PS5, cross-generation for PS4, and unified entitlements. + /// + public string NextGenClientID; + } + + [Serializable] + public class GetSteamRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetSteamResponse : PlayFabResultCommon + { + /// + /// Application ID obtained after setting up your game in Valve's developer portal. + /// + public string ApplicationId; + /// + /// Addon status. + /// + public bool Created; + /// + /// Enforce usage of AzurePlayFab identity in user authentication tickets. + /// + public bool? EnforceServiceSpecificTickets; + /// + /// Use Steam Payments sandbox endpoint for test transactions. + /// + public bool? UseSandbox; + } + + [Serializable] + public class GetTwitchRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetTwitchResponse : PlayFabResultCommon + { + /// + /// Client ID obtained after creating your Twitch developer account. + /// + public string ClientID; + /// + /// Addon status. + /// + public bool Created; + } + + [Serializable] + public class NintendoEnvironment : PlayFabBaseModel + { + /// + /// Client ID for the Nintendo Environment. + /// + public string ClientID; + /// + /// Client Secret for the Nintendo Environment. + /// + public string ClientSecret; + /// + /// ID for the Nintendo Environment. + /// + public string ID; + } +} +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs.meta b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs.meta new file mode 100644 index 000000000..573052f25 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabAddonModels.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87ffcc7751ee8d54a9effc1467d73c87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs new file mode 100644 index 000000000..544f4f350 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs @@ -0,0 +1,64 @@ +#if !DISABLE_PLAYFABENTITY_API +using PlayFab.AddonModels; + +namespace PlayFab.Events +{ + public partial class PlayFabEvents + { + public event PlayFabRequestEvent OnAddonCreateOrUpdateAppleRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateAppleResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdateFacebookRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateFacebookResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdateFacebookInstantGamesRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateFacebookInstantGamesResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdateGoogleRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateGoogleResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdateKongregateRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateKongregateResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdateNintendoRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateNintendoResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdatePSNRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdatePSNResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdateSteamRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateSteamResultEvent; + public event PlayFabRequestEvent OnAddonCreateOrUpdateTwitchRequestEvent; + public event PlayFabResultEvent OnAddonCreateOrUpdateTwitchResultEvent; + public event PlayFabRequestEvent OnAddonDeleteAppleRequestEvent; + public event PlayFabResultEvent OnAddonDeleteAppleResultEvent; + public event PlayFabRequestEvent OnAddonDeleteFacebookRequestEvent; + public event PlayFabResultEvent OnAddonDeleteFacebookResultEvent; + public event PlayFabRequestEvent OnAddonDeleteFacebookInstantGamesRequestEvent; + public event PlayFabResultEvent OnAddonDeleteFacebookInstantGamesResultEvent; + public event PlayFabRequestEvent OnAddonDeleteGoogleRequestEvent; + public event PlayFabResultEvent OnAddonDeleteGoogleResultEvent; + public event PlayFabRequestEvent OnAddonDeleteKongregateRequestEvent; + public event PlayFabResultEvent OnAddonDeleteKongregateResultEvent; + public event PlayFabRequestEvent OnAddonDeleteNintendoRequestEvent; + public event PlayFabResultEvent OnAddonDeleteNintendoResultEvent; + public event PlayFabRequestEvent OnAddonDeletePSNRequestEvent; + public event PlayFabResultEvent OnAddonDeletePSNResultEvent; + public event PlayFabRequestEvent OnAddonDeleteSteamRequestEvent; + public event PlayFabResultEvent OnAddonDeleteSteamResultEvent; + public event PlayFabRequestEvent OnAddonDeleteTwitchRequestEvent; + public event PlayFabResultEvent OnAddonDeleteTwitchResultEvent; + public event PlayFabRequestEvent OnAddonGetAppleRequestEvent; + public event PlayFabResultEvent OnAddonGetAppleResultEvent; + public event PlayFabRequestEvent OnAddonGetFacebookRequestEvent; + public event PlayFabResultEvent OnAddonGetFacebookResultEvent; + public event PlayFabRequestEvent OnAddonGetFacebookInstantGamesRequestEvent; + public event PlayFabResultEvent OnAddonGetFacebookInstantGamesResultEvent; + public event PlayFabRequestEvent OnAddonGetGoogleRequestEvent; + public event PlayFabResultEvent OnAddonGetGoogleResultEvent; + public event PlayFabRequestEvent OnAddonGetKongregateRequestEvent; + public event PlayFabResultEvent OnAddonGetKongregateResultEvent; + public event PlayFabRequestEvent OnAddonGetNintendoRequestEvent; + public event PlayFabResultEvent OnAddonGetNintendoResultEvent; + public event PlayFabRequestEvent OnAddonGetPSNRequestEvent; + public event PlayFabResultEvent OnAddonGetPSNResultEvent; + public event PlayFabRequestEvent OnAddonGetSteamRequestEvent; + public event PlayFabResultEvent OnAddonGetSteamResultEvent; + public event PlayFabRequestEvent OnAddonGetTwitchRequestEvent; + public event PlayFabResultEvent OnAddonGetTwitchResultEvent; + } +} +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs.meta b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs.meta new file mode 100644 index 000000000..9673c4a7e --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Addon/PlayFabEvents.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d196246361876214999b16fe616a0f32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminAPI.cs b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminAPI.cs index 1ce12edaf..3d2d5a3da 100644 --- a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminAPI.cs @@ -77,7 +77,8 @@ namespace PlayFab } /// - /// Increments the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the specified virtual currency by the stated amount /// public static void AddUserVirtualCurrency(AddUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -90,8 +91,9 @@ namespace PlayFab } /// - /// Adds one or more virtual currencies to the set defined for the title. Virtual Currencies have a maximum value of - /// 2,147,483,647 when granted to a player. Any value over that will be discarded. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds one or more virtual currencies to the set defined for the title. Virtual Currencies have a maximum + /// value of 2,147,483,647 when granted to a player. Any value over that will be discarded. /// public static void AddVirtualCurrencyTypes(AddVirtualCurrencyTypesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -117,7 +119,8 @@ namespace PlayFab } /// - /// Checks the global count for the limited edition item. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Checks the global count for the limited edition item. /// public static void CheckLimitedEditionItemAvailability(CheckLimitedEditionItemAvailabilityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -249,6 +252,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Admin/DeleteMasterPlayerAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Deletes PlayStream and telemetry event data associated with the master player account from PlayFab storage + /// + public static void DeleteMasterPlayerEventData(DeleteMasterPlayerEventDataRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Admin/DeleteMasterPlayerEventData", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Deletes a player's subscription /// @@ -316,7 +332,8 @@ namespace PlayFab } /// - /// Deletes an existing virtual item store + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Deletes an existing virtual item store /// public static void DeleteStore(DeleteStoreRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -423,7 +440,8 @@ namespace PlayFab } /// - /// Retrieves the specified version of the title's catalog of virtual goods, including all defined properties + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified version of the title's catalog of virtual goods, including all defined properties /// public static void GetCatalogItems(GetCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -516,34 +534,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Admin/GetDataReport", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } - /// - /// Retrieves the details for a specific completed session, including links to standard out and standard error logs - /// - [Obsolete("Use 'MultiplayerServer/GetMultiplayerSessionLogsBySessionId' instead", false)] - public static void GetMatchmakerGameInfo(GetMatchmakerGameInfoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Admin/GetMatchmakerGameInfo", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Retrieves the details of defined game modes for the specified game server executable - /// - [Obsolete("No longer available", false)] - public static void GetMatchmakerGameModes(GetMatchmakerGameModesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Admin/GetMatchmakerGameModes", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - /// /// Get the list of titles that the player has played /// @@ -693,7 +683,8 @@ namespace PlayFab } /// - /// Retrieves the random drop table configuration for the title + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the random drop table configuration for the title /// public static void GetRandomResultTables(GetRandomResultTablesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -735,7 +726,8 @@ namespace PlayFab } /// - /// Retrieves the set of items defined for the specified store, including all prices defined + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the set of items defined for the specified store, including all prices defined /// public static void GetStoreItems(GetStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -852,7 +844,8 @@ namespace PlayFab } /// - /// Retrieves the specified user's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified user's current inventory of virtual goods /// public static void GetUserInventory(GetUserInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -917,7 +910,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified user inventories + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified user inventories /// public static void GrantItemsToUsers(GrantItemsToUsersRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -930,7 +924,8 @@ namespace PlayFab } /// - /// Increases the global count for the given scarce resource. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increases the global count for the given scarce resource. /// public static void IncrementLimitedEditionItemAvailability(IncrementLimitedEditionItemAvailabilityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -969,7 +964,8 @@ namespace PlayFab } /// - /// Retuns the list of all defined virtual currencies for the title + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retuns the list of all defined virtual currencies for the title /// public static void ListVirtualCurrencyTypes(ListVirtualCurrencyTypesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -982,21 +978,8 @@ namespace PlayFab } /// - /// Updates the build details for the specified game server executable - /// - [Obsolete("No longer available", false)] - public static void ModifyServerBuild(ModifyServerBuildRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Admin/ModifyServerBuild", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Attempts to process an order refund through the original real money payment provider. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Attempts to process an order refund through the original real money payment provider. /// public static void RefundPurchase(RefundPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1022,7 +1005,8 @@ namespace PlayFab } /// - /// Removes one or more virtual currencies from the set defined for the title. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Removes one or more virtual currencies from the set defined for the title. /// public static void RemoveVirtualCurrencyTypes(RemoveVirtualCurrencyTypesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1074,7 +1058,8 @@ namespace PlayFab } /// - /// Attempts to resolve a dispute with the original order's payment provider. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Attempts to resolve a dispute with the original order's payment provider. /// public static void ResolvePurchaseDispute(ResolvePurchaseDisputeRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1113,7 +1098,8 @@ namespace PlayFab } /// - /// Revokes access to an item in a user's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access to an item in a user's inventory /// public static void RevokeInventoryItem(RevokeInventoryItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1126,7 +1112,8 @@ namespace PlayFab } /// - /// Revokes access for up to 25 items across multiple users and characters. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access for up to 25 items across multiple users and characters. /// public static void RevokeInventoryItems(RevokeInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1167,7 +1154,8 @@ namespace PlayFab } /// - /// Creates the catalog configuration of all virtual goods for the specified catalog version + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Creates the catalog configuration of all virtual goods for the specified catalog version /// public static void SetCatalogItems(UpdateCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1232,7 +1220,8 @@ namespace PlayFab } /// - /// Sets all the items in one virtual store + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Sets all the items in one virtual store /// public static void SetStoreItems(UpdateStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1303,7 +1292,8 @@ namespace PlayFab } /// - /// Decrements the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the specified virtual currency by the stated amount /// public static void SubtractUserVirtualCurrency(SubtractUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1329,7 +1319,8 @@ namespace PlayFab } /// - /// Updates the catalog configuration for virtual goods in the specified catalog version + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates the catalog configuration for virtual goods in the specified catalog version /// public static void UpdateCatalogItems(UpdateCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1409,7 +1400,8 @@ namespace PlayFab } /// - /// Updates the random drop table configuration for the title + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates the random drop table configuration for the title /// public static void UpdateRandomResultTables(UpdateRandomResultTablesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1435,7 +1427,8 @@ namespace PlayFab } /// - /// Updates an existing virtual item store with new or modified items + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates an existing virtual item store with new or modified items /// public static void UpdateStoreItems(UpdateStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { diff --git a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminInstanceAPI.cs index 835080938..c793da385 100644 --- a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminInstanceAPI.cs @@ -91,7 +91,8 @@ namespace PlayFab } /// - /// Increments the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the specified virtual currency by the stated amount /// public void AddUserVirtualCurrency(AddUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -102,8 +103,9 @@ namespace PlayFab } /// - /// Adds one or more virtual currencies to the set defined for the title. Virtual Currencies have a maximum value of - /// 2,147,483,647 when granted to a player. Any value over that will be discarded. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds one or more virtual currencies to the set defined for the title. Virtual Currencies have a maximum + /// value of 2,147,483,647 when granted to a player. Any value over that will be discarded. /// public void AddVirtualCurrencyTypes(AddVirtualCurrencyTypesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -125,7 +127,8 @@ namespace PlayFab } /// - /// Checks the global count for the limited edition item. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Checks the global count for the limited edition item. /// public void CheckLimitedEditionItemAvailability(CheckLimitedEditionItemAvailabilityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -237,6 +240,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Admin/DeleteMasterPlayerAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Deletes PlayStream and telemetry event data associated with the master player account from PlayFab storage + /// + public void DeleteMasterPlayerEventData(DeleteMasterPlayerEventDataRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Admin/DeleteMasterPlayerEventData", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Deletes a player's subscription /// @@ -294,7 +308,8 @@ namespace PlayFab } /// - /// Deletes an existing virtual item store + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Deletes an existing virtual item store /// public void DeleteStore(DeleteStoreRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -385,7 +400,8 @@ namespace PlayFab } /// - /// Retrieves the specified version of the title's catalog of virtual goods, including all defined properties + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified version of the title's catalog of virtual goods, including all defined properties /// public void GetCatalogItems(GetCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -464,30 +480,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Admin/GetDataReport", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } - /// - /// Retrieves the details for a specific completed session, including links to standard out and standard error logs - /// - [Obsolete("Use 'MultiplayerServer/GetMultiplayerSessionLogsBySessionId' instead", false)] - public void GetMatchmakerGameInfo(GetMatchmakerGameInfoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Admin/GetMatchmakerGameInfo", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Retrieves the details of defined game modes for the specified game server executable - /// - [Obsolete("No longer available", false)] - public void GetMatchmakerGameModes(GetMatchmakerGameModesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Admin/GetMatchmakerGameModes", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - /// /// Get the list of titles that the player has played /// @@ -615,7 +607,8 @@ namespace PlayFab } /// - /// Retrieves the random drop table configuration for the title + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the random drop table configuration for the title /// public void GetRandomResultTables(GetRandomResultTablesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -651,7 +644,8 @@ namespace PlayFab } /// - /// Retrieves the set of items defined for the specified store, including all prices defined + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the set of items defined for the specified store, including all prices defined /// public void GetStoreItems(GetStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -750,7 +744,8 @@ namespace PlayFab } /// - /// Retrieves the specified user's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified user's current inventory of virtual goods /// public void GetUserInventory(GetUserInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -805,7 +800,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified user inventories + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified user inventories /// public void GrantItemsToUsers(GrantItemsToUsersRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -816,7 +812,8 @@ namespace PlayFab } /// - /// Increases the global count for the given scarce resource. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increases the global count for the given scarce resource. /// public void IncrementLimitedEditionItemAvailability(IncrementLimitedEditionItemAvailabilityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -849,7 +846,8 @@ namespace PlayFab } /// - /// Retuns the list of all defined virtual currencies for the title + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retuns the list of all defined virtual currencies for the title /// public void ListVirtualCurrencyTypes(ListVirtualCurrencyTypesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -860,19 +858,8 @@ namespace PlayFab } /// - /// Updates the build details for the specified game server executable - /// - [Obsolete("No longer available", false)] - public void ModifyServerBuild(ModifyServerBuildRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Admin/ModifyServerBuild", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Attempts to process an order refund through the original real money payment provider. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Attempts to process an order refund through the original real money payment provider. /// public void RefundPurchase(RefundPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -894,7 +881,8 @@ namespace PlayFab } /// - /// Removes one or more virtual currencies from the set defined for the title. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Removes one or more virtual currencies from the set defined for the title. /// public void RemoveVirtualCurrencyTypes(RemoveVirtualCurrencyTypesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -938,7 +926,8 @@ namespace PlayFab } /// - /// Attempts to resolve a dispute with the original order's payment provider. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Attempts to resolve a dispute with the original order's payment provider. /// public void ResolvePurchaseDispute(ResolvePurchaseDisputeRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -971,7 +960,8 @@ namespace PlayFab } /// - /// Revokes access to an item in a user's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access to an item in a user's inventory /// public void RevokeInventoryItem(RevokeInventoryItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -982,7 +972,8 @@ namespace PlayFab } /// - /// Revokes access for up to 25 items across multiple users and characters. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access for up to 25 items across multiple users and characters. /// public void RevokeInventoryItems(RevokeInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1017,7 +1008,8 @@ namespace PlayFab } /// - /// Creates the catalog configuration of all virtual goods for the specified catalog version + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Creates the catalog configuration of all virtual goods for the specified catalog version /// public void SetCatalogItems(UpdateCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1072,7 +1064,8 @@ namespace PlayFab } /// - /// Sets all the items in one virtual store + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Sets all the items in one virtual store /// public void SetStoreItems(UpdateStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1133,7 +1126,8 @@ namespace PlayFab } /// - /// Decrements the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the specified virtual currency by the stated amount /// public void SubtractUserVirtualCurrency(SubtractUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1155,7 +1149,8 @@ namespace PlayFab } /// - /// Updates the catalog configuration for virtual goods in the specified catalog version + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates the catalog configuration for virtual goods in the specified catalog version /// public void UpdateCatalogItems(UpdateCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1223,7 +1218,8 @@ namespace PlayFab } /// - /// Updates the random drop table configuration for the title + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates the random drop table configuration for the title /// public void UpdateRandomResultTables(UpdateRandomResultTablesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1245,7 +1241,8 @@ namespace PlayFab } /// - /// Updates an existing virtual item store with new or modified items + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates an existing virtual item store with new or modified items /// public void UpdateStoreItems(UpdateStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { diff --git a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminModels.cs b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminModels.cs index 1d4d8f604..4ec83c70d 100644 --- a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabAdminModels.cs @@ -21,13 +21,69 @@ namespace PlayFab.AdminModels public string TaskInstanceId; } + /// + /// The work to be performed on each entity which can only be of one type. + /// + [Serializable] + public class Action : PlayFabBaseModel + { + /// + /// Action content to add inventory item v2 + /// + public AddInventoryItemV2Content AddInventoryItemV2Content; + /// + /// Action content to ban player + /// + public BanPlayerContent BanPlayerContent; + /// + /// Action content to delete inventory item v2 + /// + public DeleteInventoryItemV2Content DeleteInventoryItemV2Content; + /// + /// Action content to delete player + /// + public DeletePlayerContent DeletePlayerContent; + /// + /// Action content to execute cloud script + /// + public ExecuteCloudScriptContent ExecuteCloudScriptContent; + /// + /// Action content to execute azure function + /// + public ExecuteFunctionContent ExecuteFunctionContent; + /// + /// Action content to grant item + /// + public GrantItemContent GrantItemContent; + /// + /// Action content to grant virtual currency + /// + public GrantVirtualCurrencyContent GrantVirtualCurrencyContent; + /// + /// Action content to increment player statistic + /// + public IncrementPlayerStatisticContent IncrementPlayerStatisticContent; + /// + /// Action content to send push notification + /// + public PushNotificationContent PushNotificationContent; + /// + /// Action content to send email + /// + public SendEmailContent SendEmailContent; + /// + /// Action content to subtract inventory item v2 + /// + public SubtractInventoryItemV2Content SubtractInventoryItemV2Content; + } + [Serializable] public class ActionsOnPlayersInSegmentTaskParameter : PlayFabBaseModel { /// - /// ID of the action to perform on each player in segment. + /// List of actions to perform on each player in a segment. Each action object can contain only one action type. /// - public string ActionId; + public List Actions; /// /// ID of the segment to perform actions on. /// @@ -138,6 +194,56 @@ namespace PlayFab.AdminModels public SegmentFilterComparison? Comparison; } + [Serializable] + public class AddInventoryItemsV2SegmentAction : PlayFabBaseModel + { + /// + /// Amount of the item to be granted to a player + /// + public int? Amount; + /// + /// The collection id for where the item will be granted in the player inventory + /// + public string CollectionId; + /// + /// The duration in seconds of the subscription to be granted to a player + /// + public int? DurationInSeconds; + /// + /// The id of item to be granted to the player + /// + public string ItemId; + /// + /// The stack id for where the item will be granted in the player inventory + /// + public string StackId; + } + + [Serializable] + public class AddInventoryItemV2Content : PlayFabBaseModel + { + /// + /// Amount of the item to be granted to a player + /// + public int? Amount; + /// + /// The collection id for where the item will be granted in the player inventory + /// + public string CollectionId; + /// + /// The duration in seconds of the subscription to be granted to a player + /// + public int? DurationInSeconds; + /// + /// The id of item to be granted to the player + /// + public string ItemId; + /// + /// The stack id for where the item will be granted in the player inventory + /// + public string StackId; + } + [Serializable] public class AddLocalizedNewsRequest : PlayFabRequestCommon { @@ -314,6 +420,23 @@ namespace PlayFab.AdminModels /// The reason why this ban was applied. /// public string Reason; + /// + /// The family type of the suer that is included in the ban. + /// + public string UserFamilyType; + } + + [Serializable] + public class BanPlayerContent : PlayFabBaseModel + { + /// + /// Duration(in hours) to ban a player. If not provided, the player will be banned permanently. + /// + public int? BanDurationHours; + /// + /// Reason to ban a player + /// + public string BanReason; } [Serializable] @@ -351,6 +474,10 @@ namespace PlayFab.AdminModels /// The reason for this ban. Maximum 140 characters. /// public string Reason; + /// + /// The family type of the user that should be included in the ban if applicable. May affect multiple players. + /// + public UserFamilyType? UserFamilyType; } /// @@ -737,7 +864,8 @@ namespace PlayFab.AdminModels EU, NA, OC, - SA + SA, + Unknown } public enum CountryCode @@ -990,7 +1118,8 @@ namespace PlayFab.AdminModels EH, YE, ZM, - ZW + ZW, + Unknown } /// @@ -1122,6 +1251,10 @@ namespace PlayFab.AdminModels /// Manually specified information for an OpenID Connect issuer. /// public OpenIdIssuerInformation IssuerInformation; + /// + /// Override the issuer name for user indexing and lookup. + /// + public string IssuerOverride; } /// @@ -1399,16 +1532,50 @@ namespace PlayFab.AdminModels public string Key; } + [Serializable] + public class DeleteInventoryItemsV2SegmentAction : PlayFabBaseModel + { + /// + /// The collection id for where the item will be removed from the player inventory + /// + public string CollectionId; + /// + /// The id of item to be removed from the player + /// + public string ItemId; + /// + /// The stack id for where the item will be removed from the player inventory + /// + public string StackId; + } + + [Serializable] + public class DeleteInventoryItemV2Content : PlayFabBaseModel + { + /// + /// The collection id for where the item will be removed from the player inventory + /// + public string CollectionId; + /// + /// The id of item to be removed from the player + /// + public string ItemId; + /// + /// The stack id for where the item will be removed from the player inventory + /// + public string StackId; + } + /// /// Deletes all data associated with the master player account, including data from all titles the player has played, such /// as statistics, custom data, inventory, purchases, virtual currency balances, characters, group memberships, publisher - /// data, credential data, account linkages, friends list and PlayStream event history. Removes the player from all - /// leaderboards and player search indexes. Note, this API queues the player for deletion and returns a receipt immediately. - /// Record the receipt ID for future reference. It may take some time before all player data is fully deleted. Upon - /// completion of the deletion, an email will be sent to the notification email address configured for the title confirming - /// the deletion. Until the player data is fully deleted, attempts to recreate the player with the same user account in the - /// same title will fail with the 'AccountDeleted' error. It is highly recommended to know the impact of the deletion by - /// calling GetPlayedTitleList, before calling this API. + /// data, credential data, account linkages, friends list, PlayStream event data, and telemetry event data. Removes the + /// player from all leaderboards and player search indexes. Note, this API queues the player for deletion and returns a + /// receipt immediately. Record the receipt ID for future reference. It may take some time before all player data is fully + /// deleted. Upon completion of the deletion, an email will be sent to the notification email address configured for the + /// title confirming the deletion. Until the player data is fully deleted, attempts to recreate the player with the same + /// user account in the same title will fail with the 'AccountDeleted' error. It is highly recommended to know the impact of + /// the deletion by calling GetPlayedTitleList, before calling this API. /// [Serializable] public class DeleteMasterPlayerAccountRequest : PlayFabRequestCommon @@ -1437,6 +1604,24 @@ namespace PlayFab.AdminModels public List TitleIds; } + /// + /// Deletes any PlayStream or telemetry event associated with the player from PlayFab. Note, this API queues the data for + /// asynchronous deletion. It may take some time before the data is deleted. + /// + [Serializable] + public class DeleteMasterPlayerEventDataRequest : PlayFabRequestCommon + { + /// + /// Unique PlayFab assigned ID of the user on whom the operation will be performed. + /// + public string PlayFabId; + } + + [Serializable] + public class DeleteMasterPlayerEventDataResult : PlayFabResultCommon + { + } + /// /// This API lets developers delete a membership subscription. /// @@ -1475,6 +1660,11 @@ namespace PlayFab.AdminModels public string ConnectionId; } + [Serializable] + public class DeletePlayerContent : PlayFabBaseModel + { + } + /// /// Deletes all data associated with the player, including statistics, custom data, inventory, purchases, virtual currency /// balances, characters and shared group memberships. Removes the player from all leaderboards and player search indexes. @@ -1690,6 +1880,23 @@ namespace PlayFab.AdminModels public bool GenerateFunctionExecutedEvents; } + [Serializable] + public class ExecuteCloudScriptContent : PlayFabBaseModel + { + /// + /// Arguments(JSON) to be passed into the cloudscript method + /// + public string CloudScriptMethodArguments; + /// + /// Cloudscript method name + /// + public string CloudScriptMethodName; + /// + /// Publish cloudscript results as playstream event + /// + public bool PublishResultsToPlayStream; + } + [Serializable] public class ExecuteCloudScriptResult : PlayFabBaseModel { @@ -1762,13 +1969,30 @@ namespace PlayFab.AdminModels public string FunctionParameterJson; } + [Serializable] + public class ExecuteFunctionContent : PlayFabBaseModel + { + /// + /// Arguments(JSON) to be passed into the cloudscript azure function + /// + public string CloudScriptFunctionArguments; + /// + /// Cloudscript azure function name + /// + public string CloudScriptFunctionName; + /// + /// Publish results from executing the azure function as playstream event + /// + public bool PublishResultsToPlayStream; + } + /// /// Exports all data associated with the master player account, including data from all titles the player has played, such /// as statistics, custom data, inventory, purchases, virtual currency balances, characters, group memberships, publisher - /// data, credential data, account linkages, friends list and PlayStream event history. Note, this API queues the player for - /// export and returns a receipt immediately. Record the receipt ID for future reference. It may take some time before the - /// export is available for download. Upon completion of the export, an email containing the URL to download the export dump - /// will be sent to the notification email address configured for the title. + /// data, credential data, account linkages, friends list, PlayStream event data, and telemetry event data. Note, this API + /// queues the player for export and returns a receipt immediately. Record the receipt ID for future reference. It may take + /// some time before the export is available for download. Upon completion of the export, an email containing the URL to + /// download the export dump will be sent to the notification email address configured for the title. /// [Serializable] public class ExportMasterPlayerDataRequest : PlayFabRequestCommon @@ -1840,36 +2064,6 @@ namespace PlayFab.AdminModels public double DurationInMinutes; } - public enum GameBuildStatus - { - Available, - Validating, - InvalidBuildPackage, - Processing, - FailedToProcess - } - - [Serializable] - public class GameModeInfo : PlayFabBaseModel - { - /// - /// specific game mode type - /// - public string Gamemode; - /// - /// maximum user count a specific Game Server Instance can support - /// - public uint MaxPlayerCount; - /// - /// minimum user count required for this Game Server Instance to continue (usually 1) - /// - public uint MinPlayerCount; - /// - /// whether to start as an open session, meaning that players can matchmake into it (defaults to true) - /// - public bool? StartOpen; - } - public enum GenericErrorCodes { Success, @@ -2421,6 +2615,42 @@ namespace PlayFab.AdminModels NamespaceMismatch, InvalidServiceConfiguration, InvalidNamespaceMismatch, + LeaderboardColumnLengthMismatch, + InvalidStatisticScore, + LeaderboardColumnsNotSpecified, + LeaderboardMaxSizeTooLarge, + InvalidAttributeStatisticsSpecified, + LeaderboardNotFound, + TokenSigningKeyNotFound, + LeaderboardNameConflict, + LinkedStatisticColumnMismatch, + NoLinkedStatisticToLeaderboard, + StatDefinitionAlreadyLinkedToLeaderboard, + LinkingStatsNotAllowedForEntityType, + LeaderboardCountLimitExceeded, + LeaderboardSizeLimitExceeded, + LeaderboardDefinitionModificationNotAllowedWhileLinked, + StatisticDefinitionModificationNotAllowedWhileLinked, + LeaderboardUpdateNotAllowedWhileLinked, + CloudScriptAzureFunctionsEventHubRequestError, + ExternalEntityNotAllowedForTier, + InvalidBaseTimeForInterval, + EntityTypeMismatchWithStatDefinition, + SpecifiedVersionLeaderboardNotFound, + LeaderboardColumnLengthMismatchWithStatDefinition, + DuplicateColumnNameFound, + LinkedStatisticColumnNotFound, + LinkedStatisticColumnRequired, + MultipleLinkedStatisticsNotAllowed, + DuplicateLinkedStatisticColumnNameFound, + AggregationTypeNotAllowedForMultiColumnStatistic, + MaxQueryableVersionsValueNotAllowedForTier, + StatisticDefinitionHasNullOrEmptyVersionConfiguration, + StatisticColumnLengthMismatch, + InvalidExternalEntityId, + UpdatingStatisticsUsingTransactionIdNotAvailableForFreeTier, + TransactionAlreadyApplied, + ReportDataNotRetrievedSuccessfully, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2464,6 +2694,7 @@ namespace PlayFab.AdminModels CatalogItemTypeInvalid, CatalogBadRequest, CatalogTooManyRequests, + InvalidCatalogItemConfiguration, ExportInvalidStatusUpdate, ExportInvalidPrefix, ExportBlobContainerDoesNotExist, @@ -2510,6 +2741,7 @@ namespace PlayFab.AdminModels MultiplayerServerBuildReferencedByMatchmakingQueue, MultiplayerServerBuildReferencedByBuildAlias, MultiplayerServerBuildAliasReferencedByMatchmakingQueue, + PartySerializationError, ExperimentationExperimentStopped, ExperimentationExperimentRunning, ExperimentationExperimentNotFound, @@ -2549,6 +2781,7 @@ namespace PlayFab.AdminModels AsyncExportNotInFlight, AsyncExportNotFound, AsyncExportRateLimitExceeded, + AnalyticsSegmentCountOverLimit, SnapshotNotFound, InventoryApiNotImplemented, LobbyDoesNotExist, @@ -2563,6 +2796,12 @@ namespace PlayFab.AdminModels LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyServerMismatch, + LobbyServerNotFound, + LobbyDifferentServerAlreadyJoined, + LobbyServerAlreadyJoined, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -2573,6 +2812,7 @@ namespace PlayFab.AdminModels TelemetryKeyInvalid, TelemetryKeyCountOverLimit, TelemetryKeyDeactivated, + TelemetryKeyLongInsightsRetentionNotAllowed, EventSinkConnectionInvalid, EventSinkConnectionUnauthorized, EventSinkRegionInvalid, @@ -2585,9 +2825,121 @@ namespace PlayFab.AdminModels EventSinkTenantNotFound, EventSinkAadNotFound, EventSinkDatabaseNotFound, + EventSinkTitleUnauthorized, + EventSinkInsufficientRoleAssignment, + EventSinkContainerNotFound, + EventSinkTenantIdInvalid, OperationCanceled, InvalidDisplayNameRandomSuffixLength, - AllowNonUniquePlayerDisplayNamesDisableNotAllowed + AllowNonUniquePlayerDisplayNamesDisableNotAllowed, + PartitionedEventInvalid, + PartitionedEventCountOverLimit, + ManageEventNamespaceInvalid, + ManageEventNameInvalid, + ManagedEventNotFound, + ManageEventsInvalidRatio, + ManagedEventInvalid, + PlayerCustomPropertiesPropertyNameTooLong, + PlayerCustomPropertiesPropertyNameIsInvalid, + PlayerCustomPropertiesStringPropertyValueTooLong, + PlayerCustomPropertiesValueIsInvalidType, + PlayerCustomPropertiesVersionMismatch, + PlayerCustomPropertiesPropertyCountTooHigh, + PlayerCustomPropertiesDuplicatePropertyName, + PlayerCustomPropertiesPropertyDoesNotExist, + AddonAlreadyExists, + AddonDoesntExist, + CopilotDisabled, + CopilotInvalidRequest, + TrueSkillUnauthorized, + TrueSkillInvalidTitleId, + TrueSkillInvalidScenarioId, + TrueSkillInvalidModelId, + TrueSkillInvalidModelName, + TrueSkillInvalidPlayerIds, + TrueSkillInvalidEntityKey, + TrueSkillInvalidConditionKey, + TrueSkillInvalidConditionValue, + TrueSkillInvalidConditionAffinityWeight, + TrueSkillInvalidEventName, + TrueSkillMatchResultCreated, + TrueSkillMatchResultAlreadySubmitted, + TrueSkillBadPlayerIdInMatchResult, + TrueSkillInvalidBotIdInMatchResult, + TrueSkillDuplicatePlayerInMatchResult, + TrueSkillNoPlayerInMatchResultTeam, + TrueSkillPlayersInMatchResultExceedingLimit, + TrueSkillInvalidPreMatchPartyInMatchResult, + TrueSkillInvalidTimestampInMatchResult, + TrueSkillStartTimeMissingInMatchResult, + TrueSkillEndTimeMissingInMatchResult, + TrueSkillInvalidPlayerSecondsPlayedInMatchResult, + TrueSkillNoTeamInMatchResult, + TrueSkillNotEnoughTeamsInMatchResult, + TrueSkillInvalidRanksInMatchResult, + TrueSkillNoWinnerInMatchResult, + TrueSkillMissingRequiredCondition, + TrueSkillMissingRequiredEvent, + TrueSkillUnknownEventName, + TrueSkillInvalidEventCount, + TrueSkillUnknownConditionKey, + TrueSkillUnknownConditionValue, + TrueSkillScenarioConfigDoesNotExist, + TrueSkillUnknownModelId, + TrueSkillNoModelInScenario, + TrueSkillNotSupportedForTitle, + TrueSkillModelIsNotActive, + TrueSkillUnauthorizedToQueryOtherPlayerSkills, + TrueSkillInvalidMaxIterations, + TrueSkillEndTimeBeforeStartTime, + TrueSkillInvalidJobId, + TrueSkillInvalidMetadataId, + TrueSkillMissingBuildVerison, + TrueSkillJobAlreadyExists, + TrueSkillJobNotFound, + TrueSkillOperationCanceled, + TrueSkillActiveModelLimitExceeded, + TrueSkillTotalModelLimitExceeded, + TrueSkillUnknownInitialModelId, + TrueSkillUnauthorizedForJob, + TrueSkillInvalidScenarioName, + TrueSkillConditionStateIsRequired, + TrueSkillEventStateIsRequired, + TrueSkillDuplicateEvent, + TrueSkillDuplicateCondition, + TrueSkillInvalidAnomalyThreshold, + TrueSkillConditionKeyLimitExceeded, + TrueSkillConditionValuePerKeyLimitExceeded, + TrueSkillInvalidTimestamp, + TrueSkillEventLimitExceeded, + TrueSkillInvalidPlayers, + TrueSkillTrueSkillPlayerNull, + TrueSkillInvalidPlayerId, + TrueSkillInvalidSquadSize, + TrueSkillConditionSetNotInModel, + TrueSkillModelStateInvalidForOperation, + TrueSkillScenarioContainsActiveModel, + GameSaveManifestNotFound, + GameSaveManifestVersionAlreadyExists, + GameSaveConflictUpdatingManifest, + GameSaveManifestUpdatesNotAllowed, + GameSaveFileAlreadyExists, + GameSaveManifestVersionNotFinalized, + GameSaveUnknownFileInManifest, + GameSaveFileExceededReportedSize, + GameSaveFileNotUploaded, + GameSaveBadRequest, + GameSaveOperationNotAllowed, + GameSaveDataStorageQuotaExceeded, + GameSaveNewerManifestExists, + StateShareForbidden, + StateShareTitleNotInFlight, + StateShareStateNotFound, + StateShareLinkNotFound, + StateShareStateRedemptionLimitExceeded, + StateShareStateRedemptionLimitNotUpdated, + StateShareCreatedStatesLimitExceeded, + StateShareIdMissingOrMalformed } [Serializable] @@ -2789,91 +3141,6 @@ namespace PlayFab.AdminModels public string DownloadUrl; } - [Serializable] - public class GetMatchmakerGameInfoRequest : PlayFabRequestCommon - { - /// - /// unique identifier of the lobby for which info is being requested - /// - public string LobbyId; - } - - [Serializable] - public class GetMatchmakerGameInfoResult : PlayFabResultCommon - { - /// - /// version identifier of the game server executable binary being run - /// - public string BuildVersion; - /// - /// time when Game Server Instance is currently scheduled to end - /// - public DateTime? EndTime; - /// - /// unique identifier of the lobby - /// - public string LobbyId; - /// - /// game mode for this Game Server Instance - /// - public string Mode; - /// - /// array of unique PlayFab identifiers for users currently connected to this Game Server Instance - /// - public List Players; - /// - /// region in which the Game Server Instance is running - /// - public Region? Region; - /// - /// IPV4 address of the server - /// - public string ServerIPV4Address; - /// - /// IPV6 address of the server - /// - public string ServerIPV6Address; - /// - /// communication port for this Game Server Instance - /// - public uint ServerPort; - /// - /// Public DNS name (if any) of the server - /// - public string ServerPublicDNSName; - /// - /// time when the Game Server Instance was created - /// - public DateTime StartTime; - /// - /// unique identifier of the Game Server Instance for this lobby - /// - public string TitleId; - } - - /// - /// These details are used by the PlayFab matchmaking service to determine if an existing Game Server Instance has room for - /// additional users, and by the PlayFab game server management service to determine when a new Game Server Host should be - /// created in order to prevent excess load on existing Hosts. - /// - [Serializable] - public class GetMatchmakerGameModesRequest : PlayFabRequestCommon - { - /// - /// previously uploaded build version for which game modes are being requested - /// - public string BuildVersion; - } - - [Serializable] - public class GetMatchmakerGameModesResult : PlayFabResultCommon - { - /// - /// array of game modes available for the specified build - /// - public List GameModes; - } - /// /// Useful for identifying titles of which the player's data will be deleted by DeleteMasterPlayer. /// @@ -3622,6 +3889,23 @@ namespace PlayFab.AdminModels public int? UsesIncrementedBy; } + [Serializable] + public class GrantItemContent : PlayFabBaseModel + { + /// + /// The catalog version of the item to be granted to the player + /// + public string CatalogVersion; + /// + /// The id of item to be granted to the player + /// + public string ItemId; + /// + /// Quantity of the item to be granted to a player + /// + public int ItemQuantity; + } + [Serializable] public class GrantItemSegmentAction : PlayFabBaseModel { @@ -3674,6 +3958,19 @@ namespace PlayFab.AdminModels public List ItemGrantResults; } + [Serializable] + public class GrantVirtualCurrencyContent : PlayFabBaseModel + { + /// + /// Amount of currency to be granted to a player + /// + public int CurrencyAmount; + /// + /// Code of the currency to be granted to a player + /// + public string CurrencyCode; + } + [Serializable] public class GrantVirtualCurrencySegmentAction : PlayFabBaseModel { @@ -3717,6 +4014,19 @@ namespace PlayFab.AdminModels { } + [Serializable] + public class IncrementPlayerStatisticContent : PlayFabBaseModel + { + /// + /// Amount(in whole number) to increase the player statistic by + /// + public int StatisticChangeBy; + /// + /// Name of the player statistic to be incremented + /// + public string StatisticName; + } + [Serializable] public class IncrementPlayerStatisticSegmentAction : PlayFabBaseModel { @@ -4032,7 +4342,9 @@ namespace PlayFab.AdminModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King } [Serializable] @@ -4111,95 +4423,6 @@ namespace PlayFab.AdminModels public List Subscriptions; } - [Serializable] - public class ModifyServerBuildRequest : PlayFabRequestCommon - { - /// - /// array of regions where this build can used, when it is active - /// - public List ActiveRegions; - /// - /// unique identifier of the previously uploaded build executable to be updated - /// - public string BuildId; - /// - /// appended to the end of the command line when starting game servers - /// - public string CommandLineTemplate; - /// - /// developer comment(s) for this build - /// - public string Comment; - /// - /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). - /// - public Dictionary CustomTags; - /// - /// path to the game server executable. Defaults to gameserver.exe - /// - public string ExecutablePath; - /// - /// maximum number of game server instances that can run on a single host machine - /// - public int MaxGamesPerHost; - /// - /// minimum capacity of additional game server instances that can be started before the autoscaling service starts new host - /// machines (given the number of current running host machines and game server instances) - /// - public int MinFreeGameSlots; - /// - /// new timestamp - /// - public DateTime? Timestamp; - } - - [Serializable] - public class ModifyServerBuildResult : PlayFabResultCommon - { - /// - /// array of regions where this build can used, when it is active - /// - public List ActiveRegions; - /// - /// unique identifier for this build executable - /// - public string BuildId; - /// - /// appended to the end of the command line when starting game servers - /// - public string CommandLineTemplate; - /// - /// developer comment(s) for this build - /// - public string Comment; - /// - /// path to the game server executable. Defaults to gameserver.exe - /// - public string ExecutablePath; - /// - /// maximum number of game server instances that can run on a single host machine - /// - public int MaxGamesPerHost; - /// - /// minimum capacity of additional game server instances that can be started before the autoscaling service starts new host - /// machines (given the number of current running host machines and game server instances) - /// - public int MinFreeGameSlots; - /// - /// the current status of the build validation and processing steps - /// - public GameBuildStatus? Status; - /// - /// time this build was last modified (or uploaded, if this build has never been modified) - /// - public DateTime Timestamp; - /// - /// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a - /// title has been selected. - /// - public string TitleId; - } - [Serializable] public class ModifyUserVirtualCurrencyResult : PlayFabResultCommon { @@ -4259,9 +4482,17 @@ namespace PlayFab.AdminModels /// public bool DiscoverConfiguration; /// + /// Ignore 'nonce' claim in identity tokens. + /// + public bool? IgnoreNonce; + /// /// Information for an OpenID Connect provider. /// public OpenIdIssuerInformation IssuerInformation; + /// + /// Override the issuer name for user indexing and lookup. + /// + public string IssuerOverride; } [Serializable] @@ -4733,6 +4964,23 @@ namespace PlayFab.AdminModels public uint Version; } + [Serializable] + public class PushNotificationContent : PlayFabBaseModel + { + /// + /// Text of message to send. + /// + public string Message; + /// + /// Id of the push notification template. + /// + public string PushNotificationTemplateId; + /// + /// Subject of message to send (may not be displayed in all platforms) + /// + public string Subject; + } + public enum PushNotificationPlatform { ApplePushNotificationService, @@ -4848,17 +5096,6 @@ namespace PlayFab.AdminModels public string PurchaseStatus; } - public enum Region - { - USCentral, - USEast, - EUWest, - Singapore, - Japan, - Brazil, - Australia - } - /// /// This API will trigger a player_tag_removed event and remove a tag with the given TagName and PlayFabID from the /// corresponding player profile. TagName can be used for segmentation and it is limited to 256 characters @@ -5791,7 +6028,8 @@ namespace PlayFab.AdminModels FacebookInstantGames, OpenIdConnect, Apple, - NintendoSwitchAccount + NintendoSwitchAccount, + GooglePlayGames } [Serializable] @@ -5845,11 +6083,19 @@ namespace PlayFab.AdminModels [Serializable] public class SegmentTrigger : PlayFabBaseModel { + /// + /// Add inventory item v2 segment trigger action. + /// + public AddInventoryItemsV2SegmentAction AddInventoryItemsV2Action; /// /// Ban player segment trigger action. /// public BanPlayerSegmentAction BanPlayerAction; /// + /// Delete inventory item v2 segment trigger action. + /// + public DeleteInventoryItemsV2SegmentAction DeleteInventoryItemsV2Action; + /// /// Delete player segment trigger action. /// public DeletePlayerSegmentAction DeletePlayerAction; @@ -5885,6 +6131,10 @@ namespace PlayFab.AdminModels /// Push notification segment trigger action. /// public PushNotificationSegmentAction PushNotificationAction; + /// + /// Subtract inventory item v2 segment trigger action. + /// + public SubtractInventoryItemsV2SegmentAction SubtractInventoryItemsV2Action; } /// @@ -5914,6 +6164,15 @@ namespace PlayFab.AdminModels { } + [Serializable] + public class SendEmailContent : PlayFabBaseModel + { + /// + /// The email template id of the email template to send. + /// + public string EmailTemplateId; + } + /// /// This API lets developers set overrides for membership expirations, independent of any subscriptions setting it. /// @@ -6303,6 +6562,56 @@ namespace PlayFab.AdminModels PaymentPending } + [Serializable] + public class SubtractInventoryItemsV2SegmentAction : PlayFabBaseModel + { + /// + /// Amount of the item to removed from the player + /// + public int? Amount; + /// + /// The collection id for where the item will be removed from the player inventory + /// + public string CollectionId; + /// + /// The duration in seconds to be removed from the subscription in the players inventory + /// + public int? DurationInSeconds; + /// + /// The id of item to be removed from the player + /// + public string ItemId; + /// + /// The stack id for where the item will be removed from the player inventory + /// + public string StackId; + } + + [Serializable] + public class SubtractInventoryItemV2Content : PlayFabBaseModel + { + /// + /// Amount of the item to removed from the player + /// + public int? Amount; + /// + /// The collection id for where the item will be removed from the player inventory + /// + public string CollectionId; + /// + /// The duration in seconds to be removed from the subscription in the players inventory + /// + public int? DurationInSeconds; + /// + /// The id of item to be removed from the player + /// + public string ItemId; + /// + /// The stack id for where the item will be removed from the player inventory + /// + public string StackId; + } + [Serializable] public class SubtractUserVirtualCurrencyRequest : PlayFabRequestCommon { @@ -6467,6 +6776,10 @@ namespace PlayFab.AdminModels /// The updated reason for the ban to be updated. Maximum 140 characters. Null for no change. /// public string Reason; + /// + /// The updated family type of the user that should be included in the ban. Null for no change. + /// + public UserFamilyType? UserFamilyType; } /// @@ -6576,6 +6889,10 @@ namespace PlayFab.AdminModels /// public string ConnectionId; /// + /// Ignore 'nonce' claim in identity tokens. + /// + public bool? IgnoreNonce; + /// /// The issuer URL or discovery document URL to read issuer information from /// public string IssuerDiscoveryUrl; @@ -6583,6 +6900,10 @@ namespace PlayFab.AdminModels /// Manually specified information for an OpenID Connect issuer. /// public OpenIdIssuerInformation IssuerInformation; + /// + /// Override the issuer name for user indexing and lookup. + /// + public string IssuerOverride; } /// @@ -7007,6 +7328,10 @@ namespace PlayFab.AdminModels /// public UserPsnInfo PsnInfo; /// + /// Server Custom ID information, if a server custom ID has been assigned + /// + public UserServerCustomIdInfo ServerCustomIdInfo; + /// /// User Steam information, if a Steam account has been linked /// public UserSteamInfo SteamInfo; @@ -7105,6 +7430,13 @@ namespace PlayFab.AdminModels public string FacebookInstantGamesId; } + public enum UserFamilyType + { + None, + Xbox, + Steam + } + [Serializable] public class UserGameCenterInfo : PlayFabBaseModel { @@ -7238,7 +7570,9 @@ namespace PlayFab.AdminModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King } [Serializable] @@ -7272,6 +7606,15 @@ namespace PlayFab.AdminModels public string PsnOnlineId; } + [Serializable] + public class UserServerCustomIdInfo : PlayFabBaseModel + { + /// + /// Custom ID + /// + public string CustomId; + } + [Serializable] public class UserSteamInfo : PlayFabBaseModel { diff --git a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabEvents.cs index f701a6367..15f451282 100644 --- a/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Admin/PlayFabEvents.cs @@ -39,6 +39,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnAdminDeleteContentResultEvent; public event PlayFabRequestEvent OnAdminDeleteMasterPlayerAccountRequestEvent; public event PlayFabResultEvent OnAdminDeleteMasterPlayerAccountResultEvent; + public event PlayFabRequestEvent OnAdminDeleteMasterPlayerEventDataRequestEvent; + public event PlayFabResultEvent OnAdminDeleteMasterPlayerEventDataResultEvent; public event PlayFabRequestEvent OnAdminDeleteMembershipSubscriptionRequestEvent; public event PlayFabResultEvent OnAdminDeleteMembershipSubscriptionResultEvent; public event PlayFabRequestEvent OnAdminDeleteOpenIdConnectionRequestEvent; @@ -79,10 +81,6 @@ namespace PlayFab.Events public event PlayFabResultEvent OnAdminGetContentUploadUrlResultEvent; public event PlayFabRequestEvent OnAdminGetDataReportRequestEvent; public event PlayFabResultEvent OnAdminGetDataReportResultEvent; - public event PlayFabRequestEvent OnAdminGetMatchmakerGameInfoRequestEvent; - public event PlayFabResultEvent OnAdminGetMatchmakerGameInfoResultEvent; - public event PlayFabRequestEvent OnAdminGetMatchmakerGameModesRequestEvent; - public event PlayFabResultEvent OnAdminGetMatchmakerGameModesResultEvent; public event PlayFabRequestEvent OnAdminGetPlayedTitleListRequestEvent; public event PlayFabResultEvent OnAdminGetPlayedTitleListResultEvent; public event PlayFabRequestEvent OnAdminGetPlayerIdFromAuthTokenRequestEvent; @@ -149,8 +147,6 @@ namespace PlayFab.Events public event PlayFabResultEvent OnAdminListOpenIdConnectionResultEvent; public event PlayFabRequestEvent OnAdminListVirtualCurrencyTypesRequestEvent; public event PlayFabResultEvent OnAdminListVirtualCurrencyTypesResultEvent; - public event PlayFabRequestEvent OnAdminModifyServerBuildRequestEvent; - public event PlayFabResultEvent OnAdminModifyServerBuildResultEvent; public event PlayFabRequestEvent OnAdminRefundPurchaseRequestEvent; public event PlayFabResultEvent OnAdminRefundPurchaseResultEvent; public event PlayFabRequestEvent OnAdminRemovePlayerTagRequestEvent; diff --git a/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationAPI.cs b/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationAPI.cs index 999d6b9f1..6006b8dda 100644 --- a/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationAPI.cs @@ -9,9 +9,9 @@ namespace PlayFab { /// /// The Authentication APIs provide a convenient way to convert classic authentication responses into entity authentication - /// models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. Manage - /// API keys for authenticating any entity. The game_server API is designed to create uniquely identifiable game_server - /// entities. The game_server Entity token can be used to call Matchmaking Lobby and Pubsub for server scenarios. + /// models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. The + /// game_server API is designed to create uniquely identifiable game_server entities. The game_server Entity token can be + /// used to call Matchmaking Lobby and Pubsub for server scenarios. /// public static class PlayFabAuthenticationAPI { diff --git a/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationInstanceAPI.cs index 67cc510bd..c3ed1d432 100644 --- a/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationInstanceAPI.cs @@ -10,9 +10,9 @@ namespace PlayFab { /// /// The Authentication APIs provide a convenient way to convert classic authentication responses into entity authentication - /// models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. Manage - /// API keys for authenticating any entity. The game_server API is designed to create uniquely identifiable game_server - /// entities. The game_server Entity token can be used to call Matchmaking Lobby and Pubsub for server scenarios. + /// models. These APIs will provide you with the entity authentication token needed for subsequent Entity API calls. The + /// game_server API is designed to create uniquely identifiable game_server entities. The game_server Entity token can be + /// used to call Matchmaking Lobby and Pubsub for server scenarios. /// public class PlayFabAuthenticationInstanceAPI : IPlayFabInstanceApi { diff --git a/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationModels.cs b/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationModels.cs index 4fb7aa087..091e27b3c 100644 --- a/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Authentication/PlayFabAuthenticationModels.cs @@ -160,7 +160,14 @@ namespace PlayFab.AuthenticationModels { Unknown, XboxOne, - Scarlett + Scarlett, + WindowsOneCore, + WindowsOneCoreMobile, + Win32, + android, + iOS, + PlayStation, + Nintendo } public enum LoginIdentityProvider @@ -186,7 +193,9 @@ namespace PlayFab.AuthenticationModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King } /// diff --git a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientAPI.cs b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientAPI.cs index df5dbdf14..38f4cb22c 100644 --- a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientAPI.cs @@ -120,7 +120,8 @@ namespace PlayFab } /// - /// Increments the user's balance of the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the user's balance of the specified virtual currency by the stated amount /// public static void AddUserVirtualCurrency(AddUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -174,8 +175,9 @@ namespace PlayFab } /// - /// Confirms with the payment provider that the purchase was approved (if applicable) and adjusts inventory and virtual - /// currency balances as appropriate + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Confirms with the payment provider that the purchase was approved (if applicable) and adjusts inventory and + /// virtual currency balances as appropriate /// public static void ConfirmPurchase(ConfirmPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -188,7 +190,9 @@ namespace PlayFab } /// - /// Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's + /// inventory. /// public static void ConsumeItem(ConsumeItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -345,7 +349,8 @@ namespace PlayFab } /// - /// Retrieves the specified version of the title's catalog of virtual goods, including all defined properties + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified version of the title's catalog of virtual goods, including all defined properties /// public static void GetCatalogItems(GetCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -371,7 +376,8 @@ namespace PlayFab } /// - /// Retrieves the specified character's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified character's current inventory of virtual goods /// public static void GetCharacterInventory(GetCharacterInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -440,20 +446,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetContentDownloadUrl", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } - /// - /// Get details about all current running game servers matching the given parameters. - /// - [Obsolete("Use 'MultiplayerServer/ListMultiplayerServers' instead", false)] - public static void GetCurrentGames(CurrentGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); - - - PlayFabHttp.MakeApiCall("/Client/GetCurrentGames", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - /// /// Retrieves a list of ranked friends of the current player for the given statistic, starting from the indicated point in /// the leaderboard @@ -496,20 +488,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetFriendsList", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } - /// - /// Get details about the regions hosting game servers matching the given parameters. - /// - [Obsolete("Use 'MultiplayerServer/ListMultiplayerServers' instead", false)] - public static void GetGameServerRegions(GameServerRegionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); - - - PlayFabHttp.MakeApiCall("/Client/GetGameServerRegions", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - /// /// Retrieves a list of ranked users for the given statistic, starting from the indicated point in the leaderboard /// @@ -564,9 +542,10 @@ namespace PlayFab } /// - /// For payments flows where the provider requires playfab (the fulfiller) to initiate the transaction, but the client - /// completes the rest of the flow. In the Xsolla case, the token returned here will be passed to Xsolla by the client to - /// create a cart. Poll GetPurchase using the returned OrderId once you've completed the payment. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ For payments flows where the provider requires playfab (the fulfiller) to initiate the transaction, but the + /// client completes the rest of the flow. In the Xsolla case, the token returned here will be passed to Xsolla by the + /// client to create a cart. Poll GetPurchase using the returned OrderId once you've completed the payment. /// public static void GetPaymentToken(GetPaymentTokenRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -822,6 +801,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromPSNAccountIDs", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of PlayStation :tm: Network identifiers. + /// + public static void GetPlayFabIDsFromPSNOnlineIDs(GetPlayFabIDsFromPSNOnlineIDsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromPSNOnlineIDs", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile /// IDs for the user accounts, available as SteamId in the Steamworks Community API calls. @@ -836,6 +828,20 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromSteamIDs", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are persona + /// names. + /// + public static void GetPlayFabIDsFromSteamNames(GetPlayFabIDsFromSteamNamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromSteamNames", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Twitch identifiers. The Twitch identifiers are the IDs for /// the user accounts, available as "_id" from the Twitch API methods (ex: @@ -878,8 +884,9 @@ namespace PlayFab } /// - /// Retrieves a purchase along with its current PlayFab status. Returns inventory items from the purchase that are still - /// active. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves a purchase along with its current PlayFab status. Returns inventory items from the purchase that + /// are still active. /// public static void GetPurchase(GetPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -908,7 +915,8 @@ namespace PlayFab } /// - /// Retrieves the set of items defined for the specified store, including all prices defined + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the set of items defined for the specified store, including all prices defined /// public static void GetStoreItems(GetStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -998,7 +1006,8 @@ namespace PlayFab } /// - /// Retrieves the user's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the user's current inventory of virtual goods /// public static void GetUserInventory(GetUserInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1556,25 +1565,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/LoginWithXbox", request, AuthType.None, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } - /// - /// Attempts to locate a game session matching the given parameters. If the goal is to match the player into a specific - /// active session, only the LobbyId is required. Otherwise, the BuildVersion, GameMode, and Region are all required - /// parameters. Note that parameters specified in the search are required (they are not weighting factors). If a slot is - /// found in a server instance matching the parameters, the slot will be assigned to that player, removing it from the - /// availabe set. In that case, the information on the game session will be returned, otherwise the Status returned will be - /// GameNotFound. - /// - [Obsolete("Use 'Match/CreateMatchmakingTicket' instead", false)] - public static void Matchmake(MatchmakeRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); - - - PlayFabHttp.MakeApiCall("/Client/Matchmake", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - /// /// Opens a new outstanding trade. Note that a given item instance may only be in one open trade at a time. /// @@ -1589,7 +1579,8 @@ namespace PlayFab } /// - /// Selects a payment option for purchase order created via StartPurchase + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Selects a payment option for purchase order created via StartPurchase /// public static void PayForPurchase(PayForPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1602,8 +1593,9 @@ namespace PlayFab } /// - /// Buys a single item with virtual currency. You must specify both the virtual currency to use to purchase, as well as what - /// the client believes the price to be. This lets the server fail the purchase if the price has changed. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Buys a single item with virtual currency. You must specify both the virtual currency to use to purchase, as + /// well as what the client believes the price to be. This lets the server fail the purchase if the price has changed. /// public static void PurchaseItem(PurchaseItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1616,7 +1608,8 @@ namespace PlayFab } /// - /// Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the /// Economy->Catalogs tab in the PlayFab Game Manager. /// public static void RedeemCoupon(RedeemCouponRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -1657,7 +1650,7 @@ namespace PlayFab /// /// Registers a new Playfab user account, returning a session identifier that can subsequently be used for API calls which - /// require an authenticated user. You must supply either a username or an email address. + /// require an authenticated user. You must supply a username and an email address. /// public static void RegisterPlayFabUser(RegisterPlayFabUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1766,7 +1759,8 @@ namespace PlayFab } /// - /// Restores all in-app purchases based on the given restore receipt + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Restores all in-app purchases based on the given restore receipt /// public static void RestoreIOSPurchases(RestoreIOSPurchasesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1833,7 +1827,8 @@ namespace PlayFab } /// - /// Creates an order for a list of items from the title catalog + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Creates an order for a list of items from the title catalog /// public static void StartPurchase(StartPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1846,8 +1841,9 @@ namespace PlayFab } /// - /// Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make a VC - /// balance negative with this API. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make + /// a VC balance negative with this API. /// public static void SubtractUserVirtualCurrency(SubtractUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -2083,9 +2079,10 @@ namespace PlayFab } /// - /// Opens the specified container, with the specified key (when required), and returns the contents of the opened container. - /// If the container (and key when relevant) are consumable (RemainingUses > 0), their RemainingUses will be decremented, - /// consistent with the operation of ConsumeItem. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Opens the specified container, with the specified key (when required), and returns the contents of the + /// opened container. If the container (and key when relevant) are consumable (RemainingUses > 0), their RemainingUses will + /// be decremented, consistent with the operation of ConsumeItem. /// public static void UnlockContainerInstance(UnlockContainerInstanceRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -2098,8 +2095,9 @@ namespace PlayFab } /// - /// Searches target inventory for an ItemInstance matching the given CatalogItemId, if necessary unlocks it using an - /// appropriate key, and returns the contents of the opened container. If the container (and key when relevant) are + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Searches target inventory for an ItemInstance matching the given CatalogItemId, if necessary unlocks it + /// using an appropriate key, and returns the contents of the opened container. If the container (and key when relevant) are /// consumable (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of ConsumeItem. /// public static void UnlockContainerItem(UnlockContainerItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -2223,8 +2221,9 @@ namespace PlayFab } /// - /// Validates with Amazon that the receipt for an Amazon App Store in-app purchase is valid and that it matches the - /// purchased catalog item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates with Amazon that the receipt for an Amazon App Store in-app purchase is valid and that it matches + /// the purchased catalog item /// public static void ValidateAmazonIAPReceipt(ValidateAmazonReceiptRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -2237,7 +2236,8 @@ namespace PlayFab } /// - /// Validates a Google Play purchase and gives the corresponding item to the player. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates a Google Play purchase and gives the corresponding item to the player. /// public static void ValidateGooglePlayPurchase(ValidateGooglePlayPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -2250,8 +2250,9 @@ namespace PlayFab } /// - /// Validates with the Apple store that the receipt for an iOS in-app purchase is valid and that it matches the purchased - /// catalog item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates with the Apple store that the receipt for an iOS in-app purchase is valid and that it matches the + /// purchased catalog item /// public static void ValidateIOSReceipt(ValidateIOSReceiptRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -2264,8 +2265,9 @@ namespace PlayFab } /// - /// Validates with Windows that the receipt for an Windows App Store in-app purchase is valid and that it matches the - /// purchased catalog item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates with Windows that the receipt for an Windows App Store in-app purchase is valid and that it + /// matches the purchased catalog item /// public static void ValidateWindowsStoreReceipt(ValidateWindowsReceiptRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { diff --git a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientInstanceAPI.cs index 18804ce02..eb6c964f0 100644 --- a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientInstanceAPI.cs @@ -134,7 +134,8 @@ namespace PlayFab } /// - /// Increments the user's balance of the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the user's balance of the specified virtual currency by the stated amount /// public void AddUserVirtualCurrency(AddUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -180,8 +181,9 @@ namespace PlayFab } /// - /// Confirms with the payment provider that the purchase was approved (if applicable) and adjusts inventory and virtual - /// currency balances as appropriate + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Confirms with the payment provider that the purchase was approved (if applicable) and adjusts inventory and + /// virtual currency balances as appropriate /// public void ConfirmPurchase(ConfirmPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -192,7 +194,9 @@ namespace PlayFab } /// - /// Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's + /// inventory. /// public void ConsumeItem(ConsumeItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -329,7 +333,8 @@ namespace PlayFab } /// - /// Retrieves the specified version of the title's catalog of virtual goods, including all defined properties + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified version of the title's catalog of virtual goods, including all defined properties /// public void GetCatalogItems(GetCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -351,7 +356,8 @@ namespace PlayFab } /// - /// Retrieves the specified character's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified character's current inventory of virtual goods /// public void GetCharacterInventory(GetCharacterInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -410,18 +416,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetContentDownloadUrl", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } - /// - /// Get details about all current running game servers matching the given parameters. - /// - [Obsolete("Use 'MultiplayerServer/ListMultiplayerServers' instead", false)] - public void GetCurrentGames(CurrentGamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); - PlayFabHttp.MakeApiCall("/Client/GetCurrentGames", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - /// /// Retrieves a list of ranked friends of the current player for the given statistic, starting from the indicated point in /// the leaderboard @@ -458,18 +452,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetFriendsList", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } - /// - /// Get details about the regions hosting game servers matching the given parameters. - /// - [Obsolete("Use 'MultiplayerServer/ListMultiplayerServers' instead", false)] - public void GetGameServerRegions(GameServerRegionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); - PlayFabHttp.MakeApiCall("/Client/GetGameServerRegions", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - /// /// Retrieves a list of ranked users for the given statistic, starting from the indicated point in the leaderboard /// @@ -516,9 +498,10 @@ namespace PlayFab } /// - /// For payments flows where the provider requires playfab (the fulfiller) to initiate the transaction, but the client - /// completes the rest of the flow. In the Xsolla case, the token returned here will be passed to Xsolla by the client to - /// create a cart. Poll GetPurchase using the returned OrderId once you've completed the payment. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ For payments flows where the provider requires playfab (the fulfiller) to initiate the transaction, but the + /// client completes the rest of the flow. In the Xsolla case, the token returned here will be passed to Xsolla by the + /// client to create a cart. Poll GetPurchase using the returned OrderId once you've completed the payment. /// public void GetPaymentToken(GetPaymentTokenRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -736,6 +719,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromPSNAccountIDs", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of PlayStation :tm: Network identifiers. + /// + public void GetPlayFabIDsFromPSNOnlineIDs(GetPlayFabIDsFromPSNOnlineIDsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromPSNOnlineIDs", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile /// IDs for the user accounts, available as SteamId in the Steamworks Community API calls. @@ -748,6 +742,18 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromSteamIDs", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are persona + /// names. + /// + public void GetPlayFabIDsFromSteamNames(GetPlayFabIDsFromSteamNamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Client/GetPlayFabIDsFromSteamNames", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Twitch identifiers. The Twitch identifiers are the IDs for /// the user accounts, available as "_id" from the Twitch API methods (ex: @@ -784,8 +790,9 @@ namespace PlayFab } /// - /// Retrieves a purchase along with its current PlayFab status. Returns inventory items from the purchase that are still - /// active. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves a purchase along with its current PlayFab status. Returns inventory items from the purchase that + /// are still active. /// public void GetPurchase(GetPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -810,7 +817,8 @@ namespace PlayFab } /// - /// Retrieves the set of items defined for the specified store, including all prices defined + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the set of items defined for the specified store, including all prices defined /// public void GetStoreItems(GetStoreItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -886,7 +894,8 @@ namespace PlayFab } /// - /// Retrieves the user's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the user's current inventory of virtual goods /// public void GetUserInventory(GetUserInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1362,23 +1371,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Client/LoginWithXbox", request, AuthType.None, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } - /// - /// Attempts to locate a game session matching the given parameters. If the goal is to match the player into a specific - /// active session, only the LobbyId is required. Otherwise, the BuildVersion, GameMode, and Region are all required - /// parameters. Note that parameters specified in the search are required (they are not weighting factors). If a slot is - /// found in a server instance matching the parameters, the slot will be assigned to that player, removing it from the - /// availabe set. In that case, the information on the game session will be returned, otherwise the Status returned will be - /// GameNotFound. - /// - [Obsolete("Use 'Match/CreateMatchmakingTicket' instead", false)] - public void Matchmake(MatchmakeRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (!context.IsClientLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); - PlayFabHttp.MakeApiCall("/Client/Matchmake", request, AuthType.LoginSession, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - /// /// Opens a new outstanding trade. Note that a given item instance may only be in one open trade at a time. /// @@ -1391,7 +1383,8 @@ namespace PlayFab } /// - /// Selects a payment option for purchase order created via StartPurchase + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Selects a payment option for purchase order created via StartPurchase /// public void PayForPurchase(PayForPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1402,8 +1395,9 @@ namespace PlayFab } /// - /// Buys a single item with virtual currency. You must specify both the virtual currency to use to purchase, as well as what - /// the client believes the price to be. This lets the server fail the purchase if the price has changed. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Buys a single item with virtual currency. You must specify both the virtual currency to use to purchase, as + /// well as what the client believes the price to be. This lets the server fail the purchase if the price has changed. /// public void PurchaseItem(PurchaseItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1414,7 +1408,8 @@ namespace PlayFab } /// - /// Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the /// Economy->Catalogs tab in the PlayFab Game Manager. /// public void RedeemCoupon(RedeemCouponRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -1449,7 +1444,7 @@ namespace PlayFab /// /// Registers a new Playfab user account, returning a session identifier that can subsequently be used for API calls which - /// require an authenticated user. You must supply either a username or an email address. + /// require an authenticated user. You must supply a username and an email address. /// public void RegisterPlayFabUser(RegisterPlayFabUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1542,7 +1537,8 @@ namespace PlayFab } /// - /// Restores all in-app purchases based on the given restore receipt + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Restores all in-app purchases based on the given restore receipt /// public void RestoreIOSPurchases(RestoreIOSPurchasesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1599,7 +1595,8 @@ namespace PlayFab } /// - /// Creates an order for a list of items from the title catalog + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Creates an order for a list of items from the title catalog /// public void StartPurchase(StartPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1610,8 +1607,9 @@ namespace PlayFab } /// - /// Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make a VC - /// balance negative with this API. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make + /// a VC balance negative with this API. /// public void SubtractUserVirtualCurrency(SubtractUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1811,9 +1809,10 @@ namespace PlayFab } /// - /// Opens the specified container, with the specified key (when required), and returns the contents of the opened container. - /// If the container (and key when relevant) are consumable (RemainingUses > 0), their RemainingUses will be decremented, - /// consistent with the operation of ConsumeItem. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Opens the specified container, with the specified key (when required), and returns the contents of the + /// opened container. If the container (and key when relevant) are consumable (RemainingUses > 0), their RemainingUses will + /// be decremented, consistent with the operation of ConsumeItem. /// public void UnlockContainerInstance(UnlockContainerInstanceRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1824,8 +1823,9 @@ namespace PlayFab } /// - /// Searches target inventory for an ItemInstance matching the given CatalogItemId, if necessary unlocks it using an - /// appropriate key, and returns the contents of the opened container. If the container (and key when relevant) are + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Searches target inventory for an ItemInstance matching the given CatalogItemId, if necessary unlocks it + /// using an appropriate key, and returns the contents of the opened container. If the container (and key when relevant) are /// consumable (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of ConsumeItem. /// public void UnlockContainerItem(UnlockContainerItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -1931,8 +1931,9 @@ namespace PlayFab } /// - /// Validates with Amazon that the receipt for an Amazon App Store in-app purchase is valid and that it matches the - /// purchased catalog item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates with Amazon that the receipt for an Amazon App Store in-app purchase is valid and that it matches + /// the purchased catalog item /// public void ValidateAmazonIAPReceipt(ValidateAmazonReceiptRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1943,7 +1944,8 @@ namespace PlayFab } /// - /// Validates a Google Play purchase and gives the corresponding item to the player. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates a Google Play purchase and gives the corresponding item to the player. /// public void ValidateGooglePlayPurchase(ValidateGooglePlayPurchaseRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1954,8 +1956,9 @@ namespace PlayFab } /// - /// Validates with the Apple store that the receipt for an iOS in-app purchase is valid and that it matches the purchased - /// catalog item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates with the Apple store that the receipt for an iOS in-app purchase is valid and that it matches the + /// purchased catalog item /// public void ValidateIOSReceipt(ValidateIOSReceiptRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1966,8 +1969,9 @@ namespace PlayFab } /// - /// Validates with Windows that the receipt for an Windows App Store in-app purchase is valid and that it matches the - /// purchased catalog item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Validates with Windows that the receipt for an Windows App Store in-app purchase is valid and that it + /// matches the purchased catalog item /// public void ValidateWindowsStoreReceipt(ValidateWindowsReceiptRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { diff --git a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientModels.cs b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientModels.cs index 4b5069a4a..5f8ae7464 100644 --- a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabClientModels.cs @@ -613,25 +613,6 @@ namespace PlayFab.ClientModels Specific } - /// - /// Collection filter to include and/or exclude collections with certain key-value pairs. The filter generates a collection - /// set defined by Includes rules and then remove collections that matches the Excludes rules. A collection is considered - /// matching a rule if the rule describes a subset of the collection. - /// - [Serializable] - public class CollectionFilter : PlayFabBaseModel - { - /// - /// List of Exclude rules, with any of which if a collection matches, it is excluded by the filter. - /// - public List Excludes; - /// - /// List of Include rules, with any of which if a collection matches, it is included by the filter, unless it is excluded by - /// one of the Exclude rule - /// - public List Includes; - } - /// /// The final step in the purchasing process, this API finalizes the purchase with the payment provider, where applicable, /// adding virtual goods to the player inventory (including random drop table resolution and recursive addition of bundled @@ -830,18 +811,6 @@ namespace PlayFab.ClientModels public EmailVerificationStatus? VerificationStatus; } - /// - /// A data container - /// - [Serializable] - public class Container_Dictionary_String_String : PlayFabBaseModel - { - /// - /// Content of data - /// - public Dictionary Data; - } - public enum ContinentCode { AF, @@ -850,7 +819,8 @@ namespace PlayFab.ClientModels EU, NA, OC, - SA + SA, + Unknown } public enum CountryCode @@ -1103,7 +1073,8 @@ namespace PlayFab.ClientModels EH, YE, ZM, - ZW + ZW, + Unknown } /// @@ -1294,48 +1265,6 @@ namespace PlayFab.ClientModels ZWD } - [Serializable] - public class CurrentGamesRequest : PlayFabRequestCommon - { - /// - /// Build to match against. - /// - public string BuildVersion; - /// - /// Game mode to look for. - /// - public string GameMode; - /// - /// Region to check for Game Server Instances. - /// - public Region? Region; - /// - /// Statistic name to find statistic-based matches. - /// - public string StatisticName; - /// - /// Filter to include and/or exclude Game Server Instances associated with certain tags. - /// - public CollectionFilter TagFilter; - } - - [Serializable] - public class CurrentGamesResult : PlayFabResultCommon - { - /// - /// number of games running - /// - public int GameCount; - /// - /// array of games found - /// - public List Games; - /// - /// total number of players across all servers - /// - public int PlayerCount; - } - /// /// Any arbitrary information collected by the device /// @@ -1521,7 +1450,7 @@ namespace PlayFab.ClientModels public class FriendInfo : PlayFabBaseModel { /// - /// Available Facebook information (if the user and PlayFab friend are also connected in Facebook). + /// Available Facebook information (if the user and connected Facebook friend both have PlayFab Accounts in the same title). /// public UserFacebookInfo FacebookInfo; /// @@ -1529,7 +1458,8 @@ namespace PlayFab.ClientModels /// public string FriendPlayFabId; /// - /// Available Game Center information (if the user and PlayFab friend are also connected in Game Center). + /// Available Game Center information (if the user and connected Game Center friend both have PlayFab Accounts in the same + /// title). /// public UserGameCenterInfo GameCenterInfo; /// @@ -1537,12 +1467,12 @@ namespace PlayFab.ClientModels /// public PlayerProfileModel Profile; /// - /// Available PlayStation :tm: Network information, if the user and PlayFab friend are both connected to PlayStation :tm: - /// Network. + /// Available PlayStation :tm: Network information, if the user connected PlayStation :tm Network friend both have PlayFab + /// Accounts in the same title. /// public UserPsnInfo PSNInfo; /// - /// Available Steam information (if the user and PlayFab friend are also connected in Steam). + /// Available Steam information (if the user and connected Steam friend both have PlayFab Accounts in the same title). /// public UserSteamInfo SteamInfo; /// @@ -1558,7 +1488,7 @@ namespace PlayFab.ClientModels /// public string Username; /// - /// Available Xbox information, if the user and PlayFab friend are both connected to Xbox Live. + /// Available Xbox information, (if the user and connected Xbox Live friend both have PlayFab Accounts in the same title). /// public UserXboxInfo XboxInfo; } @@ -1576,104 +1506,6 @@ namespace PlayFab.ClientModels public string PlayFabId; } - [Serializable] - public class GameInfo : PlayFabBaseModel - { - /// - /// build version this server is running - /// - public string BuildVersion; - /// - /// game mode this server is running - /// - public string GameMode; - /// - /// game session custom data - /// - public string GameServerData; - /// - /// game specific string denoting server configuration - /// - public GameInstanceState? GameServerStateEnum; - /// - /// last heartbeat of the game server instance, used in external game server provider mode - /// - public DateTime? LastHeartbeat; - /// - /// unique lobby identifier for this game server - /// - public string LobbyID; - /// - /// maximum players this server can support - /// - public int? MaxPlayers; - /// - /// array of current player IDs on this server - /// - public List PlayerUserIds; - /// - /// region to which this server is associated - /// - public Region? Region; - /// - /// duration in seconds this server has been running - /// - public uint RunTime; - /// - /// IPV4 address of the server - /// - public string ServerIPV4Address; - /// - /// IPV6 address of the server - /// - public string ServerIPV6Address; - /// - /// port number to use for non-http communications with the server - /// - public int? ServerPort; - /// - /// Public DNS name (if any) of the server - /// - public string ServerPublicDNSName; - /// - /// stastic used to match this game in player statistic matchmaking - /// - public string StatisticName; - /// - /// game session tags - /// - public Dictionary Tags; - } - - public enum GameInstanceState - { - Open, - Closed - } - - [Serializable] - public class GameServerRegionsRequest : PlayFabRequestCommon - { - /// - /// version of game server for which stats are being requested - /// - public string BuildVersion; - /// - /// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a - /// title has been selected. - /// - public string TitleId; - } - - [Serializable] - public class GameServerRegionsResult : PlayFabResultCommon - { - /// - /// array of regions found matching the request parameters - /// - public List Regions; - } - [Serializable] public class GenericPlayFabIdPair : PlayFabBaseModel { @@ -1966,16 +1798,6 @@ namespace PlayFab.ClientModels /// public ExternalFriendSources? ExternalPlatformFriends; /// - /// Indicates whether Facebook friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeFacebookFriends; - /// - /// Indicates whether Steam service friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeSteamFriends; - /// /// Maximum number of entries to retrieve. Default 10, maximum 100. /// public int? MaxResultsCount; @@ -2039,16 +1861,6 @@ namespace PlayFab.ClientModels /// public ExternalFriendSources? ExternalPlatformFriends; /// - /// Indicates whether Facebook friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeFacebookFriends; - /// - /// Indicates whether Steam service friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeSteamFriends; - /// /// Maximum number of entries to retrieve. Default 10, maximum 100. /// public int? MaxResultsCount; @@ -2089,16 +1901,6 @@ namespace PlayFab.ClientModels /// public ExternalFriendSources? ExternalPlatformFriends; /// - /// Indicates whether Facebook friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeFacebookFriends; - /// - /// Indicates whether Steam service friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeSteamFriends; - /// /// If non-null, this determines which properties of the resulting player profiles to return. For API calls from the client, /// only the allowed client profile properties for the title may be requested. These allowed properties are configured in /// the Game Manager "Client Profile Options" tab in the "Settings" section. @@ -2113,8 +1915,9 @@ namespace PlayFab.ClientModels /// /// If any additional services are queried for the user's friends, those friends who also have a PlayFab account registered /// for the title will be returned in the results. For Facebook, user has to have logged into the title's Facebook app - /// recently, and only friends who also plays this game will be included. For Xbox Live, user has to have logged into the - /// Xbox Live recently, and only friends who also play this game will be included. + /// recently, and only friends who also plays this game will be included. Note: If the user authenticated with + /// AuthenticationToken when calling LoginWithFacebook, instead of AcessToken, an empty list will be returned. For Xbox + /// Live, user has to have logged into the Xbox Live recently, and only friends who also play this game will be included. /// [Serializable] public class GetFriendsListResult : PlayFabResultCommon @@ -2862,6 +2665,32 @@ namespace PlayFab.ClientModels public List Data; } + [Serializable] + public class GetPlayFabIDsFromPSNOnlineIDsRequest : PlayFabRequestCommon + { + /// + /// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment. + /// + public int? IssuerId; + /// + /// Array of unique PlayStation :tm: Network identifiers for which the title needs to get PlayFab identifiers. The array + /// cannot exceed 2,000 in length. + /// + public List PSNOnlineIDs; + } + + /// + /// For PlayStation :tm: Network identifiers which have not been linked to PlayFab accounts, null will be returned. + /// + [Serializable] + public class GetPlayFabIDsFromPSNOnlineIDsResult : PlayFabResultCommon + { + /// + /// Mapping of PlayStation :tm: Network identifiers to PlayFab identifiers. + /// + public List Data; + } + [Serializable] public class GetPlayFabIDsFromSteamIDsRequest : PlayFabRequestCommon { @@ -2884,6 +2713,29 @@ namespace PlayFab.ClientModels public List Data; } + [Serializable] + public class GetPlayFabIDsFromSteamNamesRequest : PlayFabRequestCommon + { + /// + /// Array of unique Steam identifiers for which the title needs to get PlayFab identifiers. The array cannot exceed 2,000 in + /// length. + /// + public List SteamNames; + } + + /// + /// For Steam identifiers which have not been linked to PlayFab accounts, or if the user has not logged in recently, null + /// will be returned. + /// + [Serializable] + public class GetPlayFabIDsFromSteamNamesResult : PlayFabResultCommon + { + /// + /// Mapping of Steam identifiers to PlayFab identifiers. + /// + public List Data; + } + [Serializable] public class GetPlayFabIDsFromTwitchIDsRequest : PlayFabRequestCommon { @@ -3870,6 +3722,11 @@ namespace PlayFab.ClientModels /// 0x08 should become "08"). /// public string SteamTicket; + /// + /// True if ticket was generated using ISteamUser::GetAuthTicketForWebAPI() using "AzurePlayFab" as the identity string. + /// False if the ticket was generated with ISteamUser::GetAuthSessionTicket(). + /// + public bool? TicketIsServiceSpecific; } [Serializable] @@ -3990,7 +3847,9 @@ namespace PlayFab.ClientModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King } [Serializable] @@ -4238,7 +4097,8 @@ namespace PlayFab.ClientModels /// same Facebook applications between PlayFab Title IDs, as Facebook provides unique user IDs per application and doing so /// can result in issues with the Facebook ID for the user in their PlayFab account information. If you must re-use an /// application in a new PlayFab Title ID, please be sure to first unlink all accounts from Facebook, or delete all users in - /// the first Title ID. + /// the first Title ID. Note: If the user is authenticated with AuthenticationToken, instead of AccessToken, the + /// GetFriendsList API will return an empty list. /// [Serializable] public class LoginWithFacebookRequest : PlayFabRequestCommon @@ -4248,6 +4108,10 @@ namespace PlayFab.ClientModels /// public string AccessToken; /// + /// Token used for limited login authentication. + /// + public string AuthenticationToken; + /// /// Automatically create a PlayFab account if one is not currently linked to this ID. /// public bool? CreateAccount; @@ -4729,14 +4593,13 @@ namespace PlayFab.ClientModels /// /// Steam sign-in is accomplished with the Steam Session Ticket. More information on the Ticket can be found in the - /// Steamworks SDK, here: https://partner.steamgames.com/documentation/auth (requires sign-in). NOTE: For Steam - /// authentication to work, the title must be configured with the Steam Application ID and Web API Key in the PlayFab Game - /// Manager (under Steam in the Add-ons Marketplace). You can obtain a Web API Key from the Permissions page of any Group - /// associated with your App ID in the Steamworks site. If this is the first time a user has signed in with the Steam - /// account and CreateAccount is set to true, a new PlayFab account will be created and linked to the provided account's - /// Steam ID. In this case, no email or username will be associated with the PlayFab account. Otherwise, if no PlayFab - /// account is linked to the Steam account, an error indicating this will be returned, so that the title can guide the user - /// through creation of a PlayFab account. + /// Steamworks SDK, here: https://partner.steamgames.com/documentation/auth. NOTE: For Steam authentication to work, the + /// title must be configured with the Steam Application ID and Web API Key in the PlayFab Game Manager (under Steam in the + /// Add-ons Marketplace). You can obtain a Web API Key from the Permissions page of any Group associated with your App ID in + /// the Steamworks site. If this is the first time a user has signed in with the Steam account and CreateAccount is set to + /// true, a new PlayFab account will be created and linked to the provided account's Steam ID. In this case, no email or + /// username will be associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the Steam account, + /// an error indicating this will be returned, so that the title can guide the user through creation of a PlayFab account. /// [Serializable] public class LoginWithSteamRequest : PlayFabRequestCommon @@ -4767,6 +4630,11 @@ namespace PlayFab.ClientModels /// public string SteamTicket; /// + /// True if ticket was generated using ISteamUser::GetAuthTicketForWebAPI() using "AzurePlayFab" as the identity string. + /// False if the ticket was generated with ISteamUser::GetAuthSessionTicket(). + /// + public bool? TicketIsServiceSpecific; + /// /// Unique identifier for the title, found in the Settings > Game Properties section of the PlayFab developer site when a /// title has been selected. /// @@ -4870,97 +4738,6 @@ namespace PlayFab.ClientModels public string Message; } - [Serializable] - public class MatchmakeRequest : PlayFabRequestCommon - { - /// - /// Build version to match against. [Note: Required if LobbyId is not specified] - /// - public string BuildVersion; - /// - /// Character to use for stats based matching. Leave null to use account stats. - /// - public string CharacterId; - /// - /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). - /// - public Dictionary CustomTags; - /// - /// Game mode to match make against. [Note: Required if LobbyId is not specified] - /// - public string GameMode; - /// - /// Lobby identifier to match make against. This is used to select a specific Game Server Instance. - /// - public string LobbyId; - /// - /// Region to match make against. [Note: Required if LobbyId is not specified] - /// - public Region? Region; - /// - /// Start a game session if one with an open slot is not found. Defaults to true. - /// - public bool? StartNewIfNoneFound; - /// - /// Player statistic to use in finding a match. May be null for no stat-based matching. - /// - public string StatisticName; - /// - /// Filter to include and/or exclude Game Server Instances associated with certain Tags - /// - public CollectionFilter TagFilter; - } - - [Serializable] - public class MatchmakeResult : PlayFabResultCommon - { - /// - /// timestamp for when the server will expire, if applicable - /// - public string Expires; - /// - /// unique lobby identifier of the server matched - /// - public string LobbyID; - /// - /// time in milliseconds the application is configured to wait on matchmaking results - /// - public int? PollWaitTimeMS; - /// - /// IPV4 address of the server - /// - public string ServerIPV4Address; - /// - /// IPV6 address of the server - /// - public string ServerIPV6Address; - /// - /// port number to use for non-http communications with the server - /// - public int? ServerPort; - /// - /// Public DNS name (if any) of the server - /// - public string ServerPublicDNSName; - /// - /// result of match making process - /// - public MatchmakeStatus? Status; - /// - /// server authorization ticket (used by RedeemMatchmakerTicket to validate user insertion into the game) - /// - public string Ticket; - } - - public enum MatchmakeStatus - { - Complete, - Waiting, - GameNotFound, - NoAvailableSlots, - SessionClosed - } - [Serializable] public class MembershipModel : PlayFabBaseModel { @@ -5441,6 +5218,20 @@ namespace PlayFab.ClientModels public string PSNAccountId; } + [Serializable] + public class PSNOnlinePlayFabIdPair : PlayFabBaseModel + { + /// + /// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation :tm: Network + /// identifier. + /// + public string PlayFabId; + /// + /// Unique PlayStation :tm: Network identifier for a user. + /// + public string PSNOnlineId; + } + /// /// Please note that the processing time for inventory grants and purchases increases fractionally the more items are in the /// inventory, and the more items are in the grant/purchase operation (with each item in a bundle being a distinct add). @@ -5582,38 +5373,6 @@ namespace PlayFab.ClientModels public string RedirectUri; } - public enum Region - { - USCentral, - USEast, - EUWest, - Singapore, - Japan, - Brazil, - Australia - } - - [Serializable] - public class RegionInfo : PlayFabBaseModel - { - /// - /// indicates whether the server specified is available in this region - /// - public bool Available; - /// - /// name of the region - /// - public string Name; - /// - /// url to ping to get roundtrip time - /// - public string PingUrl; - /// - /// unique identifier for the region - /// - public Region? Region; - } - /// /// The steps to configure and send Push Notifications is described in the PlayFab tutorials, here: /// https://docs.microsoft.com/gaming/playfab/features/engagement/push-notifications/quickstart @@ -6179,6 +5938,19 @@ namespace PlayFab.ClientModels public uint Version; } + [Serializable] + public class SteamNamePlayFabIdPair : PlayFabBaseModel + { + /// + /// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Steam identifier. + /// + public string PlayFabId; + /// + /// Unique Steam identifier for a user, also known as Steam persona name. + /// + public string SteamName; + } + [Serializable] public class SteamPlayFabIdPair : PlayFabBaseModel { @@ -7081,6 +6853,10 @@ namespace PlayFab.ClientModels /// public UserPsnInfo PsnInfo; /// + /// Server Custom ID information, if a server custom ID has been assigned + /// + public UserServerCustomIdInfo ServerCustomIdInfo; + /// /// User Steam information, if a Steam account has been linked /// public UserSteamInfo SteamInfo; @@ -7312,7 +7088,9 @@ namespace PlayFab.ClientModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King } [Serializable] @@ -7337,6 +7115,15 @@ namespace PlayFab.ClientModels public string PsnOnlineId; } + [Serializable] + public class UserServerCustomIdInfo : PlayFabBaseModel + { + /// + /// Custom ID + /// + public string CustomId; + } + [Serializable] public class UserSettings : PlayFabBaseModel { diff --git a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabEvents.cs index 78e95c709..48bba7da1 100644 --- a/Assets/ThirdParty/PlayFabSDK/Client/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Client/PlayFabEvents.cs @@ -63,16 +63,12 @@ namespace PlayFab.Events public event PlayFabResultEvent OnGetCharacterStatisticsResultEvent; public event PlayFabRequestEvent OnGetContentDownloadUrlRequestEvent; public event PlayFabResultEvent OnGetContentDownloadUrlResultEvent; - public event PlayFabRequestEvent OnGetCurrentGamesRequestEvent; - public event PlayFabResultEvent OnGetCurrentGamesResultEvent; public event PlayFabRequestEvent OnGetFriendLeaderboardRequestEvent; public event PlayFabResultEvent OnGetFriendLeaderboardResultEvent; public event PlayFabRequestEvent OnGetFriendLeaderboardAroundPlayerRequestEvent; public event PlayFabResultEvent OnGetFriendLeaderboardAroundPlayerResultEvent; public event PlayFabRequestEvent OnGetFriendsListRequestEvent; public event PlayFabResultEvent OnGetFriendsListResultEvent; - public event PlayFabRequestEvent OnGetGameServerRegionsRequestEvent; - public event PlayFabResultEvent OnGetGameServerRegionsResultEvent; public event PlayFabRequestEvent OnGetLeaderboardRequestEvent; public event PlayFabResultEvent OnGetLeaderboardResultEvent; public event PlayFabRequestEvent OnGetLeaderboardAroundCharacterRequestEvent; @@ -119,8 +115,12 @@ namespace PlayFab.Events public event PlayFabResultEvent OnGetPlayFabIDsFromNintendoSwitchDeviceIdsResultEvent; public event PlayFabRequestEvent OnGetPlayFabIDsFromPSNAccountIDsRequestEvent; public event PlayFabResultEvent OnGetPlayFabIDsFromPSNAccountIDsResultEvent; + public event PlayFabRequestEvent OnGetPlayFabIDsFromPSNOnlineIDsRequestEvent; + public event PlayFabResultEvent OnGetPlayFabIDsFromPSNOnlineIDsResultEvent; public event PlayFabRequestEvent OnGetPlayFabIDsFromSteamIDsRequestEvent; public event PlayFabResultEvent OnGetPlayFabIDsFromSteamIDsResultEvent; + public event PlayFabRequestEvent OnGetPlayFabIDsFromSteamNamesRequestEvent; + public event PlayFabResultEvent OnGetPlayFabIDsFromSteamNamesResultEvent; public event PlayFabRequestEvent OnGetPlayFabIDsFromTwitchIDsRequestEvent; public event PlayFabResultEvent OnGetPlayFabIDsFromTwitchIDsResultEvent; public event PlayFabRequestEvent OnGetPlayFabIDsFromXboxLiveIDsRequestEvent; @@ -208,8 +208,6 @@ namespace PlayFab.Events public event PlayFabRequestEvent OnLoginWithSteamRequestEvent; public event PlayFabRequestEvent OnLoginWithTwitchRequestEvent; public event PlayFabRequestEvent OnLoginWithXboxRequestEvent; - public event PlayFabRequestEvent OnMatchmakeRequestEvent; - public event PlayFabResultEvent OnMatchmakeResultEvent; public event PlayFabRequestEvent OnOpenTradeRequestEvent; public event PlayFabResultEvent OnOpenTradeResultEvent; public event PlayFabRequestEvent OnPayForPurchaseRequestEvent; diff --git a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptAPI.cs b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptAPI.cs index 1ea0efdd9..d5c2bd351 100644 --- a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptAPI.cs @@ -81,6 +81,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/CloudScript/GetFunction", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Lists all currently registered Event Hub triggered Azure Functions for a given title. + /// + public static void ListEventHubFunctions(ListFunctionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/CloudScript/ListEventHubFunctions", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Lists all currently registered Azure Functions for a given title. /// @@ -172,6 +185,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/CloudScript/PostFunctionResultForScheduledTask", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Registers an event hub triggered Azure Function with a title. + /// + public static void RegisterEventHubFunction(RegisterEventHubFunctionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/CloudScript/RegisterEventHubFunction", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Registers an HTTP triggered Azure function with a title. /// diff --git a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptInstanceAPI.cs index f9dbdda62..5025b801b 100644 --- a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptInstanceAPI.cs @@ -86,6 +86,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/CloudScript/GetFunction", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Lists all currently registered Event Hub triggered Azure Functions for a given title. + /// + public void ListEventHubFunctions(ListFunctionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/CloudScript/ListEventHubFunctions", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Lists all currently registered Azure Functions for a given title. /// @@ -163,6 +174,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/CloudScript/PostFunctionResultForScheduledTask", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Registers an event hub triggered Azure Function with a title. + /// + public void RegisterEventHubFunction(RegisterEventHubFunctionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/CloudScript/RegisterEventHubFunction", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Registers an HTTP triggered Azure function with a title. /// diff --git a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptModels.cs b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptModels.cs index ac61bbfe3..1eab23ccb 100644 --- a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabCloudScriptModels.cs @@ -54,7 +54,8 @@ namespace PlayFab.CloudScriptModels EU, NA, OC, - SA + SA, + Unknown } public enum CountryCode @@ -307,7 +308,8 @@ namespace PlayFab.CloudScriptModels EH, YE, ZM, - ZW + ZW, + Unknown } public enum EmailVerificationStatus @@ -338,6 +340,23 @@ namespace PlayFab.CloudScriptModels public string Type; } + [Serializable] + public class EventHubFunctionModel : PlayFabBaseModel + { + /// + /// The connection string for the event hub. + /// + public string ConnectionString; + /// + /// The name of the event hub that triggers the Azure Function. + /// + public string EventHubName; + /// + /// The name the function was registered under. + /// + public string FunctionName; + } + [Serializable] public class ExecuteCloudScriptResult : PlayFabResultCommon { @@ -585,6 +604,15 @@ namespace PlayFab.CloudScriptModels public string Username; } + [Serializable] + public class ListEventHubFunctionsResult : PlayFabResultCommon + { + /// + /// The list of EventHub triggered functions that are currently registered for the title. + /// + public List Functions; + } + /// /// A title can have many functions, ListHttpFunctions will return a list of all the currently registered HTTP triggered /// functions for a given title. @@ -673,7 +701,9 @@ namespace PlayFab.CloudScriptModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King } [Serializable] @@ -958,6 +988,31 @@ namespace PlayFab.CloudScriptModels public string QueueName; } + /// + /// A title can have many functions, RegisterEventHubFunction associates a function name with an event hub name and + /// connection string. + /// + [Serializable] + public class RegisterEventHubFunctionRequest : PlayFabRequestCommon + { + /// + /// A connection string for the namespace of the event hub for the Azure Function. + /// + public string ConnectionString; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The name of the event hub for the Azure Function. + /// + public string EventHubName; + /// + /// The name of the function to register + /// + public string FunctionName; + } + [Serializable] public class RegisterHttpFunctionRequest : PlayFabRequestCommon { @@ -1092,7 +1147,8 @@ namespace PlayFab.CloudScriptModels public enum TriggerType { HTTP, - Queue + Queue, + EventHub } [Serializable] diff --git a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabEvents.cs index 2ae296101..bec3ba15b 100644 --- a/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/CloudScript/PlayFabEvents.cs @@ -11,6 +11,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnCloudScriptExecuteFunctionResultEvent; public event PlayFabRequestEvent OnCloudScriptGetFunctionRequestEvent; public event PlayFabResultEvent OnCloudScriptGetFunctionResultEvent; + public event PlayFabRequestEvent OnCloudScriptListEventHubFunctionsRequestEvent; + public event PlayFabResultEvent OnCloudScriptListEventHubFunctionsResultEvent; public event PlayFabRequestEvent OnCloudScriptListFunctionsRequestEvent; public event PlayFabResultEvent OnCloudScriptListFunctionsResultEvent; public event PlayFabRequestEvent OnCloudScriptListHttpFunctionsRequestEvent; @@ -25,6 +27,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnCloudScriptPostFunctionResultForPlayerTriggeredActionResultEvent; public event PlayFabRequestEvent OnCloudScriptPostFunctionResultForScheduledTaskRequestEvent; public event PlayFabResultEvent OnCloudScriptPostFunctionResultForScheduledTaskResultEvent; + public event PlayFabRequestEvent OnCloudScriptRegisterEventHubFunctionRequestEvent; + public event PlayFabResultEvent OnCloudScriptRegisterEventHubFunctionResultEvent; public event PlayFabRequestEvent OnCloudScriptRegisterHttpFunctionRequestEvent; public event PlayFabResultEvent OnCloudScriptRegisterHttpFunctionResultEvent; public event PlayFabRequestEvent OnCloudScriptRegisterQueuedFunctionRequestEvent; diff --git a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyAPI.cs b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyAPI.cs index b1683dc45..6f57f1518 100644 --- a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyAPI.cs @@ -33,7 +33,7 @@ namespace PlayFab } /// - /// Add inventory items. Up to 3500 stacks of items can be added to a single inventory collection. Stack size is uncapped. + /// Add inventory items. Up to 10,000 stacks of items can be added to a single inventory collection. Stack size is uncapped. /// public static void AddInventoryItems(AddInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -128,11 +128,10 @@ namespace PlayFab } /// - /// Execute a list of Inventory Operations. A maximum list of 10 operations can be performed by a single request. There is - /// also a limit to 250 items that can be modified/added in a single request. For example, adding a bundle with 50 items + /// Execute a list of Inventory Operations. A maximum list of 50 operations can be performed by a single request. There is + /// also a limit to 300 items that can be modified/added in a single request. For example, adding a bundle with 50 items /// counts as 50 items modified. All operations must be done within a single inventory collection. This API has a reduced - /// RPS compared to an individual inventory operation with Player Entities limited to 15 requests in 90 seconds and Title - /// Entities limited to 500 requests in 10 seconds. + /// RPS compared to an individual inventory operation with Player Entities limited to 60 requests in 90 seconds. /// public static void ExecuteInventoryOperations(ExecuteInventoryOperationsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -144,6 +143,22 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Inventory/ExecuteInventoryOperations", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Transfer a list of inventory items. A maximum list of 50 operations can be performed by a single request. When the + /// response code is 202, one or more operations did not complete within the timeframe of the request. You can identify the + /// pending operations by looking for OperationStatus = 'InProgress'. You can check on the operation status at anytime + /// within 1 day of the request by passing the TransactionToken to the GetInventoryOperationStatus API. + /// + public static void ExecuteTransferOperations(ExecuteTransferOperationsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Inventory/ExecuteTransferOperations", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Gets the configuration for the catalog. Only Title Entities can call this API. There is a limit of 100 requests in 10 /// seconds for this API. More information about the Catalog Config can be found here: @@ -218,8 +233,9 @@ namespace PlayFab } /// - /// Get Inventory Collection Ids. Up to 50 Ids can be returned at once. You can use continuation tokens to paginate through - /// results that return greater than the limit. It can take a few seconds for new collection Ids to show up. + /// Get Inventory Collection Ids. Up to 50 Ids can be returned at once (or 250 with response compression enabled). You can + /// use continuation tokens to paginate through results that return greater than the limit. It can take a few seconds for + /// new collection Ids to show up. /// public static void GetInventoryCollectionIds(GetInventoryCollectionIdsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -244,6 +260,20 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Inventory/GetInventoryItems", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Get the status of an inventory operation using an OperationToken. You can check on the operation status at anytime + /// within 1 day of the request by passing the TransactionToken to the this API. + /// + public static void GetInventoryOperationStatus(GetInventoryOperationStatusRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Inventory/GetInventoryOperationStatus", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Retrieves an item from the public catalog. GetItem does not work off a cache of the Catalog and should be used when /// trying to get recent item updates. However, please note that item references data is cached and may take a few moments @@ -359,10 +389,9 @@ namespace PlayFab } /// - /// Get transaction history for a player. Up to 50 Events can be returned at once. You can use continuation tokens to + /// Get transaction history for a player. Up to 250 Events can be returned at once. You can use continuation tokens to /// paginate through results that return greater than the limit. Getting transaction history has a lower RPS limit than - /// getting a Player's inventory with Player Entities having a limit of 30 requests in 300 seconds and Title Entities having - /// a limit of 100 requests in 10 seconds. + /// getting a Player's inventory with Player Entities having a limit of 30 requests in 300 seconds. /// public static void GetTransactionHistory(GetTransactionHistoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -389,7 +418,7 @@ namespace PlayFab } /// - /// Purchase an item or bundle. Up to 3500 stacks of items can be added to a single inventory collection. Stack size is + /// Purchase an item or bundle. Up to 10,000 stacks of items can be added to a single inventory collection. Stack size is /// uncapped. /// public static void PurchaseInventoryItems(PurchaseInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -591,8 +620,11 @@ namespace PlayFab } /// - /// Transfer inventory items. When transferring across collections, a 202 response indicates that the transfer is in - /// progress and will complete soon. More information about item transfer scenarios can be found here: + /// Transfer inventory items. When transferring across collections, a 202 response indicates that the transfer did not + /// complete within the timeframe of the request. You can identify the pending operations by looking for OperationStatus = + /// 'InProgress'. You can check on the operation status at anytime within 1 day of the request by passing the + /// TransactionToken to the GetInventoryOperationStatus API. More information about item transfer scenarios can be found + /// here: /// https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/inventory/?tabs=inventory-game-manager#transfer-inventory-items /// public static void TransferInventoryItems(TransferInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) diff --git a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyInstanceAPI.cs index d2e8b07ba..ec404901c 100644 --- a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyInstanceAPI.cs @@ -52,7 +52,7 @@ namespace PlayFab } /// - /// Add inventory items. Up to 3500 stacks of items can be added to a single inventory collection. Stack size is uncapped. + /// Add inventory items. Up to 10,000 stacks of items can be added to a single inventory collection. Stack size is uncapped. /// public void AddInventoryItems(AddInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -133,11 +133,10 @@ namespace PlayFab } /// - /// Execute a list of Inventory Operations. A maximum list of 10 operations can be performed by a single request. There is - /// also a limit to 250 items that can be modified/added in a single request. For example, adding a bundle with 50 items + /// Execute a list of Inventory Operations. A maximum list of 50 operations can be performed by a single request. There is + /// also a limit to 300 items that can be modified/added in a single request. For example, adding a bundle with 50 items /// counts as 50 items modified. All operations must be done within a single inventory collection. This API has a reduced - /// RPS compared to an individual inventory operation with Player Entities limited to 15 requests in 90 seconds and Title - /// Entities limited to 500 requests in 10 seconds. + /// RPS compared to an individual inventory operation with Player Entities limited to 60 requests in 90 seconds. /// public void ExecuteInventoryOperations(ExecuteInventoryOperationsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -147,6 +146,20 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Inventory/ExecuteInventoryOperations", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Transfer a list of inventory items. A maximum list of 50 operations can be performed by a single request. When the + /// response code is 202, one or more operations did not complete within the timeframe of the request. You can identify the + /// pending operations by looking for OperationStatus = 'InProgress'. You can check on the operation status at anytime + /// within 1 day of the request by passing the TransactionToken to the GetInventoryOperationStatus API. + /// + public void ExecuteTransferOperations(ExecuteTransferOperationsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Inventory/ExecuteTransferOperations", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Gets the configuration for the catalog. Only Title Entities can call this API. There is a limit of 100 requests in 10 /// seconds for this API. More information about the Catalog Config can be found here: @@ -211,8 +224,9 @@ namespace PlayFab } /// - /// Get Inventory Collection Ids. Up to 50 Ids can be returned at once. You can use continuation tokens to paginate through - /// results that return greater than the limit. It can take a few seconds for new collection Ids to show up. + /// Get Inventory Collection Ids. Up to 50 Ids can be returned at once (or 250 with response compression enabled). You can + /// use continuation tokens to paginate through results that return greater than the limit. It can take a few seconds for + /// new collection Ids to show up. /// public void GetInventoryCollectionIds(GetInventoryCollectionIdsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -233,6 +247,18 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Inventory/GetInventoryItems", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Get the status of an inventory operation using an OperationToken. You can check on the operation status at anytime + /// within 1 day of the request by passing the TransactionToken to the this API. + /// + public void GetInventoryOperationStatus(GetInventoryOperationStatusRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Inventory/GetInventoryOperationStatus", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Retrieves an item from the public catalog. GetItem does not work off a cache of the Catalog and should be used when /// trying to get recent item updates. However, please note that item references data is cached and may take a few moments @@ -332,10 +358,9 @@ namespace PlayFab } /// - /// Get transaction history for a player. Up to 50 Events can be returned at once. You can use continuation tokens to + /// Get transaction history for a player. Up to 250 Events can be returned at once. You can use continuation tokens to /// paginate through results that return greater than the limit. Getting transaction history has a lower RPS limit than - /// getting a Player's inventory with Player Entities having a limit of 30 requests in 300 seconds and Title Entities having - /// a limit of 100 requests in 10 seconds. + /// getting a Player's inventory with Player Entities having a limit of 30 requests in 300 seconds. /// public void GetTransactionHistory(GetTransactionHistoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -358,7 +383,7 @@ namespace PlayFab } /// - /// Purchase an item or bundle. Up to 3500 stacks of items can be added to a single inventory collection. Stack size is + /// Purchase an item or bundle. Up to 10,000 stacks of items can be added to a single inventory collection. Stack size is /// uncapped. /// public void PurchaseInventoryItems(PurchaseInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -530,8 +555,11 @@ namespace PlayFab } /// - /// Transfer inventory items. When transferring across collections, a 202 response indicates that the transfer is in - /// progress and will complete soon. More information about item transfer scenarios can be found here: + /// Transfer inventory items. When transferring across collections, a 202 response indicates that the transfer did not + /// complete within the timeframe of the request. You can identify the pending operations by looking for OperationStatus = + /// 'InProgress'. You can check on the operation status at anytime within 1 day of the request by passing the + /// TransactionToken to the GetInventoryOperationStatus API. More information about item transfer scenarios can be found + /// here: /// https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/inventory/?tabs=inventory-game-manager#transfer-inventory-items /// public void TransferInventoryItems(TransferInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) diff --git a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyModels.cs b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyModels.cs index b41a75b1f..6c73d3496 100644 --- a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEconomyModels.cs @@ -13,6 +13,10 @@ namespace PlayFab.EconomyModels /// public int? Amount; /// + /// The duration to add to the current item expiration date. + /// + public double? DurationInSeconds; + /// /// The inventory item the operation applies to. /// public InventoryItemReference Item; @@ -152,7 +156,11 @@ namespace PlayFab.EconomyModels /// public List Platforms; /// - /// A set of player entity keys that are allowed to review content. There is a maximum of 64 entities that can be added. + /// The set of configuration that only applies to Ratings and Reviews. + /// + public ReviewConfig Review; + /// + /// A set of player entity keys that are allowed to review content. There is a maximum of 128 entities that can be added. /// public List ReviewerEntities; /// @@ -278,7 +286,8 @@ namespace PlayFab.EconomyModels /// public Dictionary Title; /// - /// The high-level type of the item. The following item types are supported: bundle, catalogItem, currency, store, ugc. + /// The high-level type of the item. The following item types are supported: bundle, catalogItem, currency, store, ugc, + /// subscription. /// public string Type; } @@ -308,6 +317,10 @@ namespace PlayFab.EconomyModels /// public List Amounts; /// + /// The per-unit amount this price can be used to purchase. + /// + public int? UnitAmount; + /// /// The per-unit duration this price can be used to purchase. The maximum duration is 100 years. /// public double? UnitDurationInSeconds; @@ -386,6 +399,15 @@ namespace PlayFab.EconomyModels public List Tags; } + [Serializable] + public class CategoryRatingConfig : PlayFabBaseModel + { + /// + /// Name of the category. + /// + public string Name; + } + public enum ConcernCategory { None, @@ -687,7 +709,8 @@ namespace PlayFab.EconomyModels EH, YE, ZM, - ZW + ZW, + Unknown } /// @@ -976,7 +999,7 @@ namespace PlayFab.EconomyModels public string IdempotencyId; /// /// The operations to run transactionally. The operations will be executed in-order sequentially and will succeed or fail as - /// a batch. Up to 10 operations can be added. + /// a batch. Up to 50 operations can be added. /// public List Operations; } @@ -999,6 +1022,86 @@ namespace PlayFab.EconomyModels public List TransactionIds; } + /// + /// Transfer the specified list of inventory items of an entity's container Id to another entity's container Id. + /// + [Serializable] + public class ExecuteTransferOperationsRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The inventory collection id the request is transferring from. (Default="default") + /// + public string GivingCollectionId; + /// + /// The entity the request is transferring from. Set to the caller by default. + /// + public EntityKey GivingEntity; + /// + /// ETags are used for concurrency checking when updating resources. More information about using ETags can be found here: + /// https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/catalog/etags + /// + public string GivingETag; + /// + /// The idempotency id for the request. + /// + public string IdempotencyId; + /// + /// The transfer operations to run transactionally. The operations will be executed in-order sequentially and will succeed + /// or fail as a batch. Up to 50 operations can be added. + /// + public List Operations; + /// + /// The inventory collection id the request is transferring to. (Default="default") + /// + public string ReceivingCollectionId; + /// + /// The entity the request is transferring to. Set to the caller by default. + /// + public EntityKey ReceivingEntity; + } + + [Serializable] + public class ExecuteTransferOperationsResponse : PlayFabResultCommon + { + /// + /// ETags are used for concurrency checking when updating resources (before transferring from). This value will be empty if + /// the operation has not completed yet. More information about using ETags can be found here: + /// https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/catalog/etags + /// + public string GivingETag; + /// + /// The ids of transactions that occurred as a result of the request's giving action. + /// + public List GivingTransactionIds; + /// + /// The Idempotency ID for this request. + /// + public string IdempotencyId; + /// + /// The transfer operation status. Possible values are 'InProgress' or 'Completed'. If the operation has completed, the + /// response code will be 200. Otherwise, it will be 202. + /// + public string OperationStatus; + /// + /// The token that can be used to get the status of the transfer operation. This will only have a value if OperationStatus + /// is 'InProgress'. + /// + public string OperationToken; + /// + /// ETags are used for concurrency checking when updating resources (before transferring to). This value will be empty if + /// the operation has not completed yet. + /// + public string ReceivingETag; + /// + /// The ids of transactions that occurred as a result of the request's receiving action. + /// + public List ReceivingTransactionIds; + } + [Serializable] public class FileConfig : PlayFabBaseModel { @@ -1269,6 +1372,35 @@ namespace PlayFab.EconomyModels public List Items; } + /// + /// Get the status of an Inventory Operation using an OperationToken. + /// + [Serializable] + public class GetInventoryOperationStatusRequest : PlayFabRequestCommon + { + /// + /// The id of the entity's collection to perform this action on. (Default="default") + /// + public string CollectionId; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The entity to perform this action on. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetInventoryOperationStatusResponse : PlayFabResultCommon + { + /// + /// The inventory operation status. + /// + public string OperationStatus; + } + /// /// Given an item, return a set of bundles and stores containing the item. /// @@ -1572,10 +1704,18 @@ namespace PlayFab.EconomyModels /// public EntityKey Entity; /// - /// An OData filter used to refine the TransactionHistory. Transaction property 'timestamp' can be used in the filter. For - /// example: "timestamp ge 'timestamp ge'" By default, a 6 month timespan from the current date is used. + /// An OData filter used to refine the TransactionHistory. Transaction properties 'timestamp', 'transactionid', 'apiname' + /// and 'operationtype' can be used in the filter. Properties 'transactionid', 'apiname', and 'operationtype' cannot be used + /// together in a single request. The 'timestamp' property can be combined with 'apiname' or 'operationtype' in a single + /// request. For example: "timestamp ge 2023-06-20T23:30Z" or "transactionid eq '10'" or "(timestamp ge 2023-06-20T23:30Z) + /// and (apiname eq 'AddInventoryItems')". By default, a 6 month timespan from the current date is used. /// public string Filter; + /// + /// An OData orderby to order TransactionHistory results. The only supported values are 'timestamp asc' or 'timestamp desc'. + /// Default orderby is 'timestamp asc' + /// + public string OrderBy; } [Serializable] @@ -1767,6 +1907,16 @@ namespace PlayFab.EconomyModels { } + [Serializable] + public class Permissions : PlayFabBaseModel + { + /// + /// The list of ids of Segments that the a player can be in to purchase from the store. When a value is provided, the player + /// must be in at least one of the segments listed for the purchase to be allowed. + /// + public List SegmentIds; + } + /// /// The call kicks off a workflow to publish the item to the public catalog. The Publish Status API should be used to /// monitor the publish job. @@ -1931,6 +2081,11 @@ namespace PlayFab.EconomyModels { } + [Serializable] + public class PurchaseOverridesInfo : PlayFabBaseModel + { + } + [Serializable] public class PurchasePriceAmount : PlayFabBaseModel { @@ -1981,6 +2136,11 @@ namespace PlayFab.EconomyModels public int? TotalCount; } + [Serializable] + public class RealMoneyPriceDetails : PlayFabBaseModel + { + } + /// /// Redeem items from the Apple App Store. /// @@ -2086,7 +2246,8 @@ namespace PlayFab.EconomyModels /// public EntityKey Entity; /// - /// Xbox Token used for delegated business partner authentication. + /// Xbox Token used for delegated business partner authentication. Token provided by the Xbox Live SDK method + /// GetTokenAndSignatureAsync("POST", "https://playfabapi.com/", ""). /// public string XboxToken; } @@ -2156,7 +2317,7 @@ namespace PlayFab.EconomyModels public class RedeemPlayStationStoreInventoryItemsRequest : PlayFabRequestCommon { /// - /// Authorization code provided by the PlayStation OAuth provider. + /// Auth code returned by PlayStation :tm: Network OAuth system. /// public string AuthorizationCode; /// @@ -2172,6 +2333,10 @@ namespace PlayFab.EconomyModels /// public EntityKey Entity; /// + /// Redirect URI supplied to PlayStation :tm: Network when requesting an auth code. + /// + public string RedirectUri; + /// /// Optional Service Label to pass into the request. /// public string ServiceLabel; @@ -2243,27 +2408,27 @@ namespace PlayFab.EconomyModels /// public string FailureDetails; /// + /// The Marketplace Alternate ID being redeemed. + /// + public string MarketplaceAlternateId; + /// /// The transaction id in the external marketplace. /// public string MarketplaceTransactionId; - /// - /// The ID of the offer being redeemed. - /// - public string OfferId; } [Serializable] public class RedemptionSuccess : PlayFabBaseModel { + /// + /// The Marketplace Alternate ID being redeemed. + /// + public string MarketplaceAlternateId; /// /// The transaction id in the external marketplace. /// public string MarketplaceTransactionId; /// - /// The ID of the offer being redeemed. - /// - public string OfferId; - /// /// The timestamp for when the redeem was completed. /// public DateTime SuccessTimestamp; @@ -2347,6 +2512,10 @@ namespace PlayFab.EconomyModels [Serializable] public class Review : PlayFabBaseModel { + /// + /// The star rating associated with each selected category in this review. + /// + public Dictionary CategoryRatings; /// /// The number of negative helpfulness votes for this review. /// @@ -2401,6 +2570,15 @@ namespace PlayFab.EconomyModels public string Title; } + [Serializable] + public class ReviewConfig : PlayFabBaseModel + { + /// + /// A set of categories that can be applied toward ratings and reviews. + /// + public List CategoryRatings; + } + [Serializable] public class ReviewItemRequest : PlayFabRequestCommon { @@ -2482,6 +2660,10 @@ namespace PlayFab.EconomyModels /// public string Filter; /// + /// The locale to be returned in the result. + /// + public string Language; + /// /// An OData orderBy used to order the results of the search query. For example: "rating/average asc" /// public string OrderBy; @@ -2551,6 +2733,10 @@ namespace PlayFab.EconomyModels /// public FilterOptions FilterOptions; /// + /// The permissions that control which players can purchase from the store. + /// + public Permissions Permissions; + /// /// The global prices utilized in the store. These options are mutually exclusive with price options in item references. /// public CatalogPriceOptionsOverride PriceOptionsOverride; @@ -2775,6 +2961,10 @@ namespace PlayFab.EconomyModels /// public double? DurationInSeconds; /// + /// The friendly id of the items in this transaction. + /// + public string ItemFriendlyId; + /// /// The item id of the items in this transaction. /// public string ItemId; @@ -2795,6 +2985,10 @@ namespace PlayFab.EconomyModels [Serializable] public class TransactionPurchaseDetails : PlayFabBaseModel { + /// + /// The friendly id of the Store the item was purchased from or null. + /// + public string StoreFriendlyId; /// /// The id of the Store the item was purchased from or null. /// @@ -2944,6 +3138,16 @@ namespace PlayFab.EconomyModels /// public string IdempotencyId; /// + /// The transfer operation status. Possible values are 'InProgress' or 'Completed'. If the operation has completed, the + /// response code will be 200. Otherwise, it will be 202. + /// + public string OperationStatus; + /// + /// The token that can be used to get the status of the transfer operation. This will only have a value if OperationStatus + /// is 'InProgress'. + /// + public string OperationToken; + /// /// The ids of transactions that occurred as a result of the request's receiving action. /// public List ReceivingTransactionIds; diff --git a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEvents.cs index 608b894fb..f9570519a 100644 --- a/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Economy/PlayFabEvents.cs @@ -21,6 +21,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnEconomyDeleteItemResultEvent; public event PlayFabRequestEvent OnEconomyExecuteInventoryOperationsRequestEvent; public event PlayFabResultEvent OnEconomyExecuteInventoryOperationsResultEvent; + public event PlayFabRequestEvent OnEconomyExecuteTransferOperationsRequestEvent; + public event PlayFabResultEvent OnEconomyExecuteTransferOperationsResultEvent; public event PlayFabRequestEvent OnEconomyGetCatalogConfigRequestEvent; public event PlayFabResultEvent OnEconomyGetCatalogConfigResultEvent; public event PlayFabRequestEvent OnEconomyGetDraftItemRequestEvent; @@ -35,6 +37,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnEconomyGetInventoryCollectionIdsResultEvent; public event PlayFabRequestEvent OnEconomyGetInventoryItemsRequestEvent; public event PlayFabResultEvent OnEconomyGetInventoryItemsResultEvent; + public event PlayFabRequestEvent OnEconomyGetInventoryOperationStatusRequestEvent; + public event PlayFabResultEvent OnEconomyGetInventoryOperationStatusResultEvent; public event PlayFabRequestEvent OnEconomyGetItemRequestEvent; public event PlayFabResultEvent OnEconomyGetItemResultEvent; public event PlayFabRequestEvent OnEconomyGetItemContainersRequestEvent; diff --git a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEvents.cs index fcc00a3e3..ced127966 100644 --- a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEvents.cs @@ -5,6 +5,16 @@ namespace PlayFab.Events { public partial class PlayFabEvents { + public event PlayFabRequestEvent OnEventsCreateTelemetryKeyRequestEvent; + public event PlayFabResultEvent OnEventsCreateTelemetryKeyResultEvent; + public event PlayFabRequestEvent OnEventsDeleteTelemetryKeyRequestEvent; + public event PlayFabResultEvent OnEventsDeleteTelemetryKeyResultEvent; + public event PlayFabRequestEvent OnEventsGetTelemetryKeyRequestEvent; + public event PlayFabResultEvent OnEventsGetTelemetryKeyResultEvent; + public event PlayFabRequestEvent OnEventsListTelemetryKeysRequestEvent; + public event PlayFabResultEvent OnEventsListTelemetryKeysResultEvent; + public event PlayFabRequestEvent OnEventsSetTelemetryKeyActiveRequestEvent; + public event PlayFabResultEvent OnEventsSetTelemetryKeyActiveResultEvent; public event PlayFabRequestEvent OnEventsWriteEventsRequestEvent; public event PlayFabResultEvent OnEventsWriteEventsResultEvent; public event PlayFabRequestEvent OnEventsWriteTelemetryEventsRequestEvent; diff --git a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsAPI.cs b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsAPI.cs index b5c70e447..46ecbc6d9 100644 --- a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsAPI.cs @@ -33,6 +33,71 @@ namespace PlayFab PlayFabSettings.staticPlayer.ForgetAllCredentials(); } + /// + /// Creates a new telemetry key for the title. + /// + public static void CreateTelemetryKey(CreateTelemetryKeyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Event/CreateTelemetryKey", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes a telemetry key configured for the title. + /// + public static void DeleteTelemetryKey(DeleteTelemetryKeyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Event/DeleteTelemetryKey", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets information about a telemetry key configured for the title. + /// + public static void GetTelemetryKey(GetTelemetryKeyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Event/GetTelemetryKey", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Lists all telemetry keys configured for the title. + /// + public static void ListTelemetryKeys(ListTelemetryKeysRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Event/ListTelemetryKeys", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Sets a telemetry key to the active or deactivated state. + /// + public static void SetTelemetryKeyActive(SetTelemetryKeyActiveRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Event/SetTelemetryKeyActive", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Write batches of entity based events to PlayStream. The namespace of the Event must be 'custom' or start with 'custom.'. /// @@ -60,7 +125,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Event/WriteTelemetryEvents", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Write batches of entity based events to as Telemetry events (bypass PlayStream) using a Telemetry Key. The namespace must be 'custom' or start + /// with 'custom.' + /// + public static void WriteTelemetryEventsWithTelemetryKey(WriteEventsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsTelemetryKeyProvided()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must provide a telemetry key to call this method"); + PlayFabHttp.MakeApiCall("/Event/WriteTelemetryEvents", request, AuthType.TelemetryKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + } } diff --git a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsInstanceAPI.cs index d07b2ce2c..63d0e1042 100644 --- a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsInstanceAPI.cs @@ -52,6 +52,61 @@ namespace PlayFab } } + /// + /// Creates a new telemetry key for the title. + /// + public void CreateTelemetryKey(CreateTelemetryKeyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Event/CreateTelemetryKey", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes a telemetry key configured for the title. + /// + public void DeleteTelemetryKey(DeleteTelemetryKeyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Event/DeleteTelemetryKey", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets information about a telemetry key configured for the title. + /// + public void GetTelemetryKey(GetTelemetryKeyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Event/GetTelemetryKey", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Lists all telemetry keys configured for the title. + /// + public void ListTelemetryKeys(ListTelemetryKeysRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Event/ListTelemetryKeys", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Sets a telemetry key to the active or deactivated state. + /// + public void SetTelemetryKeyActive(SetTelemetryKeyActiveRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Event/SetTelemetryKeyActive", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Write batches of entity based events to PlayStream. The namespace of the Event must be 'custom' or start with 'custom.'. /// @@ -74,7 +129,19 @@ namespace PlayFab if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); PlayFabHttp.MakeApiCall("/Event/WriteTelemetryEvents", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Write batches of entity based events to as Telemetry events (bypass PlayStream) using a Telemetry Key. The namespace must be 'custom' or start + /// with 'custom.' + /// + public void WriteTelemetryEventsWithTelemetryKey(WriteEventsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsTelemetryKeyProvided()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must provide a telemetry key to call this method"); + PlayFabHttp.MakeApiCall("/Event/WriteTelemetryEvents", request, AuthType.TelemetryKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + } } diff --git a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsModels.cs b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsModels.cs index 131795fe4..4375615e8 100644 --- a/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Events/PlayFabEventsModels.cs @@ -5,6 +5,58 @@ using PlayFab.SharedModels; namespace PlayFab.EventsModels { + [Serializable] + public class CreateTelemetryKeyRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// The name of the new key. Telemetry key names must be unique within the scope of the title. + /// + public string KeyName; + } + + [Serializable] + public class CreateTelemetryKeyResponse : PlayFabResultCommon + { + /// + /// Details about the newly created telemetry key. + /// + public TelemetryKeyDetails NewKeyDetails; + } + + [Serializable] + public class DeleteTelemetryKeyRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// The name of the key to delete. + /// + public string KeyName; + } + + [Serializable] + public class DeleteTelemetryKeyResponse : PlayFabResultCommon + { + /// + /// Indicates whether or not the key was deleted. If false, no key with that name existed. + /// + public bool WasKeyDeleted; + } + /// /// Combined entity type and ID structure which uniquely identifies a single entity. /// @@ -63,6 +115,113 @@ namespace PlayFab.EventsModels public string PayloadJSON; } + [Serializable] + public class GetTelemetryKeyRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// The name of the key to retrieve. + /// + public string KeyName; + } + + [Serializable] + public class GetTelemetryKeyResponse : PlayFabResultCommon + { + /// + /// Details about the requested telemetry key. + /// + public TelemetryKeyDetails KeyDetails; + } + + [Serializable] + public class ListTelemetryKeysRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class ListTelemetryKeysResponse : PlayFabResultCommon + { + /// + /// The telemetry keys configured for the title. + /// + public List KeyDetails; + } + + [Serializable] + public class SetTelemetryKeyActiveRequest : PlayFabRequestCommon + { + /// + /// Whether to set the key to active (true) or deactivated (false). + /// + public bool Active; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// The name of the key to update. + /// + public string KeyName; + } + + [Serializable] + public class SetTelemetryKeyActiveResponse : PlayFabResultCommon + { + /// + /// The most current details about the telemetry key that was to be updated. + /// + public TelemetryKeyDetails KeyDetails; + /// + /// Indicates whether or not the key was updated. If false, the key was already in the desired state. + /// + public bool WasKeyUpdated; + } + + [Serializable] + public class TelemetryKeyDetails : PlayFabBaseModel + { + /// + /// When the key was created. + /// + public DateTime CreateTime; + /// + /// Whether or not the key is currently active. Deactivated keys cannot be used for telemetry ingestion. + /// + public bool IsActive; + /// + /// The key that can be distributed to clients for use during telemetry ingestion. + /// + public string KeyValue; + /// + /// When the key was last updated. + /// + public DateTime LastUpdateTime; + /// + /// The name of the key. Telemetry key names are unique within the scope of the title. + /// + public string Name; + } + [Serializable] public class WriteEventsRequest : PlayFabRequestCommon { @@ -71,7 +230,7 @@ namespace PlayFab.EventsModels /// public Dictionary CustomTags; /// - /// Collection of events to write to PlayStream. + /// The collection of events to write. Up to 200 events can be written per request. /// public List Events; } diff --git a/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerAPI.cs b/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerAPI.cs index 836cd922a..6265d304c 100644 --- a/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerAPI.cs @@ -27,7 +27,7 @@ namespace PlayFab /// /// Validates a user with the PlayFab service /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public static void AuthUser(AuthUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; @@ -41,7 +41,7 @@ namespace PlayFab /// /// Informs the PlayFab game server hosting service that the indicated user has joined the Game Server Instance specified /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public static void PlayerJoined(PlayerJoinedRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; @@ -55,7 +55,7 @@ namespace PlayFab /// /// Informs the PlayFab game server hosting service that the indicated user has left the Game Server Instance specified /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public static void PlayerLeft(PlayerLeftRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; @@ -70,7 +70,7 @@ namespace PlayFab /// Retrieves the relevant details for a specified user, which the external match-making service can then use to compute /// effective matches /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public static void UserInfo(UserInfoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; diff --git a/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerInstanceAPI.cs index 6126abe9c..b16f710d6 100644 --- a/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Matchmaker/PlayFabMatchmakerInstanceAPI.cs @@ -46,7 +46,7 @@ namespace PlayFab /// /// Validates a user with the PlayFab service /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public void AuthUser(AuthUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; @@ -58,7 +58,7 @@ namespace PlayFab /// /// Informs the PlayFab game server hosting service that the indicated user has joined the Game Server Instance specified /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public void PlayerJoined(PlayerJoinedRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; @@ -70,7 +70,7 @@ namespace PlayFab /// /// Informs the PlayFab game server hosting service that the indicated user has left the Game Server Instance specified /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public void PlayerLeft(PlayerLeftRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; @@ -83,7 +83,7 @@ namespace PlayFab /// Retrieves the relevant details for a specified user, which the external match-making service can then use to compute /// effective matches /// - [Obsolete("No longer available", false)] + [Obsolete("No longer available", true)] public void UserInfo(UserInfoRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; diff --git a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabEvents.cs index 6ee4c2a16..466077769 100644 --- a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabEvents.cs @@ -49,6 +49,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnMultiplayerDeleteLobbyResultEvent; public event PlayFabRequestEvent OnMultiplayerDeleteRemoteUserRequestEvent; public event PlayFabResultEvent OnMultiplayerDeleteRemoteUserResultEvent; + public event PlayFabRequestEvent OnMultiplayerDeleteSecretRequestEvent; + public event PlayFabResultEvent OnMultiplayerDeleteSecretResultEvent; public event PlayFabRequestEvent OnMultiplayerEnableMultiplayerServersForTitleRequestEvent; public event PlayFabResultEvent OnMultiplayerEnableMultiplayerServersForTitleResultEvent; public event PlayFabRequestEvent OnMultiplayerFindFriendLobbiesRequestEvent; @@ -97,10 +99,14 @@ namespace PlayFab.Events public event PlayFabResultEvent OnMultiplayerJoinArrangedLobbyResultEvent; public event PlayFabRequestEvent OnMultiplayerJoinLobbyRequestEvent; public event PlayFabResultEvent OnMultiplayerJoinLobbyResultEvent; + public event PlayFabRequestEvent OnMultiplayerJoinLobbyAsServerRequestEvent; + public event PlayFabResultEvent OnMultiplayerJoinLobbyAsServerResultEvent; public event PlayFabRequestEvent OnMultiplayerJoinMatchmakingTicketRequestEvent; public event PlayFabResultEvent OnMultiplayerJoinMatchmakingTicketResultEvent; public event PlayFabRequestEvent OnMultiplayerLeaveLobbyRequestEvent; public event PlayFabResultEvent OnMultiplayerLeaveLobbyResultEvent; + public event PlayFabRequestEvent OnMultiplayerLeaveLobbyAsServerRequestEvent; + public event PlayFabResultEvent OnMultiplayerLeaveLobbyAsServerResultEvent; public event PlayFabRequestEvent OnMultiplayerListArchivedMultiplayerServersRequestEvent; public event PlayFabResultEvent OnMultiplayerListArchivedMultiplayerServersResultEvent; public event PlayFabRequestEvent OnMultiplayerListAssetSummariesRequestEvent; @@ -125,6 +131,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnMultiplayerListPartyQosServersResultEvent; public event PlayFabRequestEvent OnMultiplayerListQosServersForTitleRequestEvent; public event PlayFabResultEvent OnMultiplayerListQosServersForTitleResultEvent; + public event PlayFabRequestEvent OnMultiplayerListSecretSummariesRequestEvent; + public event PlayFabResultEvent OnMultiplayerListSecretSummariesResultEvent; public event PlayFabRequestEvent OnMultiplayerListServerBackfillTicketsForPlayerRequestEvent; public event PlayFabResultEvent OnMultiplayerListServerBackfillTicketsForPlayerResultEvent; public event PlayFabRequestEvent OnMultiplayerListTitleMultiplayerServersQuotaChangesRequestEvent; @@ -137,6 +145,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnMultiplayerRemoveMemberResultEvent; public event PlayFabRequestEvent OnMultiplayerRequestMultiplayerServerRequestEvent; public event PlayFabResultEvent OnMultiplayerRequestMultiplayerServerResultEvent; + public event PlayFabRequestEvent OnMultiplayerRequestPartyServiceRequestEvent; + public event PlayFabResultEvent OnMultiplayerRequestPartyServiceResultEvent; public event PlayFabRequestEvent OnMultiplayerRolloverContainerRegistryCredentialsRequestEvent; public event PlayFabResultEvent OnMultiplayerRolloverContainerRegistryCredentialsResultEvent; public event PlayFabRequestEvent OnMultiplayerSetMatchmakingQueueRequestEvent; @@ -163,8 +173,12 @@ namespace PlayFab.Events public event PlayFabResultEvent OnMultiplayerUpdateBuildRegionsResultEvent; public event PlayFabRequestEvent OnMultiplayerUpdateLobbyRequestEvent; public event PlayFabResultEvent OnMultiplayerUpdateLobbyResultEvent; + public event PlayFabRequestEvent OnMultiplayerUpdateLobbyAsServerRequestEvent; + public event PlayFabResultEvent OnMultiplayerUpdateLobbyAsServerResultEvent; public event PlayFabRequestEvent OnMultiplayerUploadCertificateRequestEvent; public event PlayFabResultEvent OnMultiplayerUploadCertificateResultEvent; + public event PlayFabRequestEvent OnMultiplayerUploadSecretRequestEvent; + public event PlayFabResultEvent OnMultiplayerUploadSecretResultEvent; } } #endif diff --git a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerAPI.cs b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerAPI.cs index d4b443205..fd344674a 100644 --- a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerAPI.cs @@ -10,6 +10,8 @@ namespace PlayFab /// /// API methods for managing multiplayer servers. API methods for managing parties. The lobby service helps players group /// together to play multiplayer games. It is often used as a rendezvous point for players to share connection information. + /// The TrueSkill service helps titles to estimate a player's skill based on their match results. The player skill values + /// from this service are commonly used by a matchmaking service to provide players with balanced matches. /// public static partial class PlayFabMultiplayerAPI { @@ -322,6 +324,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/DeleteRemoteUser", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Deletes a multiplayer server game secret. + /// + public static void DeleteSecret(DeleteSecretRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/MultiplayerServer/DeleteSecret", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Enables the multiplayer server feature for a title. /// @@ -636,6 +651,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Lobby/JoinLobby", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Preview: Join a lobby as a server entity. This is restricted to client lobbies which are using connections. + /// + public static void JoinLobbyAsServer(JoinLobbyAsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Lobby/JoinLobbyAsServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Join a matchmaking ticket. /// @@ -662,6 +690,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Lobby/LeaveLobby", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Preview: Request for server to leave a lobby. This is restricted to client owned lobbies which are using connections. + /// + public static void LeaveLobbyAsServer(LeaveLobbyAsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Lobby/LeaveLobbyAsServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Lists archived multiplayer server sessions for a build. /// @@ -820,6 +861,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/ListQosServersForTitle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Lists multiplayer server game secrets for a title. + /// + public static void ListSecretSummaries(ListSecretSummariesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/MultiplayerServer/ListSecretSummaries", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// List all server backfill ticket Ids the user is a member of. /// @@ -899,6 +953,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/RequestMultiplayerServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Request a party session. + /// + public static void RequestPartyService(RequestPartyServiceRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Party/RequestPartyService", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Rolls over the credentials to the container registry. /// @@ -1068,6 +1135,21 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Lobby/UpdateLobby", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Preview: Update fields related to a joined server in the lobby the server is in. Servers can keep a lobby from expiring + /// by being the one to "update" the lobby in some way. Servers have no impact on last member leave/last member disconnect + /// behavior. + /// + public static void UpdateLobbyAsServer(UpdateLobbyAsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Lobby/UpdateLobbyAsServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Uploads a multiplayer server game certificate. /// @@ -1081,6 +1163,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/UploadCertificate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Uploads a multiplayer server game secret. + /// + public static void UploadSecret(UploadSecretRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/MultiplayerServer/UploadSecret", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + } } diff --git a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerInstanceAPI.cs index d543df948..9d6c5519e 100644 --- a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerInstanceAPI.cs @@ -11,6 +11,8 @@ namespace PlayFab /// /// API methods for managing multiplayer servers. API methods for managing parties. The lobby service helps players group /// together to play multiplayer games. It is often used as a rendezvous point for players to share connection information. + /// The TrueSkill service helps titles to estimate a player's skill based on their match results. The player skill values + /// from this service are commonly used by a matchmaking service to provide players with balanced matches. /// public partial class PlayFabMultiplayerInstanceAPI : IPlayFabInstanceApi { @@ -297,6 +299,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/DeleteRemoteUser", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Deletes a multiplayer server game secret. + /// + public void DeleteSecret(DeleteSecretRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/MultiplayerServer/DeleteSecret", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Enables the multiplayer server feature for a title. /// @@ -563,6 +576,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Lobby/JoinLobby", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Preview: Join a lobby as a server entity. This is restricted to client lobbies which are using connections. + /// + public void JoinLobbyAsServer(JoinLobbyAsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Lobby/JoinLobbyAsServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Join a matchmaking ticket. /// @@ -585,6 +609,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Lobby/LeaveLobby", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Preview: Request for server to leave a lobby. This is restricted to client owned lobbies which are using connections. + /// + public void LeaveLobbyAsServer(LeaveLobbyAsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Lobby/LeaveLobbyAsServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Lists archived multiplayer server sessions for a build. /// @@ -719,6 +754,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/ListQosServersForTitle", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Lists multiplayer server game secrets for a title. + /// + public void ListSecretSummaries(ListSecretSummariesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/MultiplayerServer/ListSecretSummaries", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// List all server backfill ticket Ids the user is a member of. /// @@ -786,6 +832,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/RequestMultiplayerServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Request a party session. + /// + public void RequestPartyService(RequestPartyServiceRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Party/RequestPartyService", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Rolls over the credentials to the container registry. /// @@ -929,6 +986,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Lobby/UpdateLobby", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Preview: Update fields related to a joined server in the lobby the server is in. Servers can keep a lobby from expiring + /// by being the one to "update" the lobby in some way. Servers have no impact on last member leave/last member disconnect + /// behavior. + /// + public void UpdateLobbyAsServer(UpdateLobbyAsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Lobby/UpdateLobbyAsServer", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Uploads a multiplayer server game certificate. /// @@ -940,6 +1010,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/MultiplayerServer/UploadCertificate", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Uploads a multiplayer server game secret. + /// + public void UploadSecret(UploadSecretRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/MultiplayerServer/UploadSecret", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + } } diff --git a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerModels.cs b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerModels.cs index 824d58b60..8365cde67 100644 --- a/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Multiplayer/PlayFabMultiplayerModels.cs @@ -94,7 +94,10 @@ namespace PlayFab.MultiplayerModels WestUs2, CentralIndia, UaeNorth, - UkSouth + UkSouth, + SwedenCentral, + CanadaCentral, + MexicoCentral } public enum AzureVmFamily @@ -107,6 +110,7 @@ namespace PlayFab.MultiplayerModels Fsv2, Dasv4, Dav4, + Dadsv5, Eav4, Easv4, Ev4, @@ -116,7 +120,9 @@ namespace PlayFab.MultiplayerModels NCasT4_v3, Ddv4, Ddsv4, - HBv3 + HBv3, + Ddv5, + Ddsv5 } public enum AzureVmSize @@ -155,6 +161,10 @@ namespace PlayFab.MultiplayerModels Standard_D4a_v4, Standard_D8a_v4, Standard_D16a_v4, + Standard_D2ads_v5, + Standard_D4ads_v5, + Standard_D8ads_v5, + Standard_D16ads_v5, Standard_E2a_v4, Standard_E4a_v4, Standard_E8a_v4, @@ -185,7 +195,17 @@ namespace PlayFab.MultiplayerModels Standard_HB120_32rs_v3, Standard_HB120_64rs_v3, Standard_HB120_96rs_v3, - Standard_HB120rs_v3 + Standard_HB120rs_v3, + Standard_D2d_v5, + Standard_D4d_v5, + Standard_D8d_v5, + Standard_D16d_v5, + Standard_D32d_v5, + Standard_D2ds_v5, + Standard_D4ds_v5, + Standard_D8ds_v5, + Standard_D16ds_v5, + Standard_D32ds_v5 } [Serializable] @@ -611,6 +631,10 @@ namespace PlayFab.MultiplayerModels /// public List GameCertificateReferences; /// + /// The game secrets for the build. + /// + public List GameSecretReferences; + /// /// The Linux instrumentation configuration for the build. /// public LinuxInstrumentationConfiguration LinuxInstrumentationConfiguration; @@ -640,12 +664,6 @@ namespace PlayFab.MultiplayerModels /// public ServerResourceConstraintParams ServerResourceConstraints; /// - /// DEPRECATED - this is always true. Assets are downloaded and uncompressed in memory, without the compressedversion being - /// written first to disc. - /// - [Obsolete("Use '' instead", false)] - public bool? UseStreamingForAssetDownloads; - /// /// The VM size to create the build on. /// public AzureVmSize? VmSize; @@ -696,6 +714,10 @@ namespace PlayFab.MultiplayerModels /// public List GameCertificateReferences; /// + /// The game secrets for the build. + /// + public List GameSecretReferences; + /// /// The Linux instrumentation configuration for this build. /// public LinuxInstrumentationConfiguration LinuxInstrumentationConfiguration; @@ -778,6 +800,10 @@ namespace PlayFab.MultiplayerModels /// public List GameCertificateReferences; /// + /// The game secrets for the build. + /// + public List GameSecretReferences; + /// /// The directory containing the game executable. This would be the start path of the game assets that contain the main game /// server executable. If not provided, a best effort will be made to extract it from the start game command. /// @@ -816,12 +842,6 @@ namespace PlayFab.MultiplayerModels /// public string StartMultiplayerServerCommand; /// - /// DEPRECATED - this is always true. Assets are downloaded and uncompressed in memory, without the compressedversion being - /// written first to disc. - /// - [Obsolete("Use '' instead", false)] - public bool? UseStreamingForAssetDownloads; - /// /// The VM size to create the build on. /// public AzureVmSize? VmSize; @@ -868,6 +888,10 @@ namespace PlayFab.MultiplayerModels /// public List GameCertificateReferences; /// + /// The game secrets for the build. + /// + public List GameSecretReferences; + /// /// The directory containing the game executable. This would be the start path of the game assets that contain the main game /// server executable. If not provided, a best effort will be made to extract it from the start game command. /// @@ -956,12 +980,16 @@ namespace PlayFab.MultiplayerModels /// public List GameCertificateReferences; /// + /// The game secrets for the build. + /// + public List GameSecretReferences; + /// /// The working directory for the game process. If this is not provided, the working directory will be set based on the /// mount path of the game server executable. /// public string GameWorkingDirectory; /// - /// The instrumentation configuration for the build. + /// The instrumentation configuration for the Build. Used only if it is a Windows Build. /// public InstrumentationConfiguration InstrumentationConfiguration; /// @@ -970,6 +998,10 @@ namespace PlayFab.MultiplayerModels /// public bool? IsOSPreview; /// + /// The Linux instrumentation configuration for the Build. Used only if it is a Linux Build. + /// + public LinuxInstrumentationConfiguration LinuxInstrumentationConfiguration; + /// /// Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through /// Game Server SDK (GSDK).Constraints: Maximum number of keys: 30, Maximum key length: 50, Maximum value length: 100 /// @@ -1000,12 +1032,6 @@ namespace PlayFab.MultiplayerModels /// public string StartMultiplayerServerCommand; /// - /// DEPRECATED - this is always true. Assets are downloaded and uncompressed in memory, without the compressedversion being - /// written first to disc. - /// - [Obsolete("Use '' instead", false)] - public bool? UseStreamingForAssetDownloads; - /// /// The VM size to create the build on. /// public AzureVmSize? VmSize; @@ -1048,6 +1074,10 @@ namespace PlayFab.MultiplayerModels /// public List GameCertificateReferences; /// + /// The game secrets for the build. + /// + public List GameSecretReferences; + /// /// The working directory for the game process. If this is not provided, the working directory will be set based on the /// mount path of the game server executable. /// @@ -1062,6 +1092,10 @@ namespace PlayFab.MultiplayerModels /// public bool? IsOSPreview; /// + /// The Linux instrumentation configuration for this build. + /// + public LinuxInstrumentationConfiguration LinuxInstrumentationConfiguration; + /// /// The metadata of the build. /// public Dictionary Metadata; @@ -1128,7 +1162,7 @@ namespace PlayFab.MultiplayerModels /// public Dictionary CustomTags; /// - /// The private key-value pairs which are only visible to members of the lobby. At most 30 key-value pairs may be stored + /// The private key-value pairs which are visible to all entities in the lobby. At most 30 key-value pairs may be stored /// here, keys are limited to 30 characters and values to 1000. The total size of all lobbyData values may not exceed 4096 /// bytes. Keys are case sensitive. /// @@ -1611,6 +1645,22 @@ namespace PlayFab.MultiplayerModels public string VmId; } + /// + /// Deletes a multiplayer server game secret. + /// + [Serializable] + public class DeleteSecretRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The name of the secret. + /// + public string Name; + } + [Serializable] public class DifferenceRule : PlayFabBaseModel { @@ -1660,6 +1710,19 @@ namespace PlayFab.MultiplayerModels public double Weight; } + public enum DirectPeerConnectivityOptions + { + None, + SamePlatformType, + DifferentPlatformType, + AnyPlatformType, + SameEntityLoginProvider, + DifferentEntityLoginProvider, + AnyEntityLoginProvider, + AnyPlatformTypeAndEntityLoginProvider, + OnlyServers + } + [Serializable] public class DynamicStandbySettings : PlayFabBaseModel { @@ -1756,16 +1819,6 @@ namespace PlayFab.MultiplayerModels /// public Dictionary CustomTags; /// - /// Controls whether this query should link to friends made on the Facebook network. Defaults to false - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? ExcludeFacebookFriends; - /// - /// Controls whether this query should link to friends made on the Steam network. Defaults to false - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? ExcludeSteamFriends; - /// /// Indicates which other platforms' friends this query should link to. /// public ExternalFriendSources? ExternalPlatformFriends; @@ -1775,15 +1828,16 @@ namespace PlayFab.MultiplayerModels /// (less than). The left-hand side of each OData logical expression should be either a search property key (e.g. /// string_key1, number_key3, etc) or one of the pre-defined search keys all of which must be prefixed by "lobby/": /// lobby/memberCount (number of players in a lobby), lobby/maxMemberCount (maximum number of players allowed in a lobby), - /// lobby/membershipLock (must equal 'Unlocked' or 'Locked'), lobby/amOwner (required to equal "true"), lobby/amMember - /// (required to equal "true"). + /// lobby/memberCountRemaining (remaining number of players who can be allowed in a lobby), lobby/membershipLock (must equal + /// 'Unlocked' or 'Locked'), lobby/amOwner (required to equal "true"), lobby/amMember (required to equal "true"). /// public string Filter; /// /// OData style string that contains sorting for this query in either ascending ("asc") or descending ("desc") order. - /// OrderBy clauses are of the form "number_key1 asc" or the pre-defined search key "lobby/memberCount asc" and - /// "lobby/maxMemberCount desc". To sort by closest, a moniker `distance{number_key1 = 5}` can be used to sort by distance - /// from the given number. This field only supports either one sort clause or one distance clause. + /// OrderBy clauses are of the form "number_key1 asc" or the pre-defined search key "lobby/memberCount asc", + /// "lobby/memberCountRemaining desc" and "lobby/maxMemberCount desc". To sort by closest, a moniker `distance{number_key1 = + /// 5}` can be used to sort by distance from the given number. This field only supports either one sort clause or one + /// distance clause. /// public string OrderBy; /// @@ -1825,15 +1879,16 @@ namespace PlayFab.MultiplayerModels /// (less than). The left-hand side of each OData logical expression should be either a search property key (e.g. /// string_key1, number_key3, etc) or one of the pre-defined search keys all of which must be prefixed by "lobby/": /// lobby/memberCount (number of players in a lobby), lobby/maxMemberCount (maximum number of players allowed in a lobby), - /// lobby/membershipLock (must equal 'Unlocked' or 'Locked'), lobby/amOwner (required to equal "true"), lobby/amMember - /// (required to equal "true"). + /// lobby/memberCountRemaining (remaining number of players who can be allowed in a lobby), lobby/membershipLock (must equal + /// 'Unlocked' or 'Locked'), lobby/amOwner (required to equal "true"), lobby/amMember (required to equal "true"). /// public string Filter; /// /// OData style string that contains sorting for this query in either ascending ("asc") or descending ("desc") order. - /// OrderBy clauses are of the form "number_key1 asc" or the pre-defined search key "lobby/memberCount asc" and - /// "lobby/maxMemberCount desc". To sort by closest, a moniker `distance{number_key1 = 5}` can be used to sort by distance - /// from the given number. This field only supports either one sort clause or one distance clause. + /// OrderBy clauses are of the form "number_key1 asc" or the pre-defined search key "lobby/memberCount asc", + /// "lobby/memberCountRemaining desc" and "lobby/maxMemberCount desc". To sort by closest, a moniker `distance{number_key1 = + /// 5}` can be used to sort by distance from the given number. This field only supports either one sort clause or one + /// distance clause. /// public string OrderBy; /// @@ -1925,6 +1980,24 @@ namespace PlayFab.MultiplayerModels public string Name; } + [Serializable] + public class GameSecretReference : PlayFabBaseModel + { + /// + /// The name of the game secret. This name should match the name of a secret that was previously added to this title. + /// + public string Name; + } + + [Serializable] + public class GameSecretReferenceParams : PlayFabBaseModel + { + /// + /// The name of the game secret. This name should match the name of a secret that was previously added to this title. + /// + public string Name; + } + /// /// Gets a URL that can be used to download the specified asset. /// @@ -2102,6 +2175,10 @@ namespace PlayFab.MultiplayerModels /// The VM size the build was created on. /// public AzureVmSize? VmSize; + /// + /// The configuration for the VmStartupScript feature for the build + /// + public VmStartupScriptConfiguration VmStartupScriptConfiguration; } /// @@ -2351,7 +2428,7 @@ namespace PlayFab.MultiplayerModels /// public string FQDN; /// - /// The IPv4 address of the virtual machine that is hosting this multiplayer server. + /// The public IPv4 address of the virtual machine that is hosting this multiplayer server. /// public string IPV4Address; /// @@ -2363,6 +2440,10 @@ namespace PlayFab.MultiplayerModels /// public List Ports; /// + /// The list of public Ipv4 addresses associated with the server. + /// + public List PublicIPV4Addresses; + /// /// The region the multiplayer server is located in. /// public string Region; @@ -2702,7 +2783,7 @@ namespace PlayFab.MultiplayerModels public uint MaxPlayers; /// /// The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - /// members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + /// entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to /// 1000. The total size of all memberData values may not exceed 4096 bytes. Keys are case sensitive. /// public Dictionary MemberData; @@ -2729,6 +2810,45 @@ namespace PlayFab.MultiplayerModels public bool UseConnections; } + /// + /// Preview: Request to join a lobby as a server. Only callable by a game_server entity and this is restricted to client + /// owned lobbies which are using connections. + /// + [Serializable] + public class JoinLobbyAsServerRequest : PlayFabRequestCommon + { + /// + /// A field which indicates which lobby the game_server will be joining. This field is opaque to everyone except the Lobby + /// service. + /// + public string ConnectionString; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The private key-value pairs which are visible to all entities in the lobby but can only be modified by the joined + /// server.At most 30 key - value pairs may be stored here, keys are limited to 30 characters and values to 1000.The total + /// size of all serverData values may not exceed 4096 bytes. + /// + public Dictionary ServerData; + /// + /// The game_server entity which is joining the Lobby. If a different game_server entity has already joined the request will + /// fail unless the joined entity is disconnected, in which case the incoming game_server entity will replace the + /// disconnected entity. + /// + public EntityKey ServerEntity; + } + + [Serializable] + public class JoinLobbyAsServerResult : PlayFabResultCommon + { + /// + /// Successfully joined lobby's id. + /// + public string LobbyId; + } + /// /// Request to join a lobby. Only a client can join a lobby. /// @@ -2745,7 +2865,7 @@ namespace PlayFab.MultiplayerModels public Dictionary CustomTags; /// /// The private key-value pairs used by the member to communicate information to other members and the owner. Visible to all - /// members of the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to + /// entities in the lobby. At most 30 key-value pairs may be stored here, keys are limited to 30 characters and values to /// 1000. The total size of all memberData values may not exceed 4096 bytes.Keys are case sensitive. /// public Dictionary MemberData; @@ -2796,6 +2916,28 @@ namespace PlayFab.MultiplayerModels { } + /// + /// Preview: Request for server to leave a lobby. Only a game_server entity can leave and this is restricted to client owned + /// lobbies which are using connections. + /// + [Serializable] + public class LeaveLobbyAsServerRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The id of the lobby. + /// + public string LobbyId; + /// + /// The game_server entity leaving the lobby. If the game_server was subscribed to notifications, it will be unsubscribed. + /// If a the given game_server entity is not in the lobby, it will fail. + /// + public EntityKey ServerEntity; + } + /// /// Request to leave a lobby. Only a client can leave a lobby. /// @@ -3105,11 +3247,27 @@ namespace PlayFab.MultiplayerModels /// The container images we want to list tags for. /// public string ImageName; + /// + /// The page size for the request. + /// + public int? PageSize; + /// + /// The skip token for the paged request. + /// + public string SkipToken; } [Serializable] public class ListContainerImageTagsResponse : PlayFabResultCommon { + /// + /// The page size on the response. + /// + public int PageSize; + /// + /// The skip token for the paged response. + /// + public string SkipToken; /// /// The list of tags for a particular container image. /// @@ -3256,6 +3414,10 @@ namespace PlayFab.MultiplayerModels /// deployed for the title. /// public bool? IncludeAllRegions; + /// + /// Indicates the Routing Preference used by the Qos servers. The default Routing Preference is Microsoft + /// + public string RoutingPreference; } [Serializable] @@ -3275,6 +3437,43 @@ namespace PlayFab.MultiplayerModels public string SkipToken; } + /// + /// Returns a list of multiplayer server game secrets for a title. + /// + [Serializable] + public class ListSecretSummariesRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The page size for the request. + /// + public int? PageSize; + /// + /// The skip token for the paged request. + /// + public string SkipToken; + } + + [Serializable] + public class ListSecretSummariesResponse : PlayFabResultCommon + { + /// + /// The page size on the response. + /// + public int PageSize; + /// + /// The list of game secret. + /// + public List SecretSummaries; + /// + /// The skip token for the paged response. + /// + public string SkipToken; + } + /// /// List all server backfill ticket Ids the user is a member of. /// @@ -3424,6 +3623,10 @@ namespace PlayFab.MultiplayerModels /// public Dictionary SearchData; /// + /// Preview: Lobby joined server. This is not the server owner, rather the server that has joined a client owned lobby. + /// + public LobbyServer Server; + /// /// A flag which determines if connections are used. Defaults to true. Only set on create. /// public bool UseConnections; @@ -3434,6 +3637,23 @@ namespace PlayFab.MultiplayerModels { } + [Serializable] + public class LobbyServer : PlayFabBaseModel + { + /// + /// Opaque string, stored on a Subscribe call, which indicates the connection a joined server has with PubSub. + /// + public string PubSubConnectionHandle; + /// + /// Key-value pairs specific to the joined server. + /// + public Dictionary ServerData; + /// + /// The server entity key. + /// + public EntityKey ServerEntity; + } + [Serializable] public class LobbySummary : PlayFabBaseModel { @@ -3818,6 +4038,65 @@ namespace PlayFab.MultiplayerModels public uint? TotalMatchedLobbyCount; } + [Serializable] + public class PartyInvitationConfiguration : PlayFabBaseModel + { + /// + /// The list of PlayFab EntityKeys that the invitation allows to authenticate into the network. If this list is empty, all + /// users are allowed to authenticate using the invitation's identifier. This list may contain no more than 1024 items. + /// + public List EntityKeys; + /// + /// The invite identifier for this party. If this value is specified, it must be no longer than 127 characters. + /// + public string Identifier; + /// + /// Controls which participants can revoke this invite. + /// + public string Revocability; + } + + public enum PartyInvitationRevocability + { + Creator, + Anyone + } + + [Serializable] + public class PartyNetworkConfiguration : PlayFabBaseModel + { + /// + /// Controls whether and how to support direct peer-to-peer connection attempts among devices in the network. + /// + public string DirectPeerConnectivityOptions; + /// + /// The maximum number of devices allowed to connect to the network. Must be between 1 and 128, inclusive. + /// + public uint MaxDevices; + /// + /// The maximum number of devices allowed per user. Must be greater than 0. + /// + public uint MaxDevicesPerUser; + /// + /// The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. + /// + public uint MaxEndpointsPerDevice; + /// + /// The maximum number of unique users allowed in the network. Must be greater than 0. + /// + public uint MaxUsers; + /// + /// The maximum number of users allowed per device. Must be between 1 and 8, inclusive. + /// + public uint MaxUsersPerDevice; + /// + /// An optionally-specified configuration for the initial invitation for this party. If not provided, default configuration + /// values will be used: a title-unique invitation identifier will be generated, the revocability will be Anyone, and the + /// EntityID list will be empty. + /// + public PartyInvitationConfiguration PartyInvitationConfiguration; + } + [Serializable] public class Port : PlayFabBaseModel { @@ -3841,6 +4120,23 @@ namespace PlayFab.MultiplayerModels UDP } + [Serializable] + public class PublicIpAddress : PlayFabBaseModel + { + /// + /// FQDN of the public IP + /// + public string FQDN; + /// + /// Server IP Address + /// + public string IpAddress; + /// + /// Routing Type of the public IP. + /// + public string RoutingType; + } + [Serializable] public class QosServer : PlayFabBaseModel { @@ -4037,7 +4333,7 @@ namespace PlayFab.MultiplayerModels /// public string FQDN; /// - /// The IPv4 address of the virtual machine that is hosting this multiplayer server. + /// The public IPv4 address of the virtual machine that is hosting this multiplayer server. /// public string IPV4Address; /// @@ -4049,6 +4345,10 @@ namespace PlayFab.MultiplayerModels /// public List Ports; /// + /// The list of public Ipv4 addresses associated with the server. + /// + public List PublicIPV4Addresses; + /// /// The region the multiplayer server is located in. /// public string Region; @@ -4070,6 +4370,50 @@ namespace PlayFab.MultiplayerModels public string VmId; } + /// + /// Requests a party session from a particular set of builds if build alias params is provided, in any of the given + /// preferred regions. + /// + [Serializable] + public class RequestPartyServiceRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The network configuration for this request. + /// + public PartyNetworkConfiguration NetworkConfiguration; + /// + /// A guid string party ID created track the party session over its life. + /// + public string PartyId; + /// + /// The preferred regions to request a party session from. The party service will iterate through the regions in the + /// specified order and allocate a party session from the first one that is available. + /// + public List PreferredRegions; + } + + [Serializable] + public class RequestPartyServiceResponse : PlayFabResultCommon + { + /// + /// The invitation identifier supplied in the PartyInvitationConfiguration, or the PlayFab-generated guid if none was + /// supplied. + /// + public string InvitationId; + /// + /// The guid string party ID of the party session. + /// + public string PartyId; + /// + /// A base-64 encoded string containing the serialized network descriptor for this party. + /// + public string SerializedNetworkDescriptor; + } + /// /// Gets new credentials to the container registry where game developers can upload custom container images to before /// creating a new build. @@ -4100,6 +4444,12 @@ namespace PlayFab.MultiplayerModels public string Username; } + public enum RoutingType + { + Microsoft, + Internet + } + [Serializable] public class Schedule : PlayFabBaseModel { @@ -4143,6 +4493,40 @@ namespace PlayFab.MultiplayerModels public List ScheduleList; } + [Serializable] + public class Secret : PlayFabBaseModel + { + /// + /// Optional secret expiration date. + /// + public DateTime? ExpirationDate; + /// + /// A name for the secret. This is used to reference secrets in build configurations. + /// + public string Name; + /// + /// Secret value. + /// + public string Value; + } + + [Serializable] + public class SecretSummary : PlayFabBaseModel + { + /// + /// Optional secret expiration date. + /// + public DateTime? ExpirationDate; + /// + /// The name of the secret. + /// + public string Name; + /// + /// The secret version auto-generated after upload. + /// + public string Version; + } + [Serializable] public class ServerDetails : PlayFabBaseModel { @@ -4162,6 +4546,10 @@ namespace PlayFab.MultiplayerModels /// The server's region. /// public string Region; + /// + /// The string server ID of the multiplayer server generated by PlayFab. + /// + public string ServerId; } [Serializable] @@ -4373,7 +4761,8 @@ namespace PlayFab.MultiplayerModels /// public string PubSubConnectionHandle; /// - /// The name of the resource to subscribe to. + /// The name of the resource to subscribe to. For LobbyChange subscriptions this is the lobbyId. For LobbyInvite + /// subscriptions this should always be "@me". /// public string ResourceId; /// @@ -4381,7 +4770,9 @@ namespace PlayFab.MultiplayerModels /// public uint SubscriptionVersion; /// - /// Subscription type. + /// Subscription type. "LobbyChange" subscriptions allow a member or owner to receive notifications of lobby data, member or + /// owner changes. "LobbyInvite" subscriptions allow a player to receive invites to lobbies. A player does not need to be a + /// member of a lobby to receive lobby invites. /// public SubscriptionType Type; } @@ -4715,6 +5106,42 @@ namespace PlayFab.MultiplayerModels public Dictionary CustomTags; } + /// + /// Preview: Request to update the serverData and serverEntity in case of migration. Only a game_server entity can update + /// this information and this is restricted to client owned lobbies which are using connections. + /// + [Serializable] + public class UpdateLobbyAsServerRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The id of the lobby. + /// + public string LobbyId; + /// + /// The private key-value pairs which are visible to all entities in the lobby and modifiable by the joined server. + /// Optional. Sets or updates key-value pairs on the lobby. Only the current lobby lobby server can set serverData. Keys may + /// be an arbitrary string of at most 30 characters. The total size of all serverData values may not exceed 4096 bytes. + /// Values are not individually limited. There can be up to 30 key-value pairs stored here. Keys are case sensitive. + /// + public Dictionary ServerData; + /// + /// The keys to delete from the lobby serverData. Optional. Optional. Deletes key-value pairs on the lobby. Only the current + /// joined lobby server can delete serverData. All the specified keys will be removed from the serverData. Keys that do not + /// exist in the lobby are a no-op. If the key to delete exists in the serverData (same request) it will result in a bad + /// request. + /// + public List ServerDataToDelete; + /// + /// The lobby server. Optional. Set a different server as the joined server of the lobby (there can only be 1 joined + /// server). When changing the server the previous server will automatically be unsubscribed. + /// + public EntityKey ServerEntity; + } + /// /// Request to update a lobby. /// @@ -4734,7 +5161,7 @@ namespace PlayFab.MultiplayerModels /// public Dictionary CustomTags; /// - /// The private key-value pairs which are only visible to members of the lobby. Optional. Sets or updates key-value pairs on + /// The private key-value pairs which are visible to all entities in the lobby. Optional. Sets or updates key-value pairs on /// the lobby. Only the current lobby owner can set lobby data. Keys may be an arbitrary string of at most 30 characters. /// The total size of all lobbyData values may not exceed 4096 bytes. Values are not individually limited. There can be up /// to 30 key-value pairs stored here. Keys are case sensitive. @@ -4757,9 +5184,9 @@ namespace PlayFab.MultiplayerModels /// /// The private key-value pairs used by the member to communicate information to other members and the owner. Optional. Sets /// or updates new key-value pairs on the caller's member data. New keys will be added with their values and existing keys - /// will be updated with the new values. Visible to all members of the lobby. At most 30 key-value pairs may be stored here, - /// keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 bytes. - /// Keys are case sensitive. Servers cannot specifiy this. + /// will be updated with the new values. Visible to all entities in the lobby. At most 30 key-value pairs may be stored + /// here, keys are limited to 30 characters and values to 1000. The total size of all memberData values may not exceed 4096 + /// bytes. Keys are case sensitive. Servers cannot specifiy this. /// public Dictionary MemberData; /// @@ -4817,11 +5244,35 @@ namespace PlayFab.MultiplayerModels /// public Dictionary CustomTags; /// + /// Forces the certificate renewal if the certificate already exists. Default is false + /// + public bool? ForceUpdate; + /// /// The game certificate to upload. /// public Certificate GameCertificate; } + /// + /// Uploads a multiplayer server game secret. + /// + [Serializable] + public class UploadSecretRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Forces the secret renewal if the secret already exists. Default is false + /// + public bool? ForceUpdate; + /// + /// The game secret to add. + /// + public Secret GameSecret; + } + [Serializable] public class VirtualMachineSummary : PlayFabBaseModel { @@ -4842,6 +5293,10 @@ namespace PlayFab.MultiplayerModels [Serializable] public class VmStartupScriptConfiguration : PlayFabBaseModel { + /// + /// Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests. + /// + public List PortRequests; /// /// Asset which contains the VmStartupScript script and any other required files. /// @@ -4851,12 +5306,42 @@ namespace PlayFab.MultiplayerModels [Serializable] public class VmStartupScriptParams : PlayFabBaseModel { + /// + /// Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests. + /// + public List PortRequests; /// /// Asset which contains the VmStartupScript script and any other required files. /// public AssetReferenceParams VmStartupScriptAssetReference; } + [Serializable] + public class VmStartupScriptPortRequest : PlayFabBaseModel + { + /// + /// The name for the port. + /// + public string Name; + /// + /// The protocol for the port. + /// + public ProtocolType Protocol; + } + + [Serializable] + public class VmStartupScriptPortRequestParams : PlayFabBaseModel + { + /// + /// The name for the port. + /// + public string Name; + /// + /// The protocol for the port. + /// + public ProtocolType Protocol; + } + [Serializable] public class WindowsCrashDumpConfiguration : PlayFabBaseModel { diff --git a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabEvents.cs index 34ee4debd..069ee41a3 100644 --- a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabEvents.cs @@ -13,6 +13,10 @@ namespace PlayFab.Events public event PlayFabResultEvent OnProfilesGetProfilesResultEvent; public event PlayFabRequestEvent OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsRequestEvent; public event PlayFabResultEvent OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsResultEvent; + public event PlayFabRequestEvent OnProfilesGetTitlePlayersFromXboxLiveIDsRequestEvent; + public event PlayFabResultEvent OnProfilesGetTitlePlayersFromXboxLiveIDsResultEvent; + public event PlayFabRequestEvent OnProfilesSetDisplayNameRequestEvent; + public event PlayFabResultEvent OnProfilesSetDisplayNameResultEvent; public event PlayFabRequestEvent OnProfilesSetGlobalPolicyRequestEvent; public event PlayFabResultEvent OnProfilesSetGlobalPolicyResultEvent; public event PlayFabRequestEvent OnProfilesSetProfileLanguageRequestEvent; diff --git a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesAPI.cs b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesAPI.cs index 171d35306..aec3d21d2 100644 --- a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesAPI.cs @@ -9,7 +9,7 @@ namespace PlayFab { /// /// All PlayFab entities have profiles, which hold top-level properties about the entity. These APIs give you the tools - /// needed to manage entity profiles. The Master Player APIs allow you to perform operations on a master player account + /// needed to manage entity profiles. /// public static class PlayFabProfilesAPI { @@ -85,6 +85,32 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Profile/GetTitlePlayersFromMasterPlayerAccountIds", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Retrieves the title player accounts associated with the given XUIDs. + /// + public static void GetTitlePlayersFromXboxLiveIDs(GetTitlePlayersFromXboxLiveIDsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Profile/GetTitlePlayersFromXboxLiveIDs", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Update the display name of the entity + /// + public static void SetDisplayName(SetDisplayNameRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Profile/SetDisplayName", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Sets the global title access policy /// diff --git a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesInstanceAPI.cs index de5fd0530..d332f6f4e 100644 --- a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesInstanceAPI.cs @@ -10,7 +10,7 @@ namespace PlayFab { /// /// All PlayFab entities have profiles, which hold top-level properties about the entity. These APIs give you the tools - /// needed to manage entity profiles. The Master Player APIs allow you to perform operations on a master player account + /// needed to manage entity profiles. /// public class PlayFabProfilesInstanceAPI : IPlayFabInstanceApi { @@ -96,6 +96,28 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Profile/GetTitlePlayersFromMasterPlayerAccountIds", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Retrieves the title player accounts associated with the given XUIDs. + /// + public void GetTitlePlayersFromXboxLiveIDs(GetTitlePlayersFromXboxLiveIDsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Profile/GetTitlePlayersFromXboxLiveIDs", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Update the display name of the entity + /// + public void SetDisplayName(SetDisplayNameRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Profile/SetDisplayName", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Sets the global title access policy /// diff --git a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesModels.cs b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesModels.cs index f2d39605d..76cebbbd5 100644 --- a/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Profiles/PlayFabProfilesModels.cs @@ -142,10 +142,6 @@ namespace PlayFab.ProfilesModels /// public string Language; /// - /// Leaderboard metadata for the entity. - /// - public string LeaderboardMetadata; - /// /// The lineage of this profile. /// public EntityLineage Lineage; @@ -193,32 +189,11 @@ namespace PlayFab.ProfilesModels public int Size; } - [Serializable] - public class EntityStatisticChildValue : PlayFabBaseModel - { - /// - /// Child name value, if child statistic - /// - public string ChildName; - /// - /// Child statistic metadata - /// - public string Metadata; - /// - /// Child statistic value - /// - public int Value; - } - [Serializable] public class EntityStatisticValue : PlayFabBaseModel { /// - /// Child statistic values - /// - public Dictionary ChildStatistics; - /// - /// Statistic metadata + /// Metadata associated with the Statistic. /// public string Metadata; /// @@ -226,9 +201,9 @@ namespace PlayFab.ProfilesModels /// public string Name; /// - /// Statistic value + /// Statistic scores /// - public int? Value; + public List Scores; /// /// Statistic version /// @@ -359,6 +334,40 @@ namespace PlayFab.ProfilesModels public Dictionary TitlePlayerAccounts; } + [Serializable] + public class GetTitlePlayersFromProviderIDsResponse : PlayFabResultCommon + { + /// + /// Dictionary of provider identifiers mapped to title_player_account lineage. Missing lineage indicates the player either + /// doesn't exist or doesn't play the requested title. + /// + public Dictionary TitlePlayerAccounts; + } + + /// + /// Given a collection of Xbox IDs (XUIDs), returns all title player accounts. + /// + [Serializable] + public class GetTitlePlayersFromXboxLiveIDsRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Xbox Sandbox the players had on their Xbox tokens. + /// + public string Sandbox; + /// + /// Optional ID of title to get players from, required if calling using a master_player_account. + /// + public string TitleId; + /// + /// List of Xbox Live XUIDs + /// + public List XboxLiveIds; + } + public enum OperationTypes { Created, @@ -367,6 +376,44 @@ namespace PlayFab.ProfilesModels None } + /// + /// Given an entity profile, will update its display name to the one passed in if the profile's version is equal to the + /// specified value + /// + [Serializable] + public class SetDisplayNameRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The new value to be set on Entity Profile's display name + /// + public string DisplayName; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// The expected version of a profile to perform this update on + /// + public int? ExpectedVersion; + } + + [Serializable] + public class SetDisplayNameResponse : PlayFabResultCommon + { + /// + /// The type of operation that occured on the profile's display name + /// + public OperationTypes? OperationResult; + /// + /// The updated version of the profile after the display name update + /// + public int? VersionNumber; + } + /// /// This will set the access policy statements on the given entity profile. This is not additive, any existing statements /// will be replaced with the statements in this request. diff --git a/Assets/ThirdParty/PlayFabSDK/Progression.meta b/Assets/ThirdParty/PlayFabSDK/Progression.meta new file mode 100644 index 000000000..942cbdd40 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 24485793d5ba2d641b660ee9a48c06b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs new file mode 100644 index 000000000..ee302234c --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs @@ -0,0 +1,52 @@ +#if !DISABLE_PLAYFABENTITY_API +using PlayFab.ProgressionModels; + +namespace PlayFab.Events +{ + public partial class PlayFabEvents + { + public event PlayFabRequestEvent OnProgressionCreateLeaderboardDefinitionRequestEvent; + public event PlayFabResultEvent OnProgressionCreateLeaderboardDefinitionResultEvent; + public event PlayFabRequestEvent OnProgressionCreateStatisticDefinitionRequestEvent; + public event PlayFabResultEvent OnProgressionCreateStatisticDefinitionResultEvent; + public event PlayFabRequestEvent OnProgressionDeleteLeaderboardDefinitionRequestEvent; + public event PlayFabResultEvent OnProgressionDeleteLeaderboardDefinitionResultEvent; + public event PlayFabRequestEvent OnProgressionDeleteLeaderboardEntriesRequestEvent; + public event PlayFabResultEvent OnProgressionDeleteLeaderboardEntriesResultEvent; + public event PlayFabRequestEvent OnProgressionDeleteStatisticDefinitionRequestEvent; + public event PlayFabResultEvent OnProgressionDeleteStatisticDefinitionResultEvent; + public event PlayFabRequestEvent OnProgressionDeleteStatisticsRequestEvent; + public event PlayFabResultEvent OnProgressionDeleteStatisticsResultEvent; + public event PlayFabRequestEvent OnProgressionGetFriendLeaderboardForEntityRequestEvent; + public event PlayFabResultEvent OnProgressionGetFriendLeaderboardForEntityResultEvent; + public event PlayFabRequestEvent OnProgressionGetLeaderboardRequestEvent; + public event PlayFabResultEvent OnProgressionGetLeaderboardResultEvent; + public event PlayFabRequestEvent OnProgressionGetLeaderboardAroundEntityRequestEvent; + public event PlayFabResultEvent OnProgressionGetLeaderboardAroundEntityResultEvent; + public event PlayFabRequestEvent OnProgressionGetLeaderboardDefinitionRequestEvent; + public event PlayFabResultEvent OnProgressionGetLeaderboardDefinitionResultEvent; + public event PlayFabRequestEvent OnProgressionGetLeaderboardForEntitiesRequestEvent; + public event PlayFabResultEvent OnProgressionGetLeaderboardForEntitiesResultEvent; + public event PlayFabRequestEvent OnProgressionGetStatisticDefinitionRequestEvent; + public event PlayFabResultEvent OnProgressionGetStatisticDefinitionResultEvent; + public event PlayFabRequestEvent OnProgressionGetStatisticsRequestEvent; + public event PlayFabResultEvent OnProgressionGetStatisticsResultEvent; + public event PlayFabRequestEvent OnProgressionGetStatisticsForEntitiesRequestEvent; + public event PlayFabResultEvent OnProgressionGetStatisticsForEntitiesResultEvent; + public event PlayFabRequestEvent OnProgressionIncrementLeaderboardVersionRequestEvent; + public event PlayFabResultEvent OnProgressionIncrementLeaderboardVersionResultEvent; + public event PlayFabRequestEvent OnProgressionIncrementStatisticVersionRequestEvent; + public event PlayFabResultEvent OnProgressionIncrementStatisticVersionResultEvent; + public event PlayFabRequestEvent OnProgressionListLeaderboardDefinitionsRequestEvent; + public event PlayFabResultEvent OnProgressionListLeaderboardDefinitionsResultEvent; + public event PlayFabRequestEvent OnProgressionListStatisticDefinitionsRequestEvent; + public event PlayFabResultEvent OnProgressionListStatisticDefinitionsResultEvent; + public event PlayFabRequestEvent OnProgressionUnlinkLeaderboardFromStatisticRequestEvent; + public event PlayFabResultEvent OnProgressionUnlinkLeaderboardFromStatisticResultEvent; + public event PlayFabRequestEvent OnProgressionUpdateLeaderboardEntriesRequestEvent; + public event PlayFabResultEvent OnProgressionUpdateLeaderboardEntriesResultEvent; + public event PlayFabRequestEvent OnProgressionUpdateStatisticsRequestEvent; + public event PlayFabResultEvent OnProgressionUpdateStatisticsResultEvent; + } +} +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs.meta b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs.meta new file mode 100644 index 000000000..03f473a11 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabEvents.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0baf01ae0e5700e41a23409b4e548524 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs new file mode 100644 index 000000000..a8f83eea2 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs @@ -0,0 +1,313 @@ +#if !DISABLE_PLAYFABENTITY_API && !DISABLE_PLAYFAB_STATIC_API + +using System; +using System.Collections.Generic; +using PlayFab.ProgressionModels; +using PlayFab.Internal; + +namespace PlayFab +{ + /// + /// Manage entity statistics Manage entity leaderboards + /// + public static class PlayFabProgressionAPI + { + static PlayFabProgressionAPI() {} + + + /// + /// Verify entity login. + /// + public static bool IsEntityLoggedIn() + { + return PlayFabSettings.staticPlayer.IsEntityLoggedIn(); + } + + /// + /// Clear the Client SessionToken which allows this Client to call API calls requiring login. + /// A new/fresh login will be required after calling this. + /// + public static void ForgetAllCredentials() + { + PlayFabSettings.staticPlayer.ForgetAllCredentials(); + } + + /// + /// Creates a new leaderboard definition. + /// + public static void CreateLeaderboardDefinition(CreateLeaderboardDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/CreateLeaderboardDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Create a new entity statistic definition. + /// + public static void CreateStatisticDefinition(CreateStatisticDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/CreateStatisticDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes a leaderboard definition. + /// + public static void DeleteLeaderboardDefinition(DeleteLeaderboardDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/DeleteLeaderboardDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Deletes the specified entries from the given leaderboard. + /// + public static void DeleteLeaderboardEntries(DeleteLeaderboardEntriesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/DeleteLeaderboardEntries", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Delete an entity statistic definition. Will delete all statistics on entity profiles and leaderboards. + /// + public static void DeleteStatisticDefinition(DeleteStatisticDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/DeleteStatisticDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Delete statistics on an entity profile. This will remove all rankings from associated leaderboards. + /// + public static void DeleteStatistics(DeleteStatisticsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/DeleteStatistics", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Get the friend leaderboard for the specified entity. A maximum of 25 friend entries are listed in the leaderboard. + /// + public static void GetFriendLeaderboardForEntity(GetFriendLeaderboardForEntityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/GetFriendLeaderboardForEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Get the leaderboard for a specific entity type and statistic. + /// + public static void GetLeaderboard(GetEntityLeaderboardRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboard", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Get the leaderboard around a specific entity. + /// + public static void GetLeaderboardAroundEntity(GetLeaderboardAroundEntityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboardAroundEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets the specified leaderboard definition. + /// + public static void GetLeaderboardDefinition(GetLeaderboardDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboardDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Get the leaderboard limited to a set of entities. + /// + public static void GetLeaderboardForEntities(GetLeaderboardForEntitiesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboardForEntities", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Get current statistic definition information + /// + public static void GetStatisticDefinition(GetStatisticDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/GetStatisticDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets statistics for the specified entity. + /// + public static void GetStatistics(GetStatisticsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/GetStatistics", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Gets statistics for the specified collection of entities. + /// + public static void GetStatisticsForEntities(GetStatisticsForEntitiesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/GetStatisticsForEntities", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Increment a leaderboard version. + /// + public static void IncrementLeaderboardVersion(IncrementLeaderboardVersionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/IncrementLeaderboardVersion", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Increment an entity statistic definition version. + /// + public static void IncrementStatisticVersion(IncrementStatisticVersionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/IncrementStatisticVersion", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Lists the leaderboard definitions defined for the Title. + /// + public static void ListLeaderboardDefinitions(ListLeaderboardDefinitionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/ListLeaderboardDefinitions", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Get all current statistic definitions information + /// + public static void ListStatisticDefinitions(ListStatisticDefinitionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/ListStatisticDefinitions", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Unlinks a leaderboard definition from it's linked statistic definition. + /// + public static void UnlinkLeaderboardFromStatistic(UnlinkLeaderboardFromStatisticRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/UnlinkLeaderboardFromStatistic", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Adds or updates entries on the specified leaderboard. + /// + public static void UpdateLeaderboardEntries(UpdateLeaderboardEntriesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Leaderboard/UpdateLeaderboardEntries", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + /// + /// Update statistics on an entity profile. Depending on the statistic definition, this may result in entity being ranked on + /// various leaderboards. + /// + public static void UpdateStatistics(UpdateStatisticsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + + + PlayFabHttp.MakeApiCall("/Statistic/UpdateStatistics", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + + + } +} + +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs.meta b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs.meta new file mode 100644 index 000000000..ea6b3eb06 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionAPI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77a7d66f0cc99ad40a5068f8a1e2865f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs new file mode 100644 index 000000000..30470dddf --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs @@ -0,0 +1,289 @@ +#if !DISABLE_PLAYFABENTITY_API + +using System; +using System.Collections.Generic; +using PlayFab.ProgressionModels; +using PlayFab.Internal; +using PlayFab.SharedModels; + +namespace PlayFab +{ + /// + /// Manage entity statistics Manage entity leaderboards + /// + public class PlayFabProgressionInstanceAPI : IPlayFabInstanceApi + { + public readonly PlayFabApiSettings apiSettings = null; + public readonly PlayFabAuthenticationContext authenticationContext = null; + + public PlayFabProgressionInstanceAPI(PlayFabAuthenticationContext context) + { + if (context == null) + throw new PlayFabException(PlayFabExceptionCode.AuthContextRequired, "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call .GetAuthenticationContext()"); + authenticationContext = context; + } + + public PlayFabProgressionInstanceAPI(PlayFabApiSettings settings, PlayFabAuthenticationContext context) + { + if (context == null) + throw new PlayFabException(PlayFabExceptionCode.AuthContextRequired, "Context cannot be null, create a PlayFabAuthenticationContext for each player in advance, or call .GetAuthenticationContext()"); + apiSettings = settings; + authenticationContext = context; + } + + /// + /// Verify entity login. + /// + public bool IsEntityLoggedIn() + { + return authenticationContext == null ? false : authenticationContext.IsEntityLoggedIn(); + } + + /// + /// Clear the Client SessionToken which allows this Client to call API calls requiring login. + /// A new/fresh login will be required after calling this. + /// + public void ForgetAllCredentials() + { + if (authenticationContext != null) + { + authenticationContext.ForgetAllCredentials(); + } + } + + /// + /// Creates a new leaderboard definition. + /// + public void CreateLeaderboardDefinition(CreateLeaderboardDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/CreateLeaderboardDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Create a new entity statistic definition. + /// + public void CreateStatisticDefinition(CreateStatisticDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/CreateStatisticDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes a leaderboard definition. + /// + public void DeleteLeaderboardDefinition(DeleteLeaderboardDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/DeleteLeaderboardDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Deletes the specified entries from the given leaderboard. + /// + public void DeleteLeaderboardEntries(DeleteLeaderboardEntriesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/DeleteLeaderboardEntries", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Delete an entity statistic definition. Will delete all statistics on entity profiles and leaderboards. + /// + public void DeleteStatisticDefinition(DeleteStatisticDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/DeleteStatisticDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Delete statistics on an entity profile. This will remove all rankings from associated leaderboards. + /// + public void DeleteStatistics(DeleteStatisticsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/DeleteStatistics", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Get the friend leaderboard for the specified entity. A maximum of 25 friend entries are listed in the leaderboard. + /// + public void GetFriendLeaderboardForEntity(GetFriendLeaderboardForEntityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/GetFriendLeaderboardForEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Get the leaderboard for a specific entity type and statistic. + /// + public void GetLeaderboard(GetEntityLeaderboardRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboard", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Get the leaderboard around a specific entity. + /// + public void GetLeaderboardAroundEntity(GetLeaderboardAroundEntityRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboardAroundEntity", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets the specified leaderboard definition. + /// + public void GetLeaderboardDefinition(GetLeaderboardDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboardDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Get the leaderboard limited to a set of entities. + /// + public void GetLeaderboardForEntities(GetLeaderboardForEntitiesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/GetLeaderboardForEntities", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Get current statistic definition information + /// + public void GetStatisticDefinition(GetStatisticDefinitionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/GetStatisticDefinition", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets statistics for the specified entity. + /// + public void GetStatistics(GetStatisticsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/GetStatistics", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Gets statistics for the specified collection of entities. + /// + public void GetStatisticsForEntities(GetStatisticsForEntitiesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/GetStatisticsForEntities", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Increment a leaderboard version. + /// + public void IncrementLeaderboardVersion(IncrementLeaderboardVersionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/IncrementLeaderboardVersion", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Increment an entity statistic definition version. + /// + public void IncrementStatisticVersion(IncrementStatisticVersionRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/IncrementStatisticVersion", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Lists the leaderboard definitions defined for the Title. + /// + public void ListLeaderboardDefinitions(ListLeaderboardDefinitionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/ListLeaderboardDefinitions", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Get all current statistic definitions information + /// + public void ListStatisticDefinitions(ListStatisticDefinitionsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/ListStatisticDefinitions", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Unlinks a leaderboard definition from it's linked statistic definition. + /// + public void UnlinkLeaderboardFromStatistic(UnlinkLeaderboardFromStatisticRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/UnlinkLeaderboardFromStatistic", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Adds or updates entries on the specified leaderboard. + /// + public void UpdateLeaderboardEntries(UpdateLeaderboardEntriesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Leaderboard/UpdateLeaderboardEntries", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + /// + /// Update statistics on an entity profile. Depending on the statistic definition, this may result in entity being ranked on + /// various leaderboards. + /// + public void UpdateStatistics(UpdateStatisticsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (!context.IsEntityLoggedIn()) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn,"Must be logged in to call this method"); + PlayFabHttp.MakeApiCall("/Statistic/UpdateStatistics", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + + } +} + +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs.meta b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs.meta new file mode 100644 index 000000000..cb5925006 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionInstanceAPI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9b633860fe71fc24dacbbfe3f943e227 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs new file mode 100644 index 000000000..f8e91df70 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs @@ -0,0 +1,897 @@ +#if !DISABLE_PLAYFABENTITY_API +using System; +using System.Collections.Generic; +using PlayFab.SharedModels; + +namespace PlayFab.ProgressionModels +{ + [Serializable] + public class CreateLeaderboardDefinitionRequest : PlayFabRequestCommon + { + /// + /// Leaderboard columns describing the sort directions, cannot be changed after creation. + /// + public List Columns; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The entity type being represented on the leaderboard. If it doesn't correspond to the PlayFab entity types, use + /// 'external' as the type. + /// + public string EntityType; + /// + /// A name for the leaderboard, unique per title. + /// + public string Name; + /// + /// Maximum number of entries on this leaderboard + /// + public int SizeLimit; + /// + /// The version reset configuration for the leaderboard definition. + /// + public VersionConfiguration VersionConfiguration; + } + + [Serializable] + public class CreateStatisticDefinitionRequest : PlayFabRequestCommon + { + /// + /// The columns for the statistic defining the aggregation method for each column. + /// + public List Columns; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The entity type allowed to have score(s) for this statistic. + /// + public string EntityType; + /// + /// Name of the statistic. Must be less than 150 characters. Restricted to a-Z, 0-9, '(', ')', '_', '-' and '.'. + /// + public string Name; + /// + /// The version reset configuration for the statistic definition. + /// + public VersionConfiguration VersionConfiguration; + } + + [Serializable] + public class DeleteLeaderboardDefinitionRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The name of the leaderboard definition to delete. + /// + public string Name; + } + + [Serializable] + public class DeleteLeaderboardEntriesRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The unique Ids of the entries to delete from the leaderboard. + /// + public List EntityIds; + /// + /// The name of the leaderboard. + /// + public string Name; + } + + [Serializable] + public class DeleteStatisticDefinitionRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Name of the statistic to delete. + /// + public string Name; + } + + [Serializable] + public class DeleteStatisticsRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// Collection of statistics to remove from this entity. + /// + public List Statistics; + } + + [Serializable] + public class DeleteStatisticsResponse : PlayFabResultCommon + { + /// + /// The entity id and type. + /// + public EntityKey Entity; + } + + [Serializable] + public class EmptyResponse : PlayFabResultCommon + { + } + + /// + /// Combined entity type and ID structure which uniquely identifies a single entity. + /// + [Serializable] + public class EntityKey : PlayFabBaseModel + { + /// + /// Unique ID of the entity. + /// + public string Id; + /// + /// Entity type. See https://docs.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types + /// + public string Type; + } + + /// + /// Individual rank of an entity in a leaderboard + /// + [Serializable] + public class EntityLeaderboardEntry : PlayFabBaseModel + { + /// + /// Entity's display name. + /// + public string DisplayName; + /// + /// Entity identifier. + /// + public EntityKey Entity; + /// + /// The time at which the last update to the entry was recorded on the server. + /// + public DateTime LastUpdated; + /// + /// An opaque blob of data stored on the leaderboard entry. Note that the metadata is not used for ranking purposes. + /// + public string Metadata; + /// + /// Position on the leaderboard. + /// + public int Rank; + /// + /// Scores for the entry. + /// + public List Scores; + } + + [Serializable] + public class EntityStatistics : PlayFabBaseModel + { + /// + /// Entity key + /// + public EntityKey EntityKey; + /// + /// All statistics for the given entitykey + /// + public List Statistics; + } + + [Serializable] + public class EntityStatisticValue : PlayFabBaseModel + { + /// + /// Metadata associated with the Statistic. + /// + public string Metadata; + /// + /// Statistic name + /// + public string Name; + /// + /// Statistic scores + /// + public List Scores; + /// + /// Statistic version + /// + public int Version; + } + + public enum ExternalFriendSources + { + None, + Steam, + Facebook, + Xbox, + Psn, + All + } + + /// + /// Request to load a leaderboard. + /// + [Serializable] + public class GetEntityLeaderboardRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Name of the leaderboard. + /// + public string LeaderboardName; + /// + /// Maximum number of results to return from the leaderboard. Minimum 1, maximum 1,000. + /// + public uint PageSize; + /// + /// Index position to start from. 1 is beginning of leaderboard. + /// + public uint? StartingPosition; + /// + /// Optional version of the leaderboard, defaults to current version. + /// + public uint? Version; + } + + /// + /// Leaderboard response + /// + [Serializable] + public class GetEntityLeaderboardResponse : PlayFabResultCommon + { + /// + /// Leaderboard columns describing the sort directions. + /// + public List Columns; + /// + /// The number of entries on the leaderboard. + /// + public uint EntryCount; + /// + /// Individual entity rankings in the leaderboard, in sorted order by rank. + /// + public List Rankings; + /// + /// Version of the leaderboard being returned. + /// + public uint Version; + } + + [Serializable] + public class GetFriendLeaderboardForEntityRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// Indicates which other platforms' friends should be included in the response. In HTTP, it is represented as a + /// comma-separated list of platforms. + /// + public ExternalFriendSources? ExternalFriendSources; + /// + /// Name of the leaderboard. + /// + public string LeaderboardName; + /// + /// Optional version of the leaderboard, defaults to current version. + /// + public uint? Version; + /// + /// Xbox token if Xbox friends should be included. Requires Xbox be configured on PlayFab. + /// + public string XboxToken; + } + + /// + /// Request to load a section of a leaderboard centered on a specific entity. + /// + [Serializable] + public class GetLeaderboardAroundEntityRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// Name of the leaderboard. + /// + public string LeaderboardName; + /// + /// Number of surrounding entries to return (in addition to specified entity). In general, the number of ranks above and + /// below will be split into half. For example, if the specified value is 10, 5 ranks above and 5 ranks below will be + /// retrieved. However, the numbers will get skewed in either direction when the specified entity is towards the top or + /// bottom of the leaderboard. Also, the number of entries returned can be lower than the value specified for entries at the + /// bottom of the leaderboard. + /// + public uint MaxSurroundingEntries; + /// + /// Optional version of the leaderboard, defaults to current. + /// + public uint? Version; + } + + [Serializable] + public class GetLeaderboardDefinitionRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The name of the leaderboard to retrieve the definition for. + /// + public string Name; + } + + [Serializable] + public class GetLeaderboardDefinitionResponse : PlayFabResultCommon + { + /// + /// Sort direction of the leaderboard columns, cannot be changed after creation. + /// + public List Columns; + /// + /// Created time, in UTC + /// + public DateTime Created; + /// + /// The entity type being represented on the leaderboard. If it doesn't correspond to the PlayFab entity types, use + /// 'external' as the type. + /// + public string EntityType; + /// + /// Last time, in UTC, leaderboard version was incremented. + /// + public DateTime? LastResetTime; + /// + /// A name for the leaderboard, unique per title. + /// + public string Name; + /// + /// Maximum number of entries on this leaderboard + /// + public int SizeLimit; + /// + /// Latest Leaderboard version. + /// + public uint Version; + /// + /// The version reset configuration for the leaderboard definition. + /// + public VersionConfiguration VersionConfiguration; + } + + /// + /// Request a leaderboard limited to a collection of entities. + /// + [Serializable] + public class GetLeaderboardForEntitiesRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Collection of Entity IDs to include in the leaderboard. + /// + public List EntityIds; + /// + /// Name of the leaderboard. + /// + public string LeaderboardName; + /// + /// Optional version of the leaderboard, defaults to current. + /// + public uint? Version; + } + + [Serializable] + public class GetStatisticDefinitionRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Name of the statistic. Must be less than 150 characters. + /// + public string Name; + } + + [Serializable] + public class GetStatisticDefinitionResponse : PlayFabResultCommon + { + /// + /// The columns for the statistic defining the aggregation method for each column. + /// + public List Columns; + /// + /// Created time, in UTC + /// + public DateTime Created; + /// + /// The entity type that can have this statistic. + /// + public string EntityType; + /// + /// Last time, in UTC, statistic version was incremented. + /// + public DateTime? LastResetTime; + /// + /// The list of leaderboards that are linked to this statistic definition. + /// + public List LinkedLeaderboardNames; + /// + /// Name of the statistic. + /// + public string Name; + /// + /// Statistic version. + /// + public uint Version; + /// + /// The version reset configuration for the leaderboard definition. + /// + public VersionConfiguration VersionConfiguration; + } + + [Serializable] + public class GetStatisticsForEntitiesRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Collection of Entity IDs to retrieve statistics for. + /// + public List Entities; + } + + [Serializable] + public class GetStatisticsForEntitiesResponse : PlayFabResultCommon + { + /// + /// A mapping of statistic name to the columns defined in the corresponding definition. + /// + public Dictionary ColumnDetails; + /// + /// List of entities mapped to their statistics. Only the latest version of a statistic is returned. + /// + public List EntitiesStatistics; + } + + [Serializable] + public class GetStatisticsRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + } + + [Serializable] + public class GetStatisticsResponse : PlayFabResultCommon + { + /// + /// A mapping of statistic name to the columns defined in the corresponding definition. + /// + public Dictionary ColumnDetails; + /// + /// The entity id and type. + /// + public EntityKey Entity; + /// + /// List of statistics keyed by Name. Only the latest version of a statistic is returned. + /// + public Dictionary Statistics; + } + + [Serializable] + public class IncrementLeaderboardVersionRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The name of the leaderboard to increment the version for. + /// + public string Name; + } + + [Serializable] + public class IncrementLeaderboardVersionResponse : PlayFabResultCommon + { + /// + /// New Leaderboard version. + /// + public uint Version; + } + + [Serializable] + public class IncrementStatisticVersionRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Name of the statistic to increment the version of. + /// + public string Name; + } + + [Serializable] + public class IncrementStatisticVersionResponse : PlayFabResultCommon + { + /// + /// New statistic version. + /// + public uint Version; + } + + [Serializable] + public class LeaderboardColumn : PlayFabBaseModel + { + /// + /// If the value for this column is sourced from a statistic, details of the linked column. Null if the leaderboard is not + /// linked. + /// + public LinkedStatisticColumn LinkedStatisticColumn; + /// + /// A name for the leaderboard column, unique per leaderboard definition. + /// + public string Name; + /// + /// The sort direction for this column. + /// + public LeaderboardSortDirection SortDirection; + } + + [Serializable] + public class LeaderboardDefinition : PlayFabBaseModel + { + /// + /// Sort direction of the leaderboard columns, cannot be changed after creation. + /// + public List Columns; + /// + /// Created time, in UTC + /// + public DateTime Created; + /// + /// The entity type being represented on the leaderboard. If it doesn't correspond to the PlayFab entity types, use + /// 'external' as the type. + /// + public string EntityType; + /// + /// Last time, in UTC, leaderboard version was incremented. + /// + public DateTime? LastResetTime; + /// + /// A name for the leaderboard, unique per title. + /// + public string Name; + /// + /// Maximum number of entries on this leaderboard + /// + public int SizeLimit; + /// + /// Latest Leaderboard version. + /// + public uint Version; + /// + /// The version reset configuration for the leaderboard definition. + /// + public VersionConfiguration VersionConfiguration; + } + + [Serializable] + public class LeaderboardEntryUpdate : PlayFabBaseModel + { + /// + /// The unique Id for the entry. If using PlayFab Entities, this would be the entityId of the entity. + /// + public string EntityId; + /// + /// Arbitrary metadata to store along side the leaderboard entry, will be returned by all Leaderboard APIs. Must be less + /// than 50 UTF8 encoded characters. + /// + public string Metadata; + /// + /// The scores for the leaderboard. The number of values provided here must match the number of columns in the Leaderboard + /// definition. + /// + public List Scores; + } + + public enum LeaderboardSortDirection + { + Descending, + Ascending + } + + [Serializable] + public class LinkedStatisticColumn : PlayFabBaseModel + { + /// + /// The name of the statistic column that this leaderboard column is sourced from. + /// + public string LinkedStatisticColumnName; + /// + /// The name of the statistic. + /// + public string LinkedStatisticName; + } + + [Serializable] + public class ListLeaderboardDefinitionsRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + } + + [Serializable] + public class ListLeaderboardDefinitionsResponse : PlayFabResultCommon + { + /// + /// List of leaderboard definitions for the title. + /// + public List LeaderboardDefinitions; + } + + [Serializable] + public class ListStatisticDefinitionsRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + } + + [Serializable] + public class ListStatisticDefinitionsResponse : PlayFabResultCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// List of statistic definitions for the title. + /// + public List StatisticDefinitions; + } + + public enum ResetInterval + { + Manual, + Hour, + Day, + Week, + Month + } + + public enum StatisticAggregationMethod + { + Last, + Min, + Max, + Sum + } + + [Serializable] + public class StatisticColumn : PlayFabBaseModel + { + /// + /// Aggregation method for calculating new value of a statistic. + /// + public StatisticAggregationMethod AggregationMethod; + /// + /// Name of the statistic column, as originally configured. + /// + public string Name; + } + + [Serializable] + public class StatisticColumnCollection : PlayFabBaseModel + { + /// + /// Columns for the statistic defining the aggregation method for each column. + /// + public List Columns; + } + + [Serializable] + public class StatisticDefinition : PlayFabBaseModel + { + /// + /// The columns for the statistic defining the aggregation method for each column. + /// + public List Columns; + /// + /// Created time, in UTC + /// + public DateTime Created; + /// + /// The entity type that can have this statistic. + /// + public string EntityType; + /// + /// Last time, in UTC, statistic version was incremented. + /// + public DateTime? LastResetTime; + /// + /// The list of leaderboards that are linked to this statistic definition. + /// + public List LinkedLeaderboardNames; + /// + /// Name of the statistic. + /// + public string Name; + /// + /// Statistic version. + /// + public uint Version; + /// + /// The version reset configuration for the leaderboard definition. + /// + public VersionConfiguration VersionConfiguration; + } + + [Serializable] + public class StatisticDelete : PlayFabBaseModel + { + /// + /// Name of the statistic, as originally configured. + /// + public string Name; + } + + [Serializable] + public class StatisticUpdate : PlayFabBaseModel + { + /// + /// Arbitrary metadata to store along side the statistic, will be returned by all Leaderboard APIs. Must be less than 50 + /// UTF8 encoded characters. + /// + public string Metadata; + /// + /// Name of the statistic, as originally configured. + /// + public string Name; + /// + /// Statistic scores for the entity. This will be used in accordance with the aggregation method configured for the + /// statistics.The maximum value allowed for each individual score is 9223372036854775807. The minimum value for each + /// individual score is -9223372036854775807The values are formatted as strings to avoid interop issues with client + /// libraries unable to handle 64bit integers. + /// + public List Scores; + /// + /// Optional field to indicate the version of the statistic to set. When empty defaults to the statistic's current version. + /// + public uint? Version; + } + + [Serializable] + public class UnlinkLeaderboardFromStatisticRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The name of the leaderboard definition to unlink. + /// + public string Name; + /// + /// The name of the statistic definition to unlink. + /// + public string StatisticName; + } + + [Serializable] + public class UpdateLeaderboardEntriesRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The entries to add or update on the leaderboard. + /// + public List Entries; + /// + /// The name of the leaderboard. + /// + public string LeaderboardName; + } + + [Serializable] + public class UpdateStatisticsRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// The optional entity to perform this action on. Defaults to the currently logged in entity. + /// + public EntityKey Entity; + /// + /// Collection of statistics to update, maximum 50. + /// + public List Statistics; + } + + [Serializable] + public class UpdateStatisticsResponse : PlayFabResultCommon + { + /// + /// A mapping of statistic name to the columns defined in the corresponding definition. + /// + public Dictionary ColumnDetails; + /// + /// The entity id and type. + /// + public EntityKey Entity; + /// + /// Updated entity profile statistics. + /// + public Dictionary Statistics; + } + + [Serializable] + public class VersionConfiguration : PlayFabBaseModel + { + /// + /// The maximum number of versions of this leaderboard/statistic that can be queried. + /// + public int MaxQueryableVersions; + /// + /// Reset interval that statistics or leaderboards will reset on. When using Manual intervalthe reset can only be increased + /// by calling the Increase version API. When using Hour interval the resetwill occur at the start of the next hour UTC + /// time. When using Day interval the reset will occur at thestart of the next day in UTC time. When using the Week interval + /// the reset will occur at the start ofthe next Monday in UTC time. When using Month interval the reset will occur at the + /// start of the nextmonth in UTC time. + /// + public ResetInterval ResetInterval; + } +} +#endif diff --git a/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs.meta b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs.meta new file mode 100644 index 000000000..382d715d7 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Progression/PlayFabProgressionModels.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98dd4b7b25d8a1c4481a206e643cb9e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabEvents.cs index d4c24a301..c2fd71a80 100644 --- a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabEvents.cs @@ -35,8 +35,6 @@ namespace PlayFab.Events public event PlayFabResultEvent OnServerDeletePushNotificationTemplateResultEvent; public event PlayFabRequestEvent OnServerDeleteSharedGroupRequestEvent; public event PlayFabResultEvent OnServerDeleteSharedGroupResultEvent; - public event PlayFabRequestEvent OnServerDeregisterGameRequestEvent; - public event PlayFabResultEvent OnServerDeregisterGameResultEvent; public event PlayFabRequestEvent OnServerEvaluateRandomResultTableRequestEvent; public event PlayFabResultEvent OnServerEvaluateRandomResultTableResultEvent; public event PlayFabRequestEvent OnServerExecuteCloudScriptRequestEvent; @@ -99,8 +97,12 @@ namespace PlayFab.Events public event PlayFabResultEvent OnServerGetPlayFabIDsFromNintendoSwitchDeviceIdsResultEvent; public event PlayFabRequestEvent OnServerGetPlayFabIDsFromPSNAccountIDsRequestEvent; public event PlayFabResultEvent OnServerGetPlayFabIDsFromPSNAccountIDsResultEvent; + public event PlayFabRequestEvent OnServerGetPlayFabIDsFromPSNOnlineIDsRequestEvent; + public event PlayFabResultEvent OnServerGetPlayFabIDsFromPSNOnlineIDsResultEvent; public event PlayFabRequestEvent OnServerGetPlayFabIDsFromSteamIDsRequestEvent; public event PlayFabResultEvent OnServerGetPlayFabIDsFromSteamIDsResultEvent; + public event PlayFabRequestEvent OnServerGetPlayFabIDsFromSteamNamesRequestEvent; + public event PlayFabResultEvent OnServerGetPlayFabIDsFromSteamNamesResultEvent; public event PlayFabRequestEvent OnServerGetPlayFabIDsFromTwitchIDsRequestEvent; public event PlayFabResultEvent OnServerGetPlayFabIDsFromTwitchIDsResultEvent; public event PlayFabRequestEvent OnServerGetPlayFabIDsFromXboxLiveIDsRequestEvent; @@ -151,14 +153,22 @@ namespace PlayFab.Events public event PlayFabResultEvent OnServerGrantItemsToUsersResultEvent; public event PlayFabRequestEvent OnServerLinkNintendoServiceAccountRequestEvent; public event PlayFabResultEvent OnServerLinkNintendoServiceAccountResultEvent; + public event PlayFabRequestEvent OnServerLinkNintendoServiceAccountSubjectRequestEvent; + public event PlayFabResultEvent OnServerLinkNintendoServiceAccountSubjectResultEvent; public event PlayFabRequestEvent OnServerLinkNintendoSwitchDeviceIdRequestEvent; public event PlayFabResultEvent OnServerLinkNintendoSwitchDeviceIdResultEvent; public event PlayFabRequestEvent OnServerLinkPSNAccountRequestEvent; public event PlayFabResultEvent OnServerLinkPSNAccountResultEvent; + public event PlayFabRequestEvent OnServerLinkPSNIdRequestEvent; + public event PlayFabResultEvent OnServerLinkPSNIdResultEvent; public event PlayFabRequestEvent OnServerLinkServerCustomIdRequestEvent; public event PlayFabResultEvent OnServerLinkServerCustomIdResultEvent; + public event PlayFabRequestEvent OnServerLinkSteamIdRequestEvent; + public event PlayFabResultEvent OnServerLinkSteamIdResultEvent; public event PlayFabRequestEvent OnServerLinkXboxAccountRequestEvent; public event PlayFabResultEvent OnServerLinkXboxAccountResultEvent; + public event PlayFabRequestEvent OnServerLoginWithPSNRequestEvent; + public event PlayFabResultEvent OnServerLoginWithPSNResultEvent; public event PlayFabRequestEvent OnServerLoginWithServerCustomIdRequestEvent; public event PlayFabResultEvent OnServerLoginWithServerCustomIdResultEvent; public event PlayFabRequestEvent OnServerLoginWithSteamIdRequestEvent; @@ -175,16 +185,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnServerMoveItemToCharacterFromUserResultEvent; public event PlayFabRequestEvent OnServerMoveItemToUserFromCharacterRequestEvent; public event PlayFabResultEvent OnServerMoveItemToUserFromCharacterResultEvent; - public event PlayFabRequestEvent OnServerNotifyMatchmakerPlayerLeftRequestEvent; - public event PlayFabResultEvent OnServerNotifyMatchmakerPlayerLeftResultEvent; public event PlayFabRequestEvent OnServerRedeemCouponRequestEvent; public event PlayFabResultEvent OnServerRedeemCouponResultEvent; - public event PlayFabRequestEvent OnServerRedeemMatchmakerTicketRequestEvent; - public event PlayFabResultEvent OnServerRedeemMatchmakerTicketResultEvent; - public event PlayFabRequestEvent OnServerRefreshGameServerInstanceHeartbeatRequestEvent; - public event PlayFabResultEvent OnServerRefreshGameServerInstanceHeartbeatResultEvent; - public event PlayFabRequestEvent OnServerRegisterGameRequestEvent; - public event PlayFabResultEvent OnServerRegisterGameResultEvent; public event PlayFabRequestEvent OnServerRemoveFriendRequestEvent; public event PlayFabResultEvent OnServerRemoveFriendResultEvent; public event PlayFabRequestEvent OnServerRemoveGenericIDRequestEvent; @@ -215,12 +217,6 @@ namespace PlayFab.Events public event PlayFabResultEvent OnServerSendPushNotificationFromTemplateResultEvent; public event PlayFabRequestEvent OnServerSetFriendTagsRequestEvent; public event PlayFabResultEvent OnServerSetFriendTagsResultEvent; - public event PlayFabRequestEvent OnServerSetGameServerInstanceDataRequestEvent; - public event PlayFabResultEvent OnServerSetGameServerInstanceDataResultEvent; - public event PlayFabRequestEvent OnServerSetGameServerInstanceStateRequestEvent; - public event PlayFabResultEvent OnServerSetGameServerInstanceStateResultEvent; - public event PlayFabRequestEvent OnServerSetGameServerInstanceTagsRequestEvent; - public event PlayFabResultEvent OnServerSetGameServerInstanceTagsResultEvent; public event PlayFabRequestEvent OnServerSetPlayerSecretRequestEvent; public event PlayFabResultEvent OnServerSetPlayerSecretResultEvent; public event PlayFabRequestEvent OnServerSetPublisherDataRequestEvent; @@ -241,6 +237,8 @@ namespace PlayFab.Events public event PlayFabResultEvent OnServerUnlinkPSNAccountResultEvent; public event PlayFabRequestEvent OnServerUnlinkServerCustomIdRequestEvent; public event PlayFabResultEvent OnServerUnlinkServerCustomIdResultEvent; + public event PlayFabRequestEvent OnServerUnlinkSteamIdRequestEvent; + public event PlayFabResultEvent OnServerUnlinkSteamIdResultEvent; public event PlayFabRequestEvent OnServerUnlinkXboxAccountRequestEvent; public event PlayFabResultEvent OnServerUnlinkXboxAccountResultEvent; public event PlayFabRequestEvent OnServerUnlockContainerInstanceRequestEvent; diff --git a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerAPI.cs b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerAPI.cs index 3ffacd57b..b01c2ee96 100644 --- a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerAPI.cs @@ -26,7 +26,8 @@ namespace PlayFab } /// - /// Increments the character's balance of the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the character's balance of the specified virtual currency by the stated amount /// public static void AddCharacterVirtualCurrency(AddCharacterVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -97,7 +98,8 @@ namespace PlayFab } /// - /// Increments the user's balance of the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the user's balance of the specified virtual currency by the stated amount /// public static void AddUserVirtualCurrency(AddUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -149,7 +151,9 @@ namespace PlayFab } /// - /// Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's + /// inventory. /// public static void ConsumeItem(ConsumeItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -232,22 +236,10 @@ namespace PlayFab } /// - /// Inform the matchmaker that a Game Server Instance is removed. - /// - [Obsolete("No longer available", false)] - public static void DeregisterGame(DeregisterGameRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/DeregisterGame", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Returns the result of an evaluation of a Random Result Table - the ItemId from the game Catalog which would have been - /// added to the player inventory, if the Random Result Table were added via a Bundle or a call to UnlockContainer. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Returns the result of an evaluation of a Random Result Table - the ItemId from the game Catalog which would + /// have been added to the player inventory, if the Random Result Table were added via a Bundle or a call to + /// UnlockContainer. /// public static void EvaluateRandomResultTable(EvaluateRandomResultTableRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -322,7 +314,8 @@ namespace PlayFab } /// - /// Retrieves the specified version of the title's catalog of virtual goods, including all defined properties + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified version of the title's catalog of virtual goods, including all defined properties /// public static void GetCatalogItems(GetCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -361,7 +354,8 @@ namespace PlayFab } /// - /// Retrieves the specified character's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified character's current inventory of virtual goods /// public static void GetCharacterInventory(GetCharacterInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -686,6 +680,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromPSNAccountIDs", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of PlayStation :tm: Network identifiers. + /// + public static void GetPlayFabIDsFromPSNOnlineIDs(GetPlayFabIDsFromPSNOnlineIDsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromPSNOnlineIDs", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile /// IDs for the user accounts, available as SteamId in the Steamworks Community API calls. @@ -700,6 +707,20 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromSteamIDs", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are persona + /// names. + /// + public static void GetPlayFabIDsFromSteamNames(GetPlayFabIDsFromSteamNamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromSteamNames", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Twitch identifiers. The Twitch identifiers are the IDs for /// the user accounts, available as "_id" from the Twitch API methods (ex: @@ -742,8 +763,9 @@ namespace PlayFab } /// - /// Retrieves the configuration information for the specified random results tables for the title, including all ItemId - /// values and weights + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the configuration information for the specified random results tables for the title, including all + /// ItemId values and weights /// public static void GetRandomResultTables(GetRandomResultTablesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -784,7 +806,9 @@ namespace PlayFab } /// - /// Retrieves the set of items defined for the specified store, including all prices defined, for the specified player + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the set of items defined for the specified store, including all prices defined, for the specified + /// player /// public static void GetStoreItems(GetStoreItemsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -901,7 +925,8 @@ namespace PlayFab } /// - /// Retrieves the specified user's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified user's current inventory of virtual goods /// public static void GetUserInventory(GetUserInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -980,7 +1005,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified character's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified character's inventory /// public static void GrantItemsToCharacter(GrantItemsToCharacterRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -993,7 +1019,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified user's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified user's inventory /// public static void GrantItemsToUser(GrantItemsToUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1006,7 +1033,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified user inventories + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified user inventories /// public static void GrantItemsToUsers(GrantItemsToUsersRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1031,6 +1059,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkNintendoServiceAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Links the Nintendo account associated with the Nintendo Service Account subject or id to the user's PlayFab account + /// + public static void LinkNintendoServiceAccountSubject(LinkNintendoServiceAccountSubjectRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Server/LinkNintendoServiceAccountSubject", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Links the NintendoSwitchDeviceId to the user's PlayFab account /// @@ -1057,6 +1098,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkPSNAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Links the PlayStation :tm: Network account associated with the provided user id to the user's PlayFab account + /// + public static void LinkPSNId(LinkPSNIdRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Server/LinkPSNId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Links the custom server identifier, generated by the title, to the user's PlayFab account. /// @@ -1070,6 +1124,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkServerCustomId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Links the Steam account associated with the provided Steam ID to the user's PlayFab account + /// + public static void LinkSteamId(LinkSteamIdRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Server/LinkSteamId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Links the Xbox Live account associated with the provided access code to the user's PlayFab account /// @@ -1083,6 +1150,20 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkXboxAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Signs the user in using a PlayStation :tm: Network authentication code, returning a session identifier that can + /// subsequently be used for API calls which require an authenticated user + /// + public static void LoginWithPSN(LoginWithPSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Server/LoginWithPSN", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Securely login a game client from an external server backend using a custom identifier for that player. Server Custom ID /// and Client Custom ID are mutually exclusive and cannot be used to retrieve the same player account. @@ -1140,7 +1221,8 @@ namespace PlayFab } /// - /// Modifies the number of remaining uses of a player's inventory item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Modifies the number of remaining uses of a player's inventory item /// public static void ModifyItemUses(ModifyItemUsesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1153,7 +1235,8 @@ namespace PlayFab } /// - /// Moves an item from a character's inventory into another of the users's character's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Moves an item from a character's inventory into another of the users's character's inventory. /// public static void MoveItemToCharacterFromCharacter(MoveItemToCharacterFromCharacterRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1166,7 +1249,8 @@ namespace PlayFab } /// - /// Moves an item from a user's inventory into their character's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Moves an item from a user's inventory into their character's inventory. /// public static void MoveItemToCharacterFromUser(MoveItemToCharacterFromUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1179,7 +1263,8 @@ namespace PlayFab } /// - /// Moves an item from a character's inventory into the owning user's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Moves an item from a character's inventory into the owning user's inventory. /// public static void MoveItemToUserFromCharacter(MoveItemToUserFromCharacterRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1192,21 +1277,8 @@ namespace PlayFab } /// - /// Informs the PlayFab match-making service that the user specified has left the Game Server Instance - /// - [Obsolete("No longer available", false)] - public static void NotifyMatchmakerPlayerLeft(NotifyMatchmakerPlayerLeftRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/NotifyMatchmakerPlayerLeft", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the /// Economy->Catalogs tab in the PlayFab Game Manager. /// public static void RedeemCoupon(RedeemCouponRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -1219,48 +1291,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/RedeemCoupon", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } - /// - /// Validates a Game Server session ticket and returns details about the user - /// - [Obsolete("No longer available", false)] - public static void RedeemMatchmakerTicket(RedeemMatchmakerTicketRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/RedeemMatchmakerTicket", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Set the state of the indicated Game Server Instance. Also update the heartbeat for the instance. - /// - [Obsolete("No longer available", false)] - public static void RefreshGameServerInstanceHeartbeat(RefreshGameServerInstanceHeartbeatRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/RefreshGameServerInstanceHeartbeat", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Inform the matchmaker that a new Game Server Instance is added. - /// - [Obsolete("No longer available", false)] - public static void RegisterGame(RegisterGameRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/RegisterGame", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - /// /// Removes the specified friend from the the user's friend list /// @@ -1357,7 +1387,8 @@ namespace PlayFab } /// - /// Revokes access to an item in a user's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access to an item in a user's inventory /// public static void RevokeInventoryItem(RevokeInventoryItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1370,7 +1401,8 @@ namespace PlayFab } /// - /// Revokes access for up to 25 items across multiple users and characters. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access for up to 25 items across multiple users and characters. /// public static void RevokeInventoryItems(RevokeInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1463,48 +1495,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/SetFriendTags", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } - /// - /// Sets the custom data of the indicated Game Server Instance - /// - [Obsolete("No longer available", false)] - public static void SetGameServerInstanceData(SetGameServerInstanceDataRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/SetGameServerInstanceData", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Set the state of the indicated Game Server Instance. - /// - [Obsolete("No longer available", false)] - public static void SetGameServerInstanceState(SetGameServerInstanceStateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/SetGameServerInstanceState", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - - /// - /// Set custom tags for the specified Game Server Instance - /// - [Obsolete("No longer available", false)] - public static void SetGameServerInstanceTags(SetGameServerInstanceTagsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; - var callSettings = PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - - - PlayFabHttp.MakeApiCall("/Server/SetGameServerInstanceTags", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); - } - /// /// Sets the player's secret if it is not already set. Player secrets are used to sign API requests. To reset a player's /// secret use the Admin or Server API method SetPlayerSecret. @@ -1559,8 +1549,9 @@ namespace PlayFab } /// - /// Decrements the character's balance of the specified virtual currency by the stated amount. It is possible to make a VC - /// balance negative with this API. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the character's balance of the specified virtual currency by the stated amount. It is possible to + /// make a VC balance negative with this API. /// public static void SubtractCharacterVirtualCurrency(SubtractCharacterVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1573,8 +1564,9 @@ namespace PlayFab } /// - /// Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make a VC - /// balance negative with this API. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make + /// a VC balance negative with this API. /// public static void SubtractUserVirtualCurrency(SubtractUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1638,6 +1630,19 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/UnlinkServerCustomId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); } + /// + /// Unlinks the Steam account associated with the provided Steam ID to the user's PlayFab account + /// + public static void UnlinkSteamId(UnlinkSteamIdRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer; + var callSettings = PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + + + PlayFabHttp.MakeApiCall("/Server/UnlinkSteamId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings); + } + /// /// Unlinks the related Xbox Live account from the user's PlayFab account /// @@ -1652,9 +1657,10 @@ namespace PlayFab } /// - /// Opens a specific container (ContainerItemInstanceId), with a specific key (KeyItemInstanceId, when required), and - /// returns the contents of the opened container. If the container (and key when relevant) are consumable (RemainingUses > - /// 0), their RemainingUses will be decremented, consistent with the operation of ConsumeItem. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Opens a specific container (ContainerItemInstanceId), with a specific key (KeyItemInstanceId, when + /// required), and returns the contents of the opened container. If the container (and key when relevant) are consumable + /// (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of ConsumeItem. /// public static void UnlockContainerInstance(UnlockContainerInstanceRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1667,9 +1673,10 @@ namespace PlayFab } /// - /// Searches Player or Character inventory for any ItemInstance matching the given CatalogItemId, if necessary unlocks it - /// using any appropriate key, and returns the contents of the opened container. If the container (and key when relevant) - /// are consumable (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Searches Player or Character inventory for any ItemInstance matching the given CatalogItemId, if necessary + /// unlocks it using any appropriate key, and returns the contents of the opened container. If the container (and key when + /// relevant) are consumable (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of /// ConsumeItem. /// public static void UnlockContainerItem(UnlockContainerItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -1817,7 +1824,8 @@ namespace PlayFab } /// - /// Updates the key-value pair data tagged to the specified item, which is read-only from the client. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates the key-value pair data tagged to the specified item, which is read-only from the client. /// public static void UpdateUserInventoryItemCustomData(UpdateUserInventoryItemDataRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { diff --git a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerInstanceAPI.cs b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerInstanceAPI.cs index 1a8fa4c91..55a90d895 100644 --- a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerInstanceAPI.cs +++ b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerInstanceAPI.cs @@ -48,7 +48,8 @@ namespace PlayFab } /// - /// Increments the character's balance of the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the character's balance of the specified virtual currency by the stated amount /// public void AddCharacterVirtualCurrency(AddCharacterVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -109,7 +110,8 @@ namespace PlayFab } /// - /// Increments the user's balance of the specified virtual currency by the stated amount + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Increments the user's balance of the specified virtual currency by the stated amount /// public void AddUserVirtualCurrency(AddUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -153,7 +155,9 @@ namespace PlayFab } /// - /// Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Consume uses of a consumable item. When all uses are consumed, it will be removed from the player's + /// inventory. /// public void ConsumeItem(ConsumeItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -224,20 +228,10 @@ namespace PlayFab } /// - /// Inform the matchmaker that a Game Server Instance is removed. - /// - [Obsolete("No longer available", false)] - public void DeregisterGame(DeregisterGameRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/DeregisterGame", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Returns the result of an evaluation of a Random Result Table - the ItemId from the game Catalog which would have been - /// added to the player inventory, if the Random Result Table were added via a Bundle or a call to UnlockContainer. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Returns the result of an evaluation of a Random Result Table - the ItemId from the game Catalog which would + /// have been added to the player inventory, if the Random Result Table were added via a Bundle or a call to + /// UnlockContainer. /// public void EvaluateRandomResultTable(EvaluateRandomResultTableRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -304,7 +298,8 @@ namespace PlayFab } /// - /// Retrieves the specified version of the title's catalog of virtual goods, including all defined properties + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified version of the title's catalog of virtual goods, including all defined properties /// public void GetCatalogItems(GetCatalogItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -337,7 +332,8 @@ namespace PlayFab } /// - /// Retrieves the specified character's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified character's current inventory of virtual goods /// public void GetCharacterInventory(GetCharacterInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -614,6 +610,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromPSNAccountIDs", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of PlayStation :tm: Network identifiers. + /// + public void GetPlayFabIDsFromPSNOnlineIDs(GetPlayFabIDsFromPSNOnlineIDsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromPSNOnlineIDs", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are the profile /// IDs for the user accounts, available as SteamId in the Steamworks Community API calls. @@ -626,6 +633,18 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromSteamIDs", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Retrieves the unique PlayFab identifiers for the given set of Steam identifiers. The Steam identifiers are persona + /// names. + /// + public void GetPlayFabIDsFromSteamNames(GetPlayFabIDsFromSteamNamesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Server/GetPlayFabIDsFromSteamNames", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Retrieves the unique PlayFab identifiers for the given set of Twitch identifiers. The Twitch identifiers are the IDs for /// the user accounts, available as "_id" from the Twitch API methods (ex: @@ -662,8 +681,9 @@ namespace PlayFab } /// - /// Retrieves the configuration information for the specified random results tables for the title, including all ItemId - /// values and weights + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the configuration information for the specified random results tables for the title, including all + /// ItemId values and weights /// public void GetRandomResultTables(GetRandomResultTablesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -698,7 +718,9 @@ namespace PlayFab } /// - /// Retrieves the set of items defined for the specified store, including all prices defined, for the specified player + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the set of items defined for the specified store, including all prices defined, for the specified + /// player /// public void GetStoreItems(GetStoreItemsServerRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -797,7 +819,8 @@ namespace PlayFab } /// - /// Retrieves the specified user's current inventory of virtual goods + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Retrieves the specified user's current inventory of virtual goods /// public void GetUserInventory(GetUserInventoryRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -864,7 +887,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified character's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified character's inventory /// public void GrantItemsToCharacter(GrantItemsToCharacterRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -875,7 +899,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified user's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified user's inventory /// public void GrantItemsToUser(GrantItemsToUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -886,7 +911,8 @@ namespace PlayFab } /// - /// Adds the specified items to the specified user inventories + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the specified items to the specified user inventories /// public void GrantItemsToUsers(GrantItemsToUsersRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -907,6 +933,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkNintendoServiceAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Links the Nintendo account associated with the Nintendo Service Account subject or id to the user's PlayFab account + /// + public void LinkNintendoServiceAccountSubject(LinkNintendoServiceAccountSubjectRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Server/LinkNintendoServiceAccountSubject", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Links the NintendoSwitchDeviceId to the user's PlayFab account /// @@ -929,6 +966,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkPSNAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Links the PlayStation :tm: Network account associated with the provided user id to the user's PlayFab account + /// + public void LinkPSNId(LinkPSNIdRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Server/LinkPSNId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Links the custom server identifier, generated by the title, to the user's PlayFab account. /// @@ -940,6 +988,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkServerCustomId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Links the Steam account associated with the provided Steam ID to the user's PlayFab account + /// + public void LinkSteamId(LinkSteamIdRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Server/LinkSteamId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Links the Xbox Live account associated with the provided access code to the user's PlayFab account /// @@ -951,6 +1010,18 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/LinkXboxAccount", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Signs the user in using a PlayStation :tm: Network authentication code, returning a session identifier that can + /// subsequently be used for API calls which require an authenticated user + /// + public void LoginWithPSN(LoginWithPSNRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Server/LoginWithPSN", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Securely login a game client from an external server backend using a custom identifier for that player. Server Custom ID /// and Client Custom ID are mutually exclusive and cannot be used to retrieve the same player account. @@ -1000,7 +1071,8 @@ namespace PlayFab } /// - /// Modifies the number of remaining uses of a player's inventory item + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Modifies the number of remaining uses of a player's inventory item /// public void ModifyItemUses(ModifyItemUsesRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1011,7 +1083,8 @@ namespace PlayFab } /// - /// Moves an item from a character's inventory into another of the users's character's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Moves an item from a character's inventory into another of the users's character's inventory. /// public void MoveItemToCharacterFromCharacter(MoveItemToCharacterFromCharacterRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1022,7 +1095,8 @@ namespace PlayFab } /// - /// Moves an item from a user's inventory into their character's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Moves an item from a user's inventory into their character's inventory. /// public void MoveItemToCharacterFromUser(MoveItemToCharacterFromUserRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1033,7 +1107,8 @@ namespace PlayFab } /// - /// Moves an item from a character's inventory into the owning user's inventory. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Moves an item from a character's inventory into the owning user's inventory. /// public void MoveItemToUserFromCharacter(MoveItemToUserFromCharacterRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1044,19 +1119,8 @@ namespace PlayFab } /// - /// Informs the PlayFab match-making service that the user specified has left the Game Server Instance - /// - [Obsolete("No longer available", false)] - public void NotifyMatchmakerPlayerLeft(NotifyMatchmakerPlayerLeftRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/NotifyMatchmakerPlayerLeft", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Adds the virtual goods associated with the coupon to the user's inventory. Coupons can be generated via the /// Economy->Catalogs tab in the PlayFab Game Manager. /// public void RedeemCoupon(RedeemCouponRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -1067,42 +1131,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/RedeemCoupon", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } - /// - /// Validates a Game Server session ticket and returns details about the user - /// - [Obsolete("No longer available", false)] - public void RedeemMatchmakerTicket(RedeemMatchmakerTicketRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/RedeemMatchmakerTicket", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Set the state of the indicated Game Server Instance. Also update the heartbeat for the instance. - /// - [Obsolete("No longer available", false)] - public void RefreshGameServerInstanceHeartbeat(RefreshGameServerInstanceHeartbeatRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/RefreshGameServerInstanceHeartbeat", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Inform the matchmaker that a new Game Server Instance is added. - /// - [Obsolete("No longer available", false)] - public void RegisterGame(RegisterGameRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/RegisterGame", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - /// /// Removes the specified friend from the the user's friend list /// @@ -1185,7 +1213,8 @@ namespace PlayFab } /// - /// Revokes access to an item in a user's inventory + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access to an item in a user's inventory /// public void RevokeInventoryItem(RevokeInventoryItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1196,7 +1225,8 @@ namespace PlayFab } /// - /// Revokes access for up to 25 items across multiple users and characters. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Revokes access for up to 25 items across multiple users and characters. /// public void RevokeInventoryItems(RevokeInventoryItemsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1275,42 +1305,6 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/SetFriendTags", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } - /// - /// Sets the custom data of the indicated Game Server Instance - /// - [Obsolete("No longer available", false)] - public void SetGameServerInstanceData(SetGameServerInstanceDataRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/SetGameServerInstanceData", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Set the state of the indicated Game Server Instance. - /// - [Obsolete("No longer available", false)] - public void SetGameServerInstanceState(SetGameServerInstanceStateRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/SetGameServerInstanceState", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - - /// - /// Set custom tags for the specified Game Server Instance - /// - [Obsolete("No longer available", false)] - public void SetGameServerInstanceTags(SetGameServerInstanceTagsRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) - { - var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; - var callSettings = apiSettings ?? PlayFabSettings.staticSettings; - if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } - PlayFabHttp.MakeApiCall("/Server/SetGameServerInstanceTags", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); - } - /// /// Sets the player's secret if it is not already set. Player secrets are used to sign API requests. To reset a player's /// secret use the Admin or Server API method SetPlayerSecret. @@ -1357,8 +1351,9 @@ namespace PlayFab } /// - /// Decrements the character's balance of the specified virtual currency by the stated amount. It is possible to make a VC - /// balance negative with this API. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the character's balance of the specified virtual currency by the stated amount. It is possible to + /// make a VC balance negative with this API. /// public void SubtractCharacterVirtualCurrency(SubtractCharacterVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1369,8 +1364,9 @@ namespace PlayFab } /// - /// Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make a VC - /// balance negative with this API. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Decrements the user's balance of the specified virtual currency by the stated amount. It is possible to make + /// a VC balance negative with this API. /// public void SubtractUserVirtualCurrency(SubtractUserVirtualCurrencyRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1424,6 +1420,17 @@ namespace PlayFab PlayFabHttp.MakeApiCall("/Server/UnlinkServerCustomId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); } + /// + /// Unlinks the Steam account associated with the provided Steam ID to the user's PlayFab account + /// + public void UnlinkSteamId(UnlinkSteamIdRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) + { + var context = (request == null ? null : request.AuthenticationContext) ?? authenticationContext; + var callSettings = apiSettings ?? PlayFabSettings.staticSettings; + if (string.IsNullOrEmpty(callSettings.DeveloperSecretKey)) { throw new PlayFabException(PlayFabExceptionCode.DeveloperKeyNotSet, "Must set DeveloperSecretKey in settings to call this method"); } + PlayFabHttp.MakeApiCall("/Server/UnlinkSteamId", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this); + } + /// /// Unlinks the related Xbox Live account from the user's PlayFab account /// @@ -1436,9 +1443,10 @@ namespace PlayFab } /// - /// Opens a specific container (ContainerItemInstanceId), with a specific key (KeyItemInstanceId, when required), and - /// returns the contents of the opened container. If the container (and key when relevant) are consumable (RemainingUses > - /// 0), their RemainingUses will be decremented, consistent with the operation of ConsumeItem. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Opens a specific container (ContainerItemInstanceId), with a specific key (KeyItemInstanceId, when + /// required), and returns the contents of the opened container. If the container (and key when relevant) are consumable + /// (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of ConsumeItem. /// public void UnlockContainerInstance(UnlockContainerInstanceRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { @@ -1449,9 +1457,10 @@ namespace PlayFab } /// - /// Searches Player or Character inventory for any ItemInstance matching the given CatalogItemId, if necessary unlocks it - /// using any appropriate key, and returns the contents of the opened container. If the container (and key when relevant) - /// are consumable (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Searches Player or Character inventory for any ItemInstance matching the given CatalogItemId, if necessary + /// unlocks it using any appropriate key, and returns the contents of the opened container. If the container (and key when + /// relevant) are consumable (RemainingUses > 0), their RemainingUses will be decremented, consistent with the operation of /// ConsumeItem. /// public void UnlockContainerItem(UnlockContainerItemRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) @@ -1577,7 +1586,8 @@ namespace PlayFab } /// - /// Updates the key-value pair data tagged to the specified item, which is read-only from the client. + /// _NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for + /// version 2._ Updates the key-value pair data tagged to the specified item, which is read-only from the client. /// public void UpdateUserInventoryItemCustomData(UpdateUserInventoryItemDataRequest request, Action resultCallback, Action errorCallback, object customData = null, Dictionary extraHeaders = null) { diff --git a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerModels.cs b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerModels.cs index 54b78a216..895515247 100644 --- a/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerModels.cs +++ b/Assets/ThirdParty/PlayFabSDK/Server/PlayFabServerModels.cs @@ -284,6 +284,10 @@ namespace PlayFab.ServerModels /// The reason why this ban was applied. /// public string Reason; + /// + /// The family type of the suer that is included in the ban. + /// + public string UserFamilyType; } /// @@ -308,6 +312,10 @@ namespace PlayFab.ServerModels /// The reason for this ban. Maximum 140 characters. /// public string Reason; + /// + /// The family type of the user that should be included in the ban if applicable. May affect multiple players. + /// + public UserFamilyType? UserFamilyType; } /// @@ -650,7 +658,8 @@ namespace PlayFab.ServerModels EU, NA, OC, - SA + SA, + Unknown } public enum CountryCode @@ -903,7 +912,8 @@ namespace PlayFab.ServerModels EH, YE, ZM, - ZW + ZW, + Unknown } /// @@ -1176,24 +1186,6 @@ namespace PlayFab.ServerModels public string SharedGroupId; } - [Serializable] - public class DeregisterGameRequest : PlayFabRequestCommon - { - /// - /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). - /// - public Dictionary CustomTags; - /// - /// Unique identifier for the Game Server Instance that is being deregistered. - /// - public string LobbyId; - } - - [Serializable] - public class DeregisterGameResponse : PlayFabResultCommon - { - } - public enum EmailVerificationStatus { Unverified, @@ -1398,7 +1390,7 @@ namespace PlayFab.ServerModels public class FriendInfo : PlayFabBaseModel { /// - /// Available Facebook information (if the user and PlayFab friend are also connected in Facebook). + /// Available Facebook information (if the user and connected Facebook friend both have PlayFab Accounts in the same title). /// public UserFacebookInfo FacebookInfo; /// @@ -1406,7 +1398,8 @@ namespace PlayFab.ServerModels /// public string FriendPlayFabId; /// - /// Available Game Center information (if the user and PlayFab friend are also connected in Game Center). + /// Available Game Center information (if the user and connected Game Center friend both have PlayFab Accounts in the same + /// title). /// public UserGameCenterInfo GameCenterInfo; /// @@ -1414,12 +1407,12 @@ namespace PlayFab.ServerModels /// public PlayerProfileModel Profile; /// - /// Available PlayStation :tm: Network information, if the user and PlayFab friend are both connected to PlayStation :tm: - /// Network. + /// Available PlayStation :tm: Network information, if the user connected PlayStation :tm Network friend both have PlayFab + /// Accounts in the same title. /// public UserPsnInfo PSNInfo; /// - /// Available Steam information (if the user and PlayFab friend are also connected in Steam). + /// Available Steam information (if the user and connected Steam friend both have PlayFab Accounts in the same title). /// public UserSteamInfo SteamInfo; /// @@ -1435,17 +1428,11 @@ namespace PlayFab.ServerModels /// public string Username; /// - /// Available Xbox information, if the user and PlayFab friend are both connected to Xbox Live. + /// Available Xbox information, (if the user and connected Xbox Live friend both have PlayFab Accounts in the same title). /// public UserXboxInfo XboxInfo; } - public enum GameInstanceState - { - Open, - Closed - } - public enum GenericErrorCodes { Success, @@ -1997,6 +1984,42 @@ namespace PlayFab.ServerModels NamespaceMismatch, InvalidServiceConfiguration, InvalidNamespaceMismatch, + LeaderboardColumnLengthMismatch, + InvalidStatisticScore, + LeaderboardColumnsNotSpecified, + LeaderboardMaxSizeTooLarge, + InvalidAttributeStatisticsSpecified, + LeaderboardNotFound, + TokenSigningKeyNotFound, + LeaderboardNameConflict, + LinkedStatisticColumnMismatch, + NoLinkedStatisticToLeaderboard, + StatDefinitionAlreadyLinkedToLeaderboard, + LinkingStatsNotAllowedForEntityType, + LeaderboardCountLimitExceeded, + LeaderboardSizeLimitExceeded, + LeaderboardDefinitionModificationNotAllowedWhileLinked, + StatisticDefinitionModificationNotAllowedWhileLinked, + LeaderboardUpdateNotAllowedWhileLinked, + CloudScriptAzureFunctionsEventHubRequestError, + ExternalEntityNotAllowedForTier, + InvalidBaseTimeForInterval, + EntityTypeMismatchWithStatDefinition, + SpecifiedVersionLeaderboardNotFound, + LeaderboardColumnLengthMismatchWithStatDefinition, + DuplicateColumnNameFound, + LinkedStatisticColumnNotFound, + LinkedStatisticColumnRequired, + MultipleLinkedStatisticsNotAllowed, + DuplicateLinkedStatisticColumnNameFound, + AggregationTypeNotAllowedForMultiColumnStatistic, + MaxQueryableVersionsValueNotAllowedForTier, + StatisticDefinitionHasNullOrEmptyVersionConfiguration, + StatisticColumnLengthMismatch, + InvalidExternalEntityId, + UpdatingStatisticsUsingTransactionIdNotAvailableForFreeTier, + TransactionAlreadyApplied, + ReportDataNotRetrievedSuccessfully, MatchmakingEntityInvalid, MatchmakingPlayerAttributesInvalid, MatchmakingQueueNotFound, @@ -2040,6 +2063,7 @@ namespace PlayFab.ServerModels CatalogItemTypeInvalid, CatalogBadRequest, CatalogTooManyRequests, + InvalidCatalogItemConfiguration, ExportInvalidStatusUpdate, ExportInvalidPrefix, ExportBlobContainerDoesNotExist, @@ -2086,6 +2110,7 @@ namespace PlayFab.ServerModels MultiplayerServerBuildReferencedByMatchmakingQueue, MultiplayerServerBuildReferencedByBuildAlias, MultiplayerServerBuildAliasReferencedByMatchmakingQueue, + PartySerializationError, ExperimentationExperimentStopped, ExperimentationExperimentRunning, ExperimentationExperimentNotFound, @@ -2125,6 +2150,7 @@ namespace PlayFab.ServerModels AsyncExportNotInFlight, AsyncExportNotFound, AsyncExportRateLimitExceeded, + AnalyticsSegmentCountOverLimit, SnapshotNotFound, InventoryApiNotImplemented, LobbyDoesNotExist, @@ -2139,6 +2165,12 @@ namespace PlayFab.ServerModels LobbyNewOwnerMustBeConnected, LobbyCurrentOwnerStillConnected, LobbyMemberIsNotOwner, + LobbyServerMismatch, + LobbyServerNotFound, + LobbyDifferentServerAlreadyJoined, + LobbyServerAlreadyJoined, + LobbyIsNotClientOwned, + LobbyDoesNotUseConnections, EventSamplingInvalidRatio, EventSamplingInvalidEventNamespace, EventSamplingInvalidEventName, @@ -2149,6 +2181,7 @@ namespace PlayFab.ServerModels TelemetryKeyInvalid, TelemetryKeyCountOverLimit, TelemetryKeyDeactivated, + TelemetryKeyLongInsightsRetentionNotAllowed, EventSinkConnectionInvalid, EventSinkConnectionUnauthorized, EventSinkRegionInvalid, @@ -2161,9 +2194,121 @@ namespace PlayFab.ServerModels EventSinkTenantNotFound, EventSinkAadNotFound, EventSinkDatabaseNotFound, + EventSinkTitleUnauthorized, + EventSinkInsufficientRoleAssignment, + EventSinkContainerNotFound, + EventSinkTenantIdInvalid, OperationCanceled, InvalidDisplayNameRandomSuffixLength, - AllowNonUniquePlayerDisplayNamesDisableNotAllowed + AllowNonUniquePlayerDisplayNamesDisableNotAllowed, + PartitionedEventInvalid, + PartitionedEventCountOverLimit, + ManageEventNamespaceInvalid, + ManageEventNameInvalid, + ManagedEventNotFound, + ManageEventsInvalidRatio, + ManagedEventInvalid, + PlayerCustomPropertiesPropertyNameTooLong, + PlayerCustomPropertiesPropertyNameIsInvalid, + PlayerCustomPropertiesStringPropertyValueTooLong, + PlayerCustomPropertiesValueIsInvalidType, + PlayerCustomPropertiesVersionMismatch, + PlayerCustomPropertiesPropertyCountTooHigh, + PlayerCustomPropertiesDuplicatePropertyName, + PlayerCustomPropertiesPropertyDoesNotExist, + AddonAlreadyExists, + AddonDoesntExist, + CopilotDisabled, + CopilotInvalidRequest, + TrueSkillUnauthorized, + TrueSkillInvalidTitleId, + TrueSkillInvalidScenarioId, + TrueSkillInvalidModelId, + TrueSkillInvalidModelName, + TrueSkillInvalidPlayerIds, + TrueSkillInvalidEntityKey, + TrueSkillInvalidConditionKey, + TrueSkillInvalidConditionValue, + TrueSkillInvalidConditionAffinityWeight, + TrueSkillInvalidEventName, + TrueSkillMatchResultCreated, + TrueSkillMatchResultAlreadySubmitted, + TrueSkillBadPlayerIdInMatchResult, + TrueSkillInvalidBotIdInMatchResult, + TrueSkillDuplicatePlayerInMatchResult, + TrueSkillNoPlayerInMatchResultTeam, + TrueSkillPlayersInMatchResultExceedingLimit, + TrueSkillInvalidPreMatchPartyInMatchResult, + TrueSkillInvalidTimestampInMatchResult, + TrueSkillStartTimeMissingInMatchResult, + TrueSkillEndTimeMissingInMatchResult, + TrueSkillInvalidPlayerSecondsPlayedInMatchResult, + TrueSkillNoTeamInMatchResult, + TrueSkillNotEnoughTeamsInMatchResult, + TrueSkillInvalidRanksInMatchResult, + TrueSkillNoWinnerInMatchResult, + TrueSkillMissingRequiredCondition, + TrueSkillMissingRequiredEvent, + TrueSkillUnknownEventName, + TrueSkillInvalidEventCount, + TrueSkillUnknownConditionKey, + TrueSkillUnknownConditionValue, + TrueSkillScenarioConfigDoesNotExist, + TrueSkillUnknownModelId, + TrueSkillNoModelInScenario, + TrueSkillNotSupportedForTitle, + TrueSkillModelIsNotActive, + TrueSkillUnauthorizedToQueryOtherPlayerSkills, + TrueSkillInvalidMaxIterations, + TrueSkillEndTimeBeforeStartTime, + TrueSkillInvalidJobId, + TrueSkillInvalidMetadataId, + TrueSkillMissingBuildVerison, + TrueSkillJobAlreadyExists, + TrueSkillJobNotFound, + TrueSkillOperationCanceled, + TrueSkillActiveModelLimitExceeded, + TrueSkillTotalModelLimitExceeded, + TrueSkillUnknownInitialModelId, + TrueSkillUnauthorizedForJob, + TrueSkillInvalidScenarioName, + TrueSkillConditionStateIsRequired, + TrueSkillEventStateIsRequired, + TrueSkillDuplicateEvent, + TrueSkillDuplicateCondition, + TrueSkillInvalidAnomalyThreshold, + TrueSkillConditionKeyLimitExceeded, + TrueSkillConditionValuePerKeyLimitExceeded, + TrueSkillInvalidTimestamp, + TrueSkillEventLimitExceeded, + TrueSkillInvalidPlayers, + TrueSkillTrueSkillPlayerNull, + TrueSkillInvalidPlayerId, + TrueSkillInvalidSquadSize, + TrueSkillConditionSetNotInModel, + TrueSkillModelStateInvalidForOperation, + TrueSkillScenarioContainsActiveModel, + GameSaveManifestNotFound, + GameSaveManifestVersionAlreadyExists, + GameSaveConflictUpdatingManifest, + GameSaveManifestUpdatesNotAllowed, + GameSaveFileAlreadyExists, + GameSaveManifestVersionNotFinalized, + GameSaveUnknownFileInManifest, + GameSaveFileExceededReportedSize, + GameSaveFileNotUploaded, + GameSaveBadRequest, + GameSaveOperationNotAllowed, + GameSaveDataStorageQuotaExceeded, + GameSaveNewerManifestExists, + StateShareForbidden, + StateShareTitleNotInFlight, + StateShareStateNotFound, + StateShareLinkNotFound, + StateShareStateRedemptionLimitExceeded, + StateShareStateRedemptionLimitNotUpdated, + StateShareCreatedStatesLimitExceeded, + StateShareIdMissingOrMalformed } [Serializable] @@ -2430,16 +2575,6 @@ namespace PlayFab.ServerModels /// public ExternalFriendSources? ExternalPlatformFriends; /// - /// Indicates whether Facebook friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeFacebookFriends; - /// - /// Indicates whether Steam service friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeSteamFriends; - /// /// Maximum number of entries to retrieve. /// public int MaxResultsCount; @@ -2484,16 +2619,6 @@ namespace PlayFab.ServerModels /// public ExternalFriendSources? ExternalPlatformFriends; /// - /// Indicates whether Facebook friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeFacebookFriends; - /// - /// Indicates whether Steam service friends should be included in the response. Default is true. - /// - [Obsolete("Use 'ExternalPlatformFriends' instead", true)] - public bool? IncludeSteamFriends; - /// /// PlayFab identifier of the player whose friend list to get. /// public string PlayFabId; @@ -3189,6 +3314,32 @@ namespace PlayFab.ServerModels public List Data; } + [Serializable] + public class GetPlayFabIDsFromPSNOnlineIDsRequest : PlayFabRequestCommon + { + /// + /// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment. + /// + public int? IssuerId; + /// + /// Array of unique PlayStation :tm: Network identifiers for which the title needs to get PlayFab identifiers. The array + /// cannot exceed 2,000 in length. + /// + public List PSNOnlineIDs; + } + + /// + /// For PlayStation :tm: Network identifiers which have not been linked to PlayFab accounts, null will be returned. + /// + [Serializable] + public class GetPlayFabIDsFromPSNOnlineIDsResult : PlayFabResultCommon + { + /// + /// Mapping of PlayStation :tm: Network identifiers to PlayFab identifiers. + /// + public List Data; + } + [Serializable] public class GetPlayFabIDsFromSteamIDsRequest : PlayFabRequestCommon { @@ -3211,6 +3362,28 @@ namespace PlayFab.ServerModels public List Data; } + [Serializable] + public class GetPlayFabIDsFromSteamNamesRequest : PlayFabRequestCommon + { + /// + /// Array of unique Steam identifiers for which the title needs to get PlayFab identifiers. The array cannot exceed 2,000 in + /// length. + /// + public List SteamNames; + } + + /// + /// For Steam identifiers which have not been linked to PlayFab accounts, null will be returned. + /// + [Serializable] + public class GetPlayFabIDsFromSteamNamesResult : PlayFabResultCommon + { + /// + /// Mapping of Steam identifiers to PlayFab identifiers. + /// + public List Data; + } + [Serializable] public class GetPlayFabIDsFromTwitchIDsRequest : PlayFabRequestCommon { @@ -4021,6 +4194,27 @@ namespace PlayFab.ServerModels public string PlayFabId; } + [Serializable] + public class LinkNintendoServiceAccountSubjectRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// If another user is already linked to a specific Nintendo Service Account, unlink the other user and re-link. + /// + public bool? ForceLink; + /// + /// Unique PlayFab assigned ID of the user on whom the operation will be performed. + /// + public string PlayFabId; + /// + /// The Nintendo Service Account subject or id to link to the PlayFab user. + /// + public string Subject; + } + [Serializable] public class LinkNintendoSwitchDeviceIdRequest : PlayFabRequestCommon { @@ -4081,6 +4275,36 @@ namespace PlayFab.ServerModels { } + [Serializable] + public class LinkPSNIdRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// If another user is already linked to the account, unlink the other user and re-link. + /// + public bool? ForceLink; + /// + /// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment. + /// + public int? IssuerId; + /// + /// Unique PlayFab assigned ID of the user on whom the operation will be performed. + /// + public string PlayFabId; + /// + /// Id of the PlayStation :tm: Network user. Also known as the PSN Account Id. + /// + public string PSNUserId; + } + + [Serializable] + public class LinkPSNIdResponse : PlayFabResultCommon + { + } + [Serializable] public class LinkServerCustomIdRequest : PlayFabRequestCommon { @@ -4107,6 +4331,32 @@ namespace PlayFab.ServerModels { } + [Serializable] + public class LinkSteamIdRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// If another user is already linked to the account, unlink the other user and re-link. + /// + public bool? ForceLink; + /// + /// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Xbox Live identifier. + /// + public string PlayFabId; + /// + /// Unique Steam identifier for a user. + /// + public string SteamId; + } + + [Serializable] + public class LinkSteamIdResult : PlayFabResultCommon + { + } + [Serializable] public class LinkXboxAccountRequest : PlayFabRequestCommon { @@ -4218,7 +4468,45 @@ namespace PlayFab.ServerModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King + } + + /// + /// If this is the first time a user has signed in with the PlayStation :tm: Network account and CreateAccount is set to + /// true, a new PlayFab account will be created and linked to the PlayStation :tm: Network account. In this case, no email + /// or username will be associated with the PlayFab account. Otherwise, if no PlayFab account is linked to the PlayStation + /// :tm: Network account, an error indicating this will be returned, so that the title can guide the user through creation + /// of a PlayFab account. + /// + [Serializable] + public class LoginWithPSNRequest : PlayFabRequestCommon + { + /// + /// Auth code provided by the PlayStation :tm: Network OAuth provider. + /// + public string AuthCode; + /// + /// Automatically create a PlayFab account if one is not currently linked to this ID. + /// + public bool? CreateAccount; + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Flags for which pieces of info to return for the user. + /// + public GetPlayerCombinedInfoRequestParams InfoRequestParameters; + /// + /// Id of the PlayStation :tm: Network issuer environment. If null, defaults to production environment. + /// + public int? IssuerId; + /// + /// Redirect URI supplied to PlayStation :tm: Network when requesting an auth code + /// + public string RedirectUri; } [Serializable] @@ -4270,7 +4558,7 @@ namespace PlayFab.ServerModels /// public GetPlayerCombinedInfoRequestParams InfoRequestParameters; /// - /// Unique Steam identifier for a user + /// Unique Steam identifier for a user. /// public string SteamId; } @@ -4301,7 +4589,7 @@ namespace PlayFab.ServerModels /// public string Sandbox; /// - /// Unique Xbox identifier for a user + /// Unique Xbox identifier for a user. /// public string XboxId; } @@ -4556,40 +4844,6 @@ namespace PlayFab.ServerModels public string PlayFabId; } - [Serializable] - public class NotifyMatchmakerPlayerLeftRequest : PlayFabRequestCommon - { - /// - /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). - /// - public Dictionary CustomTags; - /// - /// Unique identifier of the Game Instance the user is leaving. - /// - public string LobbyId; - /// - /// Unique PlayFab assigned ID of the user on whom the operation will be performed. - /// - public string PlayFabId; - } - - [Serializable] - public class NotifyMatchmakerPlayerLeftResult : PlayFabResultCommon - { - /// - /// State of user leaving the Game Server Instance. - /// - public PlayerConnectionState? PlayerState; - } - - public enum PlayerConnectionState - { - Unassigned, - Connecting, - Participating, - Participated - } - [Serializable] public class PlayerLeaderboardEntry : PlayFabBaseModel { @@ -4979,6 +5233,20 @@ namespace PlayFab.ServerModels public string PSNAccountId; } + [Serializable] + public class PSNOnlinePlayFabIdPair : PlayFabBaseModel + { + /// + /// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the PlayStation :tm: Network + /// identifier. + /// + public string PlayFabId; + /// + /// Unique PlayStation :tm: Network identifier for a user. + /// + public string PSNOnlineId; + } + [Serializable] public class PushNotificationPackage : PlayFabBaseModel { @@ -5096,131 +5364,6 @@ namespace PlayFab.ServerModels public List GrantedItems; } - /// - /// This function is used by a Game Server Instance to validate with the PlayFab service that a user has been registered as - /// connected to the server. The Ticket is provided to the client either as a result of a call to StartGame or Matchmake, - /// each of which return a Ticket specific to the Game Server Instance. This function will fail in any case where the Ticket - /// presented is not valid for the specific Game Server Instance making the call. Note that data returned may be Personally - /// Identifying Information (PII), such as email address, and so care should be taken in how this data is stored and - /// managed. Since this call will always return the relevant information for users who have accessed the title, the - /// recommendation is to not store this data locally. - /// - [Serializable] - public class RedeemMatchmakerTicketRequest : PlayFabRequestCommon - { - /// - /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). - /// - public Dictionary CustomTags; - /// - /// Unique identifier of the Game Server Instance that is asking for validation of the authorization ticket. - /// - public string LobbyId; - /// - /// Server authorization ticket passed back from a call to Matchmake or StartGame. - /// - public string Ticket; - } - - [Serializable] - public class RedeemMatchmakerTicketResult : PlayFabResultCommon - { - /// - /// Error value if the ticket was not validated. - /// - public string Error; - /// - /// Boolean indicating whether the ticket was validated by the PlayFab service. - /// - public bool TicketIsValid; - /// - /// User account information for the user validated. - /// - public UserAccountInfo UserInfo; - } - - [Serializable] - public class RefreshGameServerInstanceHeartbeatRequest : PlayFabRequestCommon - { - /// - /// Unique identifier of the Game Server Instance for which the heartbeat is updated. - /// - public string LobbyId; - } - - [Serializable] - public class RefreshGameServerInstanceHeartbeatResult : PlayFabResultCommon - { - } - - public enum Region - { - USCentral, - USEast, - EUWest, - Singapore, - Japan, - Brazil, - Australia - } - - [Serializable] - public class RegisterGameRequest : PlayFabRequestCommon - { - /// - /// Unique identifier of the build running on the Game Server Instance. - /// - public string Build; - /// - /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). - /// - public Dictionary CustomTags; - /// - /// Game Mode the Game Server instance is running. Note that this must be defined in the Game Modes tab in the PlayFab Game - /// Manager, along with the Build ID (the same Game Mode can be defined for multiple Build IDs). - /// - public string GameMode; - /// - /// Previous lobby id if re-registering an existing game. - /// - public string LobbyId; - /// - /// Region in which the Game Server Instance is running. For matchmaking using non-AWS region names, set this to any AWS - /// region and use Tags (below) to specify your custom region. - /// - public Region Region; - /// - /// IPV4 address of the game server instance. - /// - public string ServerIPV4Address; - /// - /// IPV6 address (if any) of the game server instance. - /// - public string ServerIPV6Address; - /// - /// Port number for communication with the Game Server Instance. - /// - public string ServerPort; - /// - /// Public DNS name (if any) of the server - /// - public string ServerPublicDNSName; - /// - /// Tags for the Game Server Instance - /// - public Dictionary Tags; - } - - [Serializable] - public class RegisterGameResponse : PlayFabResultCommon - { - /// - /// Unique identifier generated for the Game Server Instance that is registered. If LobbyId is specified in request and the - /// game still exists in PlayFab, the LobbyId in request is returned. Otherwise a new lobby id will be returned. - /// - public string LobbyId; - } - [Serializable] public class RemoveFriendRequest : PlayFabRequestCommon { @@ -5717,61 +5860,6 @@ namespace PlayFab.ServerModels public List Tags; } - [Serializable] - public class SetGameServerInstanceDataRequest : PlayFabRequestCommon - { - /// - /// Custom data to set for the specified game server instance. - /// - public string GameServerData; - /// - /// Unique identifier of the Game Instance to be updated, in decimal format. - /// - public string LobbyId; - } - - [Serializable] - public class SetGameServerInstanceDataResult : PlayFabResultCommon - { - } - - [Serializable] - public class SetGameServerInstanceStateRequest : PlayFabRequestCommon - { - /// - /// Unique identifier of the Game Instance to be updated, in decimal format. - /// - public string LobbyId; - /// - /// State to set for the specified game server instance. - /// - public GameInstanceState State; - } - - [Serializable] - public class SetGameServerInstanceStateResult : PlayFabResultCommon - { - } - - [Serializable] - public class SetGameServerInstanceTagsRequest : PlayFabRequestCommon - { - /// - /// Unique identifier of the Game Server Instance to be updated. - /// - public string LobbyId; - /// - /// Tags to set for the specified Game Server Instance. Note that this is the complete list of tags to be associated with - /// the Game Server Instance. - /// - public Dictionary Tags; - } - - [Serializable] - public class SetGameServerInstanceTagsResult : PlayFabResultCommon - { - } - /// /// APIs that require signatures require that the player have a configured Player Secret Key that is used to sign all /// requests. Players that don't have a secret will be blocked from making API calls until it is configured. To create a @@ -5947,6 +6035,19 @@ namespace PlayFab.ServerModels public uint Version; } + [Serializable] + public class SteamNamePlayFabIdPair : PlayFabBaseModel + { + /// + /// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Steam identifier. + /// + public string PlayFabId; + /// + /// Unique Steam identifier for a user, also known as Steam persona name. + /// + public string SteamName; + } + [Serializable] public class SteamPlayFabIdPair : PlayFabBaseModel { @@ -6240,6 +6341,24 @@ namespace PlayFab.ServerModels { } + [Serializable] + public class UnlinkSteamIdRequest : PlayFabRequestCommon + { + /// + /// The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.). + /// + public Dictionary CustomTags; + /// + /// Unique PlayFab identifier for a user, or null if no PlayFab account is linked to the Steam account. + /// + public string PlayFabId; + } + + [Serializable] + public class UnlinkSteamIdResult : PlayFabResultCommon + { + } + [Serializable] public class UnlinkXboxAccountRequest : PlayFabRequestCommon { @@ -6388,6 +6507,10 @@ namespace PlayFab.ServerModels /// The updated reason for the ban to be updated. Maximum 140 characters. Null for no change. /// public string Reason; + /// + /// The updated family type of the user that should be included in the ban. Null for no change. + /// + public UserFamilyType? UserFamilyType; } /// @@ -6737,6 +6860,10 @@ namespace PlayFab.ServerModels /// public UserPsnInfo PsnInfo; /// + /// Server Custom ID information, if a server custom ID has been assigned + /// + public UserServerCustomIdInfo ServerCustomIdInfo; + /// /// User Steam information, if a Steam account has been linked /// public UserSteamInfo SteamInfo; @@ -6835,6 +6962,13 @@ namespace PlayFab.ServerModels public string FacebookInstantGamesId; } + public enum UserFamilyType + { + None, + Xbox, + Steam + } + [Serializable] public class UserGameCenterInfo : PlayFabBaseModel { @@ -6968,7 +7102,9 @@ namespace PlayFab.ServerModels OpenIdConnect, Apple, NintendoSwitchAccount, - GooglePlayGames + GooglePlayGames, + XboxMobileStore, + King } [Serializable] @@ -6993,6 +7129,15 @@ namespace PlayFab.ServerModels public string PsnOnlineId; } + [Serializable] + public class UserServerCustomIdInfo : PlayFabBaseModel + { + /// + /// Custom ID + /// + public string CustomId; + } + [Serializable] public class UserSettings : PlayFabBaseModel { diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabErrors.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabErrors.cs index 49b756b51..0a5bf1614 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabErrors.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabErrors.cs @@ -561,6 +561,42 @@ namespace PlayFab NamespaceMismatch = 1559, InvalidServiceConfiguration = 1560, InvalidNamespaceMismatch = 1561, + LeaderboardColumnLengthMismatch = 1562, + InvalidStatisticScore = 1563, + LeaderboardColumnsNotSpecified = 1564, + LeaderboardMaxSizeTooLarge = 1565, + InvalidAttributeStatisticsSpecified = 1566, + LeaderboardNotFound = 1567, + TokenSigningKeyNotFound = 1568, + LeaderboardNameConflict = 1569, + LinkedStatisticColumnMismatch = 1570, + NoLinkedStatisticToLeaderboard = 1571, + StatDefinitionAlreadyLinkedToLeaderboard = 1572, + LinkingStatsNotAllowedForEntityType = 1573, + LeaderboardCountLimitExceeded = 1574, + LeaderboardSizeLimitExceeded = 1575, + LeaderboardDefinitionModificationNotAllowedWhileLinked = 1576, + StatisticDefinitionModificationNotAllowedWhileLinked = 1577, + LeaderboardUpdateNotAllowedWhileLinked = 1578, + CloudScriptAzureFunctionsEventHubRequestError = 1579, + ExternalEntityNotAllowedForTier = 1580, + InvalidBaseTimeForInterval = 1581, + EntityTypeMismatchWithStatDefinition = 1582, + SpecifiedVersionLeaderboardNotFound = 1583, + LeaderboardColumnLengthMismatchWithStatDefinition = 1584, + DuplicateColumnNameFound = 1585, + LinkedStatisticColumnNotFound = 1586, + LinkedStatisticColumnRequired = 1587, + MultipleLinkedStatisticsNotAllowed = 1588, + DuplicateLinkedStatisticColumnNameFound = 1589, + AggregationTypeNotAllowedForMultiColumnStatistic = 1590, + MaxQueryableVersionsValueNotAllowedForTier = 1591, + StatisticDefinitionHasNullOrEmptyVersionConfiguration = 1592, + StatisticColumnLengthMismatch = 1593, + InvalidExternalEntityId = 1594, + UpdatingStatisticsUsingTransactionIdNotAvailableForFreeTier = 1595, + TransactionAlreadyApplied = 1596, + ReportDataNotRetrievedSuccessfully = 1597, MatchmakingEntityInvalid = 2001, MatchmakingPlayerAttributesInvalid = 2002, MatchmakingQueueNotFound = 2016, @@ -604,6 +640,7 @@ namespace PlayFab CatalogItemTypeInvalid = 4012, CatalogBadRequest = 4013, CatalogTooManyRequests = 4014, + InvalidCatalogItemConfiguration = 4015, ExportInvalidStatusUpdate = 5000, ExportInvalidPrefix = 5001, ExportBlobContainerDoesNotExist = 5002, @@ -650,6 +687,7 @@ namespace PlayFab MultiplayerServerBuildReferencedByMatchmakingQueue = 6002, MultiplayerServerBuildReferencedByBuildAlias = 6003, MultiplayerServerBuildAliasReferencedByMatchmakingQueue = 6004, + PartySerializationError = 6005, ExperimentationExperimentStopped = 7000, ExperimentationExperimentRunning = 7001, ExperimentationExperimentNotFound = 7002, @@ -689,6 +727,7 @@ namespace PlayFab AsyncExportNotInFlight = 10011, AsyncExportNotFound = 10012, AsyncExportRateLimitExceeded = 10013, + AnalyticsSegmentCountOverLimit = 10014, SnapshotNotFound = 11000, InventoryApiNotImplemented = 12000, LobbyDoesNotExist = 13000, @@ -703,6 +742,12 @@ namespace PlayFab LobbyNewOwnerMustBeConnected = 13009, LobbyCurrentOwnerStillConnected = 13010, LobbyMemberIsNotOwner = 13011, + LobbyServerMismatch = 13012, + LobbyServerNotFound = 13013, + LobbyDifferentServerAlreadyJoined = 13014, + LobbyServerAlreadyJoined = 13015, + LobbyIsNotClientOwned = 13016, + LobbyDoesNotUseConnections = 13017, EventSamplingInvalidRatio = 14000, EventSamplingInvalidEventNamespace = 14001, EventSamplingInvalidEventName = 14002, @@ -713,6 +758,7 @@ namespace PlayFab TelemetryKeyInvalid = 14203, TelemetryKeyCountOverLimit = 14204, TelemetryKeyDeactivated = 14205, + TelemetryKeyLongInsightsRetentionNotAllowed = 14206, EventSinkConnectionInvalid = 15000, EventSinkConnectionUnauthorized = 15001, EventSinkRegionInvalid = 15002, @@ -725,9 +771,121 @@ namespace PlayFab EventSinkTenantNotFound = 15009, EventSinkAadNotFound = 15010, EventSinkDatabaseNotFound = 15011, + EventSinkTitleUnauthorized = 15012, + EventSinkInsufficientRoleAssignment = 15013, + EventSinkContainerNotFound = 15014, + EventSinkTenantIdInvalid = 15015, OperationCanceled = 16000, InvalidDisplayNameRandomSuffixLength = 17000, - AllowNonUniquePlayerDisplayNamesDisableNotAllowed = 17001 + AllowNonUniquePlayerDisplayNamesDisableNotAllowed = 17001, + PartitionedEventInvalid = 18000, + PartitionedEventCountOverLimit = 18001, + ManageEventNamespaceInvalid = 18002, + ManageEventNameInvalid = 18003, + ManagedEventNotFound = 18004, + ManageEventsInvalidRatio = 18005, + ManagedEventInvalid = 18006, + PlayerCustomPropertiesPropertyNameTooLong = 19000, + PlayerCustomPropertiesPropertyNameIsInvalid = 19001, + PlayerCustomPropertiesStringPropertyValueTooLong = 19002, + PlayerCustomPropertiesValueIsInvalidType = 19003, + PlayerCustomPropertiesVersionMismatch = 19004, + PlayerCustomPropertiesPropertyCountTooHigh = 19005, + PlayerCustomPropertiesDuplicatePropertyName = 19006, + PlayerCustomPropertiesPropertyDoesNotExist = 19007, + AddonAlreadyExists = 19008, + AddonDoesntExist = 19009, + CopilotDisabled = 19100, + CopilotInvalidRequest = 19101, + TrueSkillUnauthorized = 20000, + TrueSkillInvalidTitleId = 20001, + TrueSkillInvalidScenarioId = 20002, + TrueSkillInvalidModelId = 20003, + TrueSkillInvalidModelName = 20004, + TrueSkillInvalidPlayerIds = 20005, + TrueSkillInvalidEntityKey = 20006, + TrueSkillInvalidConditionKey = 20007, + TrueSkillInvalidConditionValue = 20008, + TrueSkillInvalidConditionAffinityWeight = 20009, + TrueSkillInvalidEventName = 20010, + TrueSkillMatchResultCreated = 20011, + TrueSkillMatchResultAlreadySubmitted = 20012, + TrueSkillBadPlayerIdInMatchResult = 20013, + TrueSkillInvalidBotIdInMatchResult = 20014, + TrueSkillDuplicatePlayerInMatchResult = 20015, + TrueSkillNoPlayerInMatchResultTeam = 20016, + TrueSkillPlayersInMatchResultExceedingLimit = 20017, + TrueSkillInvalidPreMatchPartyInMatchResult = 20018, + TrueSkillInvalidTimestampInMatchResult = 20019, + TrueSkillStartTimeMissingInMatchResult = 20020, + TrueSkillEndTimeMissingInMatchResult = 20021, + TrueSkillInvalidPlayerSecondsPlayedInMatchResult = 20022, + TrueSkillNoTeamInMatchResult = 20023, + TrueSkillNotEnoughTeamsInMatchResult = 20024, + TrueSkillInvalidRanksInMatchResult = 20025, + TrueSkillNoWinnerInMatchResult = 20026, + TrueSkillMissingRequiredCondition = 20027, + TrueSkillMissingRequiredEvent = 20028, + TrueSkillUnknownEventName = 20029, + TrueSkillInvalidEventCount = 20030, + TrueSkillUnknownConditionKey = 20031, + TrueSkillUnknownConditionValue = 20032, + TrueSkillScenarioConfigDoesNotExist = 20033, + TrueSkillUnknownModelId = 20034, + TrueSkillNoModelInScenario = 20035, + TrueSkillNotSupportedForTitle = 20036, + TrueSkillModelIsNotActive = 20037, + TrueSkillUnauthorizedToQueryOtherPlayerSkills = 20038, + TrueSkillInvalidMaxIterations = 20039, + TrueSkillEndTimeBeforeStartTime = 20040, + TrueSkillInvalidJobId = 20041, + TrueSkillInvalidMetadataId = 20042, + TrueSkillMissingBuildVerison = 20043, + TrueSkillJobAlreadyExists = 20044, + TrueSkillJobNotFound = 20045, + TrueSkillOperationCanceled = 20046, + TrueSkillActiveModelLimitExceeded = 20047, + TrueSkillTotalModelLimitExceeded = 20048, + TrueSkillUnknownInitialModelId = 20049, + TrueSkillUnauthorizedForJob = 20050, + TrueSkillInvalidScenarioName = 20051, + TrueSkillConditionStateIsRequired = 20052, + TrueSkillEventStateIsRequired = 20053, + TrueSkillDuplicateEvent = 20054, + TrueSkillDuplicateCondition = 20055, + TrueSkillInvalidAnomalyThreshold = 20056, + TrueSkillConditionKeyLimitExceeded = 20057, + TrueSkillConditionValuePerKeyLimitExceeded = 20058, + TrueSkillInvalidTimestamp = 20059, + TrueSkillEventLimitExceeded = 20060, + TrueSkillInvalidPlayers = 20061, + TrueSkillTrueSkillPlayerNull = 20062, + TrueSkillInvalidPlayerId = 20063, + TrueSkillInvalidSquadSize = 20064, + TrueSkillConditionSetNotInModel = 20065, + TrueSkillModelStateInvalidForOperation = 20066, + TrueSkillScenarioContainsActiveModel = 20067, + GameSaveManifestNotFound = 20300, + GameSaveManifestVersionAlreadyExists = 20301, + GameSaveConflictUpdatingManifest = 20302, + GameSaveManifestUpdatesNotAllowed = 20303, + GameSaveFileAlreadyExists = 20304, + GameSaveManifestVersionNotFinalized = 20305, + GameSaveUnknownFileInManifest = 20306, + GameSaveFileExceededReportedSize = 20307, + GameSaveFileNotUploaded = 20308, + GameSaveBadRequest = 20309, + GameSaveOperationNotAllowed = 20310, + GameSaveDataStorageQuotaExceeded = 20311, + GameSaveNewerManifestExists = 20312, + StateShareForbidden = 21000, + StateShareTitleNotInFlight = 21001, + StateShareStateNotFound = 21002, + StateShareLinkNotFound = 21003, + StateShareStateRedemptionLimitExceeded = 21004, + StateShareStateRedemptionLimitNotUpdated = 21005, + StateShareCreatedStatesLimitExceeded = 21006, + StateShareIdMissingOrMalformed = 21007 } public class PlayFabError diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs new file mode 100644 index 000000000..a9e6368fe --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs @@ -0,0 +1,57 @@ +using PlayFab; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using UnityEngine.Networking; + +public class GzipDownloadHandler : DownloadHandlerScript +{ + private byte[] _data; + public byte[] Data { get { return _data; } } + + public GzipDownloadHandler() : base() + { + } + + protected override byte[] GetData() { return _data; } + + protected override bool ReceiveData(byte[] data, int dataLength) + { + if (_data == null) + _data = data; + else + { + byte[] newData = new byte[_data.Length + dataLength]; + _data.CopyTo(newData, 0); + data.CopyTo(newData, _data.Length); + _data = newData; + } + return true; + } + + protected override void CompleteContent() + { + try + { + using MemoryStream stream = new MemoryStream(_data); + using GZipStream gZipStream = new GZipStream(stream, CompressionMode.Decompress, true); + + byte[] buffer = new byte[4096]; + using MemoryStream resultStream = new MemoryStream(); + + int read; + while ((read = gZipStream.Read(buffer, 0, buffer.Length)) > 0) + { + resultStream.Write(buffer, 0, read); + } + + _data = resultStream.ToArray(); + } + catch (IOException) + { + // If we fail to decompress, it should be because Unity silently decompressed already, so we should disable this custom handler. + // There is no info on which platforms Unity decompresses on, so we have to assume this is needed until we reach this. + PlayFabSettings.staticSettings.DecompressWithDownloadHandler = false; + } + } +} diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs.meta b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs.meta new file mode 100644 index 000000000..e51896e56 --- /dev/null +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/GzipDownloadHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40479a6315f18a54a9db2c924e0af5ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/IPlayFabHttp.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/IPlayFabHttp.cs index 59f79e135..2977de039 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/IPlayFabHttp.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/IPlayFabHttp.cs @@ -11,6 +11,7 @@ namespace PlayFab.Internal LoginSession, // "X-Authorization" DevSecretKey, // "X-SecretKey" EntityToken, // "X-EntityToken" + TelemetryKey // "X-TelemetryKey" } public enum HttpRequestState diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabHTTP.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabHTTP.cs index 3f5e7bc26..23894d906 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabHTTP.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabHTTP.cs @@ -201,6 +201,10 @@ namespace PlayFab.Internal reqContainer.RequestHeaders["X-EntityToken"] = authenticationContext.EntityToken; break; #endif + case AuthType.TelemetryKey: + if (authenticationContext != null) + reqContainer.RequestHeaders["X-TelemetryKey"] = authenticationContext.TelemetryKey; + break; } // These closures preserve the TResult generic information in a way that's safe for all the devices diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabUnityHttp.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabUnityHttp.cs index ff24ef960..98d2c4c9f 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabUnityHttp.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabUnityHttp.cs @@ -43,6 +43,16 @@ namespace PlayFab.Internal { using (UnityWebRequest www = UnityWebRequest.Get(fullUrl)) { + if (PlayFabSettings.staticSettings.CompressResponses) + { + www.SetRequestHeader("Accept-Encoding", "gzip"); + + if (PlayFabSettings.staticSettings.DecompressWithDownloadHandler) + { + www.downloadHandler = new GzipDownloadHandler(); + } + } + #if UNITY_2017_2_OR_NEWER yield return www.SendWebRequest(); #else @@ -67,8 +77,18 @@ namespace PlayFab.Internal { request = new UnityWebRequest(fullUrl, "POST"); request.uploadHandler = (UploadHandler)new UploadHandlerRaw(payload); - request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); + + if (PlayFabSettings.staticSettings.CompressResponses) + { + request.SetRequestHeader("Accept-Encoding", "gzip"); + request.downloadHandler = PlayFabSettings.staticSettings.DecompressWithDownloadHandler ? new GzipDownloadHandler() + : new DownloadHandlerBuffer(); + } + else + { + request.downloadHandler = new DownloadHandlerBuffer(); + } } @@ -117,10 +137,20 @@ namespace PlayFab.Internal using var www = new UnityWebRequest(reqContainer.FullUrl) { uploadHandler = new UploadHandlerRaw(reqContainer.Payload), - downloadHandler = new DownloadHandlerBuffer(), method = "POST" }; + if (reqContainer.settings.CompressResponses) + { + www.SetRequestHeader("Accept-Encoding", "gzip"); + www.downloadHandler = reqContainer.settings.DecompressWithDownloadHandler ? new GzipDownloadHandler() + : new DownloadHandlerBuffer(); + } + else + { + www.downloadHandler = new DownloadHandlerBuffer(); + } + foreach (var headerPair in reqContainer.RequestHeaders) { if (!string.IsNullOrEmpty(headerPair.Key) && !string.IsNullOrEmpty(headerPair.Value)) diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Models/PlayFabSharedSettings.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Models/PlayFabSharedSettings.cs index c185e10eb..8067a1260 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Models/PlayFabSharedSettings.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Models/PlayFabSharedSettings.cs @@ -25,6 +25,8 @@ public class PlayFabSharedSettings : ScriptableObject public int RequestTimeout = 2000; public bool RequestKeepAlive = true; + public bool CompressResponses = false; + public bool DecompressWithDownloadHandler = true; public PlayFabLogLevel LogLevel = PlayFabLogLevel.Warning | PlayFabLogLevel.Error; public string LoggerHost = ""; diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabApiSettings.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabApiSettings.cs index 3c64af376..d9e3c72f8 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabApiSettings.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabApiSettings.cs @@ -28,6 +28,12 @@ namespace PlayFab /// Set this to true to prevent focus change information from leaving the device public virtual bool DisableFocusTimeCollection { get; set; } + /// Set to enable Gzip compression on all responses. Defaults to false. + public virtual bool CompressResponses { get; set; } + + /// Enables the custom Gzip DownloadHandler on all responses. Defaults to true. + internal virtual bool DecompressWithDownloadHandler { get; set; } = true; + public virtual string GetFullUrl(string apiCall, Dictionary getParams) { @@ -80,5 +86,17 @@ namespace PlayFab get { var so = GetSO(); return so == null ? base.DisableFocusTimeCollection : so.DisableFocusTimeCollection; } set { var so = GetSO(); if (so != null) so.DisableFocusTimeCollection = value; base.DisableFocusTimeCollection = value; } } + + public override bool CompressResponses + { + get { var so = GetSO(); return so == null ? base.CompressResponses : so.CompressResponses; } + set { var so = GetSO(); if (so != null) so.CompressResponses = value; base.CompressResponses = value; } + } + + internal override bool DecompressWithDownloadHandler + { + get { var so = GetSO(); return so == null ? base.DecompressWithDownloadHandler : so.DecompressWithDownloadHandler; } + set { var so = GetSO(); if (so != null) so.DecompressWithDownloadHandler = value; base.DecompressWithDownloadHandler = value; } + } } } diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabAuthenticationContext.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabAuthenticationContext.cs index cd9066d85..cf951449c 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabAuthenticationContext.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabAuthenticationContext.cs @@ -6,7 +6,7 @@ namespace PlayFab { } - public PlayFabAuthenticationContext(string clientSessionTicket, string entityToken, string playFabId, string entityId, string entityType) : this() + public PlayFabAuthenticationContext(string clientSessionTicket, string entityToken, string playFabId, string entityId, string entityType, string telemetryKey = null) : this() { #if !DISABLE_PLAYFABCLIENT_API ClientSessionTicket = clientSessionTicket; @@ -17,6 +17,7 @@ namespace PlayFab EntityId = entityId; EntityType = entityType; #endif + TelemetryKey = telemetryKey; } public void CopyFrom(PlayFabAuthenticationContext other) @@ -30,6 +31,7 @@ namespace PlayFab EntityId = other.EntityId; EntityType = other.EntityType; #endif + TelemetryKey = other.TelemetryKey; } #if !DISABLE_PLAYFABCLIENT_API @@ -61,6 +63,13 @@ namespace PlayFab } #endif + public string TelemetryKey; + + public bool IsTelemetryKeyProvided() + { + return !string.IsNullOrEmpty(TelemetryKey); + } + public void ForgetAllCredentials() { #if !DISABLE_PLAYFABCLIENT_API @@ -72,6 +81,7 @@ namespace PlayFab EntityId = null; EntityType = null; #endif + TelemetryKey = null; } } } diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabEvents.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabEvents.cs index 86cd52350..50f55e603 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabEvents.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabEvents.cs @@ -84,6 +84,9 @@ namespace PlayFab.Events if (OnAdminDeleteMasterPlayerAccountRequestEvent != null) { foreach (var each in OnAdminDeleteMasterPlayerAccountRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminDeleteMasterPlayerAccountRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnAdminDeleteMasterPlayerAccountResultEvent != null) { foreach (var each in OnAdminDeleteMasterPlayerAccountResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminDeleteMasterPlayerAccountResultEvent -= (PlayFabResultEvent)each; } } } + if (OnAdminDeleteMasterPlayerEventDataRequestEvent != null) { foreach (var each in OnAdminDeleteMasterPlayerEventDataRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminDeleteMasterPlayerEventDataRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAdminDeleteMasterPlayerEventDataResultEvent != null) { foreach (var each in OnAdminDeleteMasterPlayerEventDataResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminDeleteMasterPlayerEventDataResultEvent -= (PlayFabResultEvent)each; } } } + if (OnAdminDeleteMembershipSubscriptionRequestEvent != null) { foreach (var each in OnAdminDeleteMembershipSubscriptionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminDeleteMembershipSubscriptionRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnAdminDeleteMembershipSubscriptionResultEvent != null) { foreach (var each in OnAdminDeleteMembershipSubscriptionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminDeleteMembershipSubscriptionResultEvent -= (PlayFabResultEvent)each; } } } @@ -144,12 +147,6 @@ namespace PlayFab.Events if (OnAdminGetDataReportRequestEvent != null) { foreach (var each in OnAdminGetDataReportRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetDataReportRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnAdminGetDataReportResultEvent != null) { foreach (var each in OnAdminGetDataReportResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetDataReportResultEvent -= (PlayFabResultEvent)each; } } } - if (OnAdminGetMatchmakerGameInfoRequestEvent != null) { foreach (var each in OnAdminGetMatchmakerGameInfoRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetMatchmakerGameInfoRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnAdminGetMatchmakerGameInfoResultEvent != null) { foreach (var each in OnAdminGetMatchmakerGameInfoResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetMatchmakerGameInfoResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnAdminGetMatchmakerGameModesRequestEvent != null) { foreach (var each in OnAdminGetMatchmakerGameModesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetMatchmakerGameModesRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnAdminGetMatchmakerGameModesResultEvent != null) { foreach (var each in OnAdminGetMatchmakerGameModesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetMatchmakerGameModesResultEvent -= (PlayFabResultEvent)each; } } } - if (OnAdminGetPlayedTitleListRequestEvent != null) { foreach (var each in OnAdminGetPlayedTitleListRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetPlayedTitleListRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnAdminGetPlayedTitleListResultEvent != null) { foreach (var each in OnAdminGetPlayedTitleListResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminGetPlayedTitleListResultEvent -= (PlayFabResultEvent)each; } } } @@ -249,9 +246,6 @@ namespace PlayFab.Events if (OnAdminListVirtualCurrencyTypesRequestEvent != null) { foreach (var each in OnAdminListVirtualCurrencyTypesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminListVirtualCurrencyTypesRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnAdminListVirtualCurrencyTypesResultEvent != null) { foreach (var each in OnAdminListVirtualCurrencyTypesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminListVirtualCurrencyTypesResultEvent -= (PlayFabResultEvent)each; } } } - if (OnAdminModifyServerBuildRequestEvent != null) { foreach (var each in OnAdminModifyServerBuildRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminModifyServerBuildRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnAdminModifyServerBuildResultEvent != null) { foreach (var each in OnAdminModifyServerBuildResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminModifyServerBuildResultEvent -= (PlayFabResultEvent)each; } } } - if (OnAdminRefundPurchaseRequestEvent != null) { foreach (var each in OnAdminRefundPurchaseRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminRefundPurchaseRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnAdminRefundPurchaseResultEvent != null) { foreach (var each in OnAdminRefundPurchaseResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAdminRefundPurchaseResultEvent -= (PlayFabResultEvent)each; } } } @@ -464,9 +458,6 @@ namespace PlayFab.Events if (OnGetContentDownloadUrlRequestEvent != null) { foreach (var each in OnGetContentDownloadUrlRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetContentDownloadUrlRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGetContentDownloadUrlResultEvent != null) { foreach (var each in OnGetContentDownloadUrlResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetContentDownloadUrlResultEvent -= (PlayFabResultEvent)each; } } } - if (OnGetCurrentGamesRequestEvent != null) { foreach (var each in OnGetCurrentGamesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetCurrentGamesRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnGetCurrentGamesResultEvent != null) { foreach (var each in OnGetCurrentGamesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetCurrentGamesResultEvent -= (PlayFabResultEvent)each; } } } - if (OnGetFriendLeaderboardRequestEvent != null) { foreach (var each in OnGetFriendLeaderboardRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetFriendLeaderboardRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGetFriendLeaderboardResultEvent != null) { foreach (var each in OnGetFriendLeaderboardResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetFriendLeaderboardResultEvent -= (PlayFabResultEvent)each; } } } @@ -476,9 +467,6 @@ namespace PlayFab.Events if (OnGetFriendsListRequestEvent != null) { foreach (var each in OnGetFriendsListRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetFriendsListRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGetFriendsListResultEvent != null) { foreach (var each in OnGetFriendsListResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetFriendsListResultEvent -= (PlayFabResultEvent)each; } } } - if (OnGetGameServerRegionsRequestEvent != null) { foreach (var each in OnGetGameServerRegionsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetGameServerRegionsRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnGetGameServerRegionsResultEvent != null) { foreach (var each in OnGetGameServerRegionsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetGameServerRegionsResultEvent -= (PlayFabResultEvent)each; } } } - if (OnGetLeaderboardRequestEvent != null) { foreach (var each in OnGetLeaderboardRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetLeaderboardRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGetLeaderboardResultEvent != null) { foreach (var each in OnGetLeaderboardResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetLeaderboardResultEvent -= (PlayFabResultEvent)each; } } } @@ -548,9 +536,15 @@ namespace PlayFab.Events if (OnGetPlayFabIDsFromPSNAccountIDsRequestEvent != null) { foreach (var each in OnGetPlayFabIDsFromPSNAccountIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromPSNAccountIDsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGetPlayFabIDsFromPSNAccountIDsResultEvent != null) { foreach (var each in OnGetPlayFabIDsFromPSNAccountIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromPSNAccountIDsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnGetPlayFabIDsFromPSNOnlineIDsRequestEvent != null) { foreach (var each in OnGetPlayFabIDsFromPSNOnlineIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromPSNOnlineIDsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnGetPlayFabIDsFromPSNOnlineIDsResultEvent != null) { foreach (var each in OnGetPlayFabIDsFromPSNOnlineIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromPSNOnlineIDsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnGetPlayFabIDsFromSteamIDsRequestEvent != null) { foreach (var each in OnGetPlayFabIDsFromSteamIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromSteamIDsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGetPlayFabIDsFromSteamIDsResultEvent != null) { foreach (var each in OnGetPlayFabIDsFromSteamIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromSteamIDsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnGetPlayFabIDsFromSteamNamesRequestEvent != null) { foreach (var each in OnGetPlayFabIDsFromSteamNamesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromSteamNamesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnGetPlayFabIDsFromSteamNamesResultEvent != null) { foreach (var each in OnGetPlayFabIDsFromSteamNamesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromSteamNamesResultEvent -= (PlayFabResultEvent)each; } } } + if (OnGetPlayFabIDsFromTwitchIDsRequestEvent != null) { foreach (var each in OnGetPlayFabIDsFromTwitchIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromTwitchIDsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGetPlayFabIDsFromTwitchIDsResultEvent != null) { foreach (var each in OnGetPlayFabIDsFromTwitchIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGetPlayFabIDsFromTwitchIDsResultEvent -= (PlayFabResultEvent)each; } } } @@ -691,9 +685,6 @@ namespace PlayFab.Events if (OnLoginWithXboxRequestEvent != null) { foreach (var each in OnLoginWithXboxRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnLoginWithXboxRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnMatchmakeRequestEvent != null) { foreach (var each in OnMatchmakeRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakeRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnMatchmakeResultEvent != null) { foreach (var each in OnMatchmakeResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakeResultEvent -= (PlayFabResultEvent)each; } } } - if (OnOpenTradeRequestEvent != null) { foreach (var each in OnOpenTradeRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnOpenTradeRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnOpenTradeResultEvent != null) { foreach (var each in OnOpenTradeResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnOpenTradeResultEvent -= (PlayFabResultEvent)each; } } } @@ -859,20 +850,6 @@ namespace PlayFab.Events if (OnWriteTitleEventRequestEvent != null) { foreach (var each in OnWriteTitleEventRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnWriteTitleEventRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnWriteTitleEventResultEvent != null) { foreach (var each in OnWriteTitleEventResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnWriteTitleEventResultEvent -= (PlayFabResultEvent)each; } } } -#endif -#if ENABLE_PLAYFABSERVER_API - if (OnMatchmakerAuthUserRequestEvent != null) { foreach (var each in OnMatchmakerAuthUserRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerAuthUserRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnMatchmakerAuthUserResultEvent != null) { foreach (var each in OnMatchmakerAuthUserResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerAuthUserResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnMatchmakerPlayerJoinedRequestEvent != null) { foreach (var each in OnMatchmakerPlayerJoinedRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerPlayerJoinedRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnMatchmakerPlayerJoinedResultEvent != null) { foreach (var each in OnMatchmakerPlayerJoinedResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerPlayerJoinedResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnMatchmakerPlayerLeftRequestEvent != null) { foreach (var each in OnMatchmakerPlayerLeftRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerPlayerLeftRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnMatchmakerPlayerLeftResultEvent != null) { foreach (var each in OnMatchmakerPlayerLeftResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerPlayerLeftResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnMatchmakerUserInfoRequestEvent != null) { foreach (var each in OnMatchmakerUserInfoRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerUserInfoRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnMatchmakerUserInfoResultEvent != null) { foreach (var each in OnMatchmakerUserInfoResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMatchmakerUserInfoResultEvent -= (PlayFabResultEvent)each; } } } - #endif #if ENABLE_PLAYFABSERVER_API if (OnServerAddCharacterVirtualCurrencyRequestEvent != null) { foreach (var each in OnServerAddCharacterVirtualCurrencyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerAddCharacterVirtualCurrencyRequestEvent -= (PlayFabRequestEvent)each; } } } @@ -920,9 +897,6 @@ namespace PlayFab.Events if (OnServerDeleteSharedGroupRequestEvent != null) { foreach (var each in OnServerDeleteSharedGroupRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerDeleteSharedGroupRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerDeleteSharedGroupResultEvent != null) { foreach (var each in OnServerDeleteSharedGroupResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerDeleteSharedGroupResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerDeregisterGameRequestEvent != null) { foreach (var each in OnServerDeregisterGameRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerDeregisterGameRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerDeregisterGameResultEvent != null) { foreach (var each in OnServerDeregisterGameResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerDeregisterGameResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerEvaluateRandomResultTableRequestEvent != null) { foreach (var each in OnServerEvaluateRandomResultTableRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerEvaluateRandomResultTableRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerEvaluateRandomResultTableResultEvent != null) { foreach (var each in OnServerEvaluateRandomResultTableResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerEvaluateRandomResultTableResultEvent -= (PlayFabResultEvent)each; } } } @@ -1016,9 +990,15 @@ namespace PlayFab.Events if (OnServerGetPlayFabIDsFromPSNAccountIDsRequestEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromPSNAccountIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromPSNAccountIDsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerGetPlayFabIDsFromPSNAccountIDsResultEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromPSNAccountIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromPSNAccountIDsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerGetPlayFabIDsFromPSNOnlineIDsRequestEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromPSNOnlineIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromPSNOnlineIDsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnServerGetPlayFabIDsFromPSNOnlineIDsResultEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromPSNOnlineIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromPSNOnlineIDsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerGetPlayFabIDsFromSteamIDsRequestEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromSteamIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromSteamIDsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerGetPlayFabIDsFromSteamIDsResultEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromSteamIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromSteamIDsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerGetPlayFabIDsFromSteamNamesRequestEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromSteamNamesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromSteamNamesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnServerGetPlayFabIDsFromSteamNamesResultEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromSteamNamesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromSteamNamesResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerGetPlayFabIDsFromTwitchIDsRequestEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromTwitchIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromTwitchIDsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerGetPlayFabIDsFromTwitchIDsResultEvent != null) { foreach (var each in OnServerGetPlayFabIDsFromTwitchIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerGetPlayFabIDsFromTwitchIDsResultEvent -= (PlayFabResultEvent)each; } } } @@ -1094,18 +1074,30 @@ namespace PlayFab.Events if (OnServerLinkNintendoServiceAccountRequestEvent != null) { foreach (var each in OnServerLinkNintendoServiceAccountRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkNintendoServiceAccountRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerLinkNintendoServiceAccountResultEvent != null) { foreach (var each in OnServerLinkNintendoServiceAccountResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkNintendoServiceAccountResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLinkNintendoServiceAccountSubjectRequestEvent != null) { foreach (var each in OnServerLinkNintendoServiceAccountSubjectRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkNintendoServiceAccountSubjectRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnServerLinkNintendoServiceAccountSubjectResultEvent != null) { foreach (var each in OnServerLinkNintendoServiceAccountSubjectResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkNintendoServiceAccountSubjectResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLinkNintendoSwitchDeviceIdRequestEvent != null) { foreach (var each in OnServerLinkNintendoSwitchDeviceIdRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkNintendoSwitchDeviceIdRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerLinkNintendoSwitchDeviceIdResultEvent != null) { foreach (var each in OnServerLinkNintendoSwitchDeviceIdResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkNintendoSwitchDeviceIdResultEvent -= (PlayFabResultEvent)each; } } } if (OnServerLinkPSNAccountRequestEvent != null) { foreach (var each in OnServerLinkPSNAccountRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkPSNAccountRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerLinkPSNAccountResultEvent != null) { foreach (var each in OnServerLinkPSNAccountResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkPSNAccountResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLinkPSNIdRequestEvent != null) { foreach (var each in OnServerLinkPSNIdRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkPSNIdRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnServerLinkPSNIdResultEvent != null) { foreach (var each in OnServerLinkPSNIdResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkPSNIdResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLinkServerCustomIdRequestEvent != null) { foreach (var each in OnServerLinkServerCustomIdRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkServerCustomIdRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerLinkServerCustomIdResultEvent != null) { foreach (var each in OnServerLinkServerCustomIdResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkServerCustomIdResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLinkSteamIdRequestEvent != null) { foreach (var each in OnServerLinkSteamIdRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkSteamIdRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnServerLinkSteamIdResultEvent != null) { foreach (var each in OnServerLinkSteamIdResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkSteamIdResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLinkXboxAccountRequestEvent != null) { foreach (var each in OnServerLinkXboxAccountRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkXboxAccountRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerLinkXboxAccountResultEvent != null) { foreach (var each in OnServerLinkXboxAccountResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLinkXboxAccountResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLoginWithPSNRequestEvent != null) { foreach (var each in OnServerLoginWithPSNRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLoginWithPSNRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnServerLoginWithPSNResultEvent != null) { foreach (var each in OnServerLoginWithPSNResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLoginWithPSNResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerLoginWithServerCustomIdRequestEvent != null) { foreach (var each in OnServerLoginWithServerCustomIdRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLoginWithServerCustomIdRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerLoginWithServerCustomIdResultEvent != null) { foreach (var each in OnServerLoginWithServerCustomIdResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerLoginWithServerCustomIdResultEvent -= (PlayFabResultEvent)each; } } } @@ -1130,21 +1122,9 @@ namespace PlayFab.Events if (OnServerMoveItemToUserFromCharacterRequestEvent != null) { foreach (var each in OnServerMoveItemToUserFromCharacterRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerMoveItemToUserFromCharacterRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerMoveItemToUserFromCharacterResultEvent != null) { foreach (var each in OnServerMoveItemToUserFromCharacterResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerMoveItemToUserFromCharacterResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerNotifyMatchmakerPlayerLeftRequestEvent != null) { foreach (var each in OnServerNotifyMatchmakerPlayerLeftRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerNotifyMatchmakerPlayerLeftRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerNotifyMatchmakerPlayerLeftResultEvent != null) { foreach (var each in OnServerNotifyMatchmakerPlayerLeftResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerNotifyMatchmakerPlayerLeftResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerRedeemCouponRequestEvent != null) { foreach (var each in OnServerRedeemCouponRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRedeemCouponRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerRedeemCouponResultEvent != null) { foreach (var each in OnServerRedeemCouponResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRedeemCouponResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerRedeemMatchmakerTicketRequestEvent != null) { foreach (var each in OnServerRedeemMatchmakerTicketRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRedeemMatchmakerTicketRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerRedeemMatchmakerTicketResultEvent != null) { foreach (var each in OnServerRedeemMatchmakerTicketResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRedeemMatchmakerTicketResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnServerRefreshGameServerInstanceHeartbeatRequestEvent != null) { foreach (var each in OnServerRefreshGameServerInstanceHeartbeatRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRefreshGameServerInstanceHeartbeatRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerRefreshGameServerInstanceHeartbeatResultEvent != null) { foreach (var each in OnServerRefreshGameServerInstanceHeartbeatResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRefreshGameServerInstanceHeartbeatResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnServerRegisterGameRequestEvent != null) { foreach (var each in OnServerRegisterGameRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRegisterGameRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerRegisterGameResultEvent != null) { foreach (var each in OnServerRegisterGameResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRegisterGameResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerRemoveFriendRequestEvent != null) { foreach (var each in OnServerRemoveFriendRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRemoveFriendRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerRemoveFriendResultEvent != null) { foreach (var each in OnServerRemoveFriendResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerRemoveFriendResultEvent -= (PlayFabResultEvent)each; } } } @@ -1190,15 +1170,6 @@ namespace PlayFab.Events if (OnServerSetFriendTagsRequestEvent != null) { foreach (var each in OnServerSetFriendTagsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetFriendTagsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerSetFriendTagsResultEvent != null) { foreach (var each in OnServerSetFriendTagsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetFriendTagsResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerSetGameServerInstanceDataRequestEvent != null) { foreach (var each in OnServerSetGameServerInstanceDataRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetGameServerInstanceDataRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerSetGameServerInstanceDataResultEvent != null) { foreach (var each in OnServerSetGameServerInstanceDataResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetGameServerInstanceDataResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnServerSetGameServerInstanceStateRequestEvent != null) { foreach (var each in OnServerSetGameServerInstanceStateRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetGameServerInstanceStateRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerSetGameServerInstanceStateResultEvent != null) { foreach (var each in OnServerSetGameServerInstanceStateResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetGameServerInstanceStateResultEvent -= (PlayFabResultEvent)each; } } } - - if (OnServerSetGameServerInstanceTagsRequestEvent != null) { foreach (var each in OnServerSetGameServerInstanceTagsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetGameServerInstanceTagsRequestEvent -= (PlayFabRequestEvent)each; } } } - if (OnServerSetGameServerInstanceTagsResultEvent != null) { foreach (var each in OnServerSetGameServerInstanceTagsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetGameServerInstanceTagsResultEvent -= (PlayFabResultEvent)each; } } } - if (OnServerSetPlayerSecretRequestEvent != null) { foreach (var each in OnServerSetPlayerSecretRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetPlayerSecretRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerSetPlayerSecretResultEvent != null) { foreach (var each in OnServerSetPlayerSecretResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerSetPlayerSecretResultEvent -= (PlayFabResultEvent)each; } } } @@ -1229,6 +1200,9 @@ namespace PlayFab.Events if (OnServerUnlinkServerCustomIdRequestEvent != null) { foreach (var each in OnServerUnlinkServerCustomIdRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerUnlinkServerCustomIdRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerUnlinkServerCustomIdResultEvent != null) { foreach (var each in OnServerUnlinkServerCustomIdResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerUnlinkServerCustomIdResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerUnlinkSteamIdRequestEvent != null) { foreach (var each in OnServerUnlinkSteamIdRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerUnlinkSteamIdRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnServerUnlinkSteamIdResultEvent != null) { foreach (var each in OnServerUnlinkSteamIdResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerUnlinkSteamIdResultEvent -= (PlayFabResultEvent)each; } } } + if (OnServerUnlinkXboxAccountRequestEvent != null) { foreach (var each in OnServerUnlinkXboxAccountRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerUnlinkXboxAccountRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnServerUnlinkXboxAccountResultEvent != null) { foreach (var each in OnServerUnlinkXboxAccountResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnServerUnlinkXboxAccountResultEvent -= (PlayFabResultEvent)each; } } } @@ -1317,6 +1291,9 @@ namespace PlayFab.Events if (OnCloudScriptGetFunctionRequestEvent != null) { foreach (var each in OnCloudScriptGetFunctionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptGetFunctionRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnCloudScriptGetFunctionResultEvent != null) { foreach (var each in OnCloudScriptGetFunctionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptGetFunctionResultEvent -= (PlayFabResultEvent)each; } } } + if (OnCloudScriptListEventHubFunctionsRequestEvent != null) { foreach (var each in OnCloudScriptListEventHubFunctionsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptListEventHubFunctionsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnCloudScriptListEventHubFunctionsResultEvent != null) { foreach (var each in OnCloudScriptListEventHubFunctionsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptListEventHubFunctionsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnCloudScriptListFunctionsRequestEvent != null) { foreach (var each in OnCloudScriptListFunctionsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptListFunctionsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnCloudScriptListFunctionsResultEvent != null) { foreach (var each in OnCloudScriptListFunctionsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptListFunctionsResultEvent -= (PlayFabResultEvent)each; } } } @@ -1338,6 +1315,9 @@ namespace PlayFab.Events if (OnCloudScriptPostFunctionResultForScheduledTaskRequestEvent != null) { foreach (var each in OnCloudScriptPostFunctionResultForScheduledTaskRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptPostFunctionResultForScheduledTaskRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnCloudScriptPostFunctionResultForScheduledTaskResultEvent != null) { foreach (var each in OnCloudScriptPostFunctionResultForScheduledTaskResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptPostFunctionResultForScheduledTaskResultEvent -= (PlayFabResultEvent)each; } } } + if (OnCloudScriptRegisterEventHubFunctionRequestEvent != null) { foreach (var each in OnCloudScriptRegisterEventHubFunctionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptRegisterEventHubFunctionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnCloudScriptRegisterEventHubFunctionResultEvent != null) { foreach (var each in OnCloudScriptRegisterEventHubFunctionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptRegisterEventHubFunctionResultEvent -= (PlayFabResultEvent)each; } } } + if (OnCloudScriptRegisterHttpFunctionRequestEvent != null) { foreach (var each in OnCloudScriptRegisterHttpFunctionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptRegisterHttpFunctionRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnCloudScriptRegisterHttpFunctionResultEvent != null) { foreach (var each in OnCloudScriptRegisterHttpFunctionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnCloudScriptRegisterHttpFunctionResultEvent -= (PlayFabResultEvent)each; } } } @@ -1396,6 +1376,9 @@ namespace PlayFab.Events if (OnEconomyExecuteInventoryOperationsRequestEvent != null) { foreach (var each in OnEconomyExecuteInventoryOperationsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyExecuteInventoryOperationsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnEconomyExecuteInventoryOperationsResultEvent != null) { foreach (var each in OnEconomyExecuteInventoryOperationsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyExecuteInventoryOperationsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnEconomyExecuteTransferOperationsRequestEvent != null) { foreach (var each in OnEconomyExecuteTransferOperationsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyExecuteTransferOperationsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnEconomyExecuteTransferOperationsResultEvent != null) { foreach (var each in OnEconomyExecuteTransferOperationsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyExecuteTransferOperationsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnEconomyGetCatalogConfigRequestEvent != null) { foreach (var each in OnEconomyGetCatalogConfigRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetCatalogConfigRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnEconomyGetCatalogConfigResultEvent != null) { foreach (var each in OnEconomyGetCatalogConfigResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetCatalogConfigResultEvent -= (PlayFabResultEvent)each; } } } @@ -1417,6 +1400,9 @@ namespace PlayFab.Events if (OnEconomyGetInventoryItemsRequestEvent != null) { foreach (var each in OnEconomyGetInventoryItemsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetInventoryItemsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnEconomyGetInventoryItemsResultEvent != null) { foreach (var each in OnEconomyGetInventoryItemsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetInventoryItemsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnEconomyGetInventoryOperationStatusRequestEvent != null) { foreach (var each in OnEconomyGetInventoryOperationStatusRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetInventoryOperationStatusRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnEconomyGetInventoryOperationStatusResultEvent != null) { foreach (var each in OnEconomyGetInventoryOperationStatusResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetInventoryOperationStatusResultEvent -= (PlayFabResultEvent)each; } } } + if (OnEconomyGetItemRequestEvent != null) { foreach (var each in OnEconomyGetItemRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetItemRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnEconomyGetItemResultEvent != null) { foreach (var each in OnEconomyGetItemResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEconomyGetItemResultEvent -= (PlayFabResultEvent)each; } } } @@ -1506,6 +1492,21 @@ namespace PlayFab.Events #endif #if !DISABLE_PLAYFABENTITY_API + if (OnEventsCreateTelemetryKeyRequestEvent != null) { foreach (var each in OnEventsCreateTelemetryKeyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsCreateTelemetryKeyRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnEventsCreateTelemetryKeyResultEvent != null) { foreach (var each in OnEventsCreateTelemetryKeyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsCreateTelemetryKeyResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnEventsDeleteTelemetryKeyRequestEvent != null) { foreach (var each in OnEventsDeleteTelemetryKeyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsDeleteTelemetryKeyRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnEventsDeleteTelemetryKeyResultEvent != null) { foreach (var each in OnEventsDeleteTelemetryKeyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsDeleteTelemetryKeyResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnEventsGetTelemetryKeyRequestEvent != null) { foreach (var each in OnEventsGetTelemetryKeyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsGetTelemetryKeyRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnEventsGetTelemetryKeyResultEvent != null) { foreach (var each in OnEventsGetTelemetryKeyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsGetTelemetryKeyResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnEventsListTelemetryKeysRequestEvent != null) { foreach (var each in OnEventsListTelemetryKeysRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsListTelemetryKeysRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnEventsListTelemetryKeysResultEvent != null) { foreach (var each in OnEventsListTelemetryKeysResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsListTelemetryKeysResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnEventsSetTelemetryKeyActiveRequestEvent != null) { foreach (var each in OnEventsSetTelemetryKeyActiveRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsSetTelemetryKeyActiveRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnEventsSetTelemetryKeyActiveResultEvent != null) { foreach (var each in OnEventsSetTelemetryKeyActiveResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsSetTelemetryKeyActiveResultEvent -= (PlayFabResultEvent)each; } } } + if (OnEventsWriteEventsRequestEvent != null) { foreach (var each in OnEventsWriteEventsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsWriteEventsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnEventsWriteEventsResultEvent != null) { foreach (var each in OnEventsWriteEventsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnEventsWriteEventsResultEvent -= (PlayFabResultEvent)each; } } } @@ -1650,6 +1651,71 @@ namespace PlayFab.Events if (OnGroupsUpdateRoleRequestEvent != null) { foreach (var each in OnGroupsUpdateRoleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGroupsUpdateRoleRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnGroupsUpdateRoleResultEvent != null) { foreach (var each in OnGroupsUpdateRoleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnGroupsUpdateRoleResultEvent -= (PlayFabResultEvent)each; } } } +#endif +#if !DISABLE_PLAYFABENTITY_API + if (OnProgressionCreateLeaderboardDefinitionRequestEvent != null) { foreach (var each in OnProgressionCreateLeaderboardDefinitionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionCreateLeaderboardDefinitionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionCreateLeaderboardDefinitionResultEvent != null) { foreach (var each in OnProgressionCreateLeaderboardDefinitionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionCreateLeaderboardDefinitionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionCreateStatisticDefinitionRequestEvent != null) { foreach (var each in OnProgressionCreateStatisticDefinitionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionCreateStatisticDefinitionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionCreateStatisticDefinitionResultEvent != null) { foreach (var each in OnProgressionCreateStatisticDefinitionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionCreateStatisticDefinitionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionDeleteLeaderboardDefinitionRequestEvent != null) { foreach (var each in OnProgressionDeleteLeaderboardDefinitionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteLeaderboardDefinitionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionDeleteLeaderboardDefinitionResultEvent != null) { foreach (var each in OnProgressionDeleteLeaderboardDefinitionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteLeaderboardDefinitionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionDeleteLeaderboardEntriesRequestEvent != null) { foreach (var each in OnProgressionDeleteLeaderboardEntriesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteLeaderboardEntriesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionDeleteLeaderboardEntriesResultEvent != null) { foreach (var each in OnProgressionDeleteLeaderboardEntriesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteLeaderboardEntriesResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionDeleteStatisticDefinitionRequestEvent != null) { foreach (var each in OnProgressionDeleteStatisticDefinitionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteStatisticDefinitionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionDeleteStatisticDefinitionResultEvent != null) { foreach (var each in OnProgressionDeleteStatisticDefinitionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteStatisticDefinitionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionDeleteStatisticsRequestEvent != null) { foreach (var each in OnProgressionDeleteStatisticsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteStatisticsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionDeleteStatisticsResultEvent != null) { foreach (var each in OnProgressionDeleteStatisticsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionDeleteStatisticsResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetFriendLeaderboardForEntityRequestEvent != null) { foreach (var each in OnProgressionGetFriendLeaderboardForEntityRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetFriendLeaderboardForEntityRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetFriendLeaderboardForEntityResultEvent != null) { foreach (var each in OnProgressionGetFriendLeaderboardForEntityResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetFriendLeaderboardForEntityResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetLeaderboardRequestEvent != null) { foreach (var each in OnProgressionGetLeaderboardRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetLeaderboardResultEvent != null) { foreach (var each in OnProgressionGetLeaderboardResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetLeaderboardAroundEntityRequestEvent != null) { foreach (var each in OnProgressionGetLeaderboardAroundEntityRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardAroundEntityRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetLeaderboardAroundEntityResultEvent != null) { foreach (var each in OnProgressionGetLeaderboardAroundEntityResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardAroundEntityResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetLeaderboardDefinitionRequestEvent != null) { foreach (var each in OnProgressionGetLeaderboardDefinitionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardDefinitionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetLeaderboardDefinitionResultEvent != null) { foreach (var each in OnProgressionGetLeaderboardDefinitionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardDefinitionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetLeaderboardForEntitiesRequestEvent != null) { foreach (var each in OnProgressionGetLeaderboardForEntitiesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardForEntitiesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetLeaderboardForEntitiesResultEvent != null) { foreach (var each in OnProgressionGetLeaderboardForEntitiesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetLeaderboardForEntitiesResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetStatisticDefinitionRequestEvent != null) { foreach (var each in OnProgressionGetStatisticDefinitionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetStatisticDefinitionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetStatisticDefinitionResultEvent != null) { foreach (var each in OnProgressionGetStatisticDefinitionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetStatisticDefinitionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetStatisticsRequestEvent != null) { foreach (var each in OnProgressionGetStatisticsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetStatisticsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetStatisticsResultEvent != null) { foreach (var each in OnProgressionGetStatisticsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetStatisticsResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionGetStatisticsForEntitiesRequestEvent != null) { foreach (var each in OnProgressionGetStatisticsForEntitiesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetStatisticsForEntitiesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionGetStatisticsForEntitiesResultEvent != null) { foreach (var each in OnProgressionGetStatisticsForEntitiesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionGetStatisticsForEntitiesResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionIncrementLeaderboardVersionRequestEvent != null) { foreach (var each in OnProgressionIncrementLeaderboardVersionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionIncrementLeaderboardVersionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionIncrementLeaderboardVersionResultEvent != null) { foreach (var each in OnProgressionIncrementLeaderboardVersionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionIncrementLeaderboardVersionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionIncrementStatisticVersionRequestEvent != null) { foreach (var each in OnProgressionIncrementStatisticVersionRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionIncrementStatisticVersionRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionIncrementStatisticVersionResultEvent != null) { foreach (var each in OnProgressionIncrementStatisticVersionResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionIncrementStatisticVersionResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionListLeaderboardDefinitionsRequestEvent != null) { foreach (var each in OnProgressionListLeaderboardDefinitionsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionListLeaderboardDefinitionsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionListLeaderboardDefinitionsResultEvent != null) { foreach (var each in OnProgressionListLeaderboardDefinitionsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionListLeaderboardDefinitionsResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionListStatisticDefinitionsRequestEvent != null) { foreach (var each in OnProgressionListStatisticDefinitionsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionListStatisticDefinitionsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionListStatisticDefinitionsResultEvent != null) { foreach (var each in OnProgressionListStatisticDefinitionsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionListStatisticDefinitionsResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionUnlinkLeaderboardFromStatisticRequestEvent != null) { foreach (var each in OnProgressionUnlinkLeaderboardFromStatisticRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionUnlinkLeaderboardFromStatisticRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionUnlinkLeaderboardFromStatisticResultEvent != null) { foreach (var each in OnProgressionUnlinkLeaderboardFromStatisticResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionUnlinkLeaderboardFromStatisticResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionUpdateLeaderboardEntriesRequestEvent != null) { foreach (var each in OnProgressionUpdateLeaderboardEntriesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionUpdateLeaderboardEntriesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionUpdateLeaderboardEntriesResultEvent != null) { foreach (var each in OnProgressionUpdateLeaderboardEntriesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionUpdateLeaderboardEntriesResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProgressionUpdateStatisticsRequestEvent != null) { foreach (var each in OnProgressionUpdateStatisticsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionUpdateStatisticsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProgressionUpdateStatisticsResultEvent != null) { foreach (var each in OnProgressionUpdateStatisticsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProgressionUpdateStatisticsResultEvent -= (PlayFabResultEvent)each; } } } + #endif #if !DISABLE_PLAYFABENTITY_API if (OnLocalizationGetLanguageListRequestEvent != null) { foreach (var each in OnLocalizationGetLanguageListRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnLocalizationGetLanguageListRequestEvent -= (PlayFabRequestEvent)each; } } } @@ -1723,6 +1789,9 @@ namespace PlayFab.Events if (OnMultiplayerDeleteRemoteUserRequestEvent != null) { foreach (var each in OnMultiplayerDeleteRemoteUserRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerDeleteRemoteUserRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerDeleteRemoteUserResultEvent != null) { foreach (var each in OnMultiplayerDeleteRemoteUserResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerDeleteRemoteUserResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerDeleteSecretRequestEvent != null) { foreach (var each in OnMultiplayerDeleteSecretRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerDeleteSecretRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnMultiplayerDeleteSecretResultEvent != null) { foreach (var each in OnMultiplayerDeleteSecretResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerDeleteSecretResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerEnableMultiplayerServersForTitleRequestEvent != null) { foreach (var each in OnMultiplayerEnableMultiplayerServersForTitleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerEnableMultiplayerServersForTitleRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerEnableMultiplayerServersForTitleResultEvent != null) { foreach (var each in OnMultiplayerEnableMultiplayerServersForTitleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerEnableMultiplayerServersForTitleResultEvent -= (PlayFabResultEvent)each; } } } @@ -1795,12 +1864,18 @@ namespace PlayFab.Events if (OnMultiplayerJoinLobbyRequestEvent != null) { foreach (var each in OnMultiplayerJoinLobbyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerJoinLobbyRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerJoinLobbyResultEvent != null) { foreach (var each in OnMultiplayerJoinLobbyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerJoinLobbyResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerJoinLobbyAsServerRequestEvent != null) { foreach (var each in OnMultiplayerJoinLobbyAsServerRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerJoinLobbyAsServerRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnMultiplayerJoinLobbyAsServerResultEvent != null) { foreach (var each in OnMultiplayerJoinLobbyAsServerResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerJoinLobbyAsServerResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerJoinMatchmakingTicketRequestEvent != null) { foreach (var each in OnMultiplayerJoinMatchmakingTicketRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerJoinMatchmakingTicketRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerJoinMatchmakingTicketResultEvent != null) { foreach (var each in OnMultiplayerJoinMatchmakingTicketResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerJoinMatchmakingTicketResultEvent -= (PlayFabResultEvent)each; } } } if (OnMultiplayerLeaveLobbyRequestEvent != null) { foreach (var each in OnMultiplayerLeaveLobbyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerLeaveLobbyRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerLeaveLobbyResultEvent != null) { foreach (var each in OnMultiplayerLeaveLobbyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerLeaveLobbyResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerLeaveLobbyAsServerRequestEvent != null) { foreach (var each in OnMultiplayerLeaveLobbyAsServerRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerLeaveLobbyAsServerRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnMultiplayerLeaveLobbyAsServerResultEvent != null) { foreach (var each in OnMultiplayerLeaveLobbyAsServerResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerLeaveLobbyAsServerResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerListArchivedMultiplayerServersRequestEvent != null) { foreach (var each in OnMultiplayerListArchivedMultiplayerServersRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListArchivedMultiplayerServersRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerListArchivedMultiplayerServersResultEvent != null) { foreach (var each in OnMultiplayerListArchivedMultiplayerServersResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListArchivedMultiplayerServersResultEvent -= (PlayFabResultEvent)each; } } } @@ -1837,6 +1912,9 @@ namespace PlayFab.Events if (OnMultiplayerListQosServersForTitleRequestEvent != null) { foreach (var each in OnMultiplayerListQosServersForTitleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListQosServersForTitleRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerListQosServersForTitleResultEvent != null) { foreach (var each in OnMultiplayerListQosServersForTitleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListQosServersForTitleResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerListSecretSummariesRequestEvent != null) { foreach (var each in OnMultiplayerListSecretSummariesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListSecretSummariesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnMultiplayerListSecretSummariesResultEvent != null) { foreach (var each in OnMultiplayerListSecretSummariesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListSecretSummariesResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerListServerBackfillTicketsForPlayerRequestEvent != null) { foreach (var each in OnMultiplayerListServerBackfillTicketsForPlayerRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListServerBackfillTicketsForPlayerRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerListServerBackfillTicketsForPlayerResultEvent != null) { foreach (var each in OnMultiplayerListServerBackfillTicketsForPlayerResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerListServerBackfillTicketsForPlayerResultEvent -= (PlayFabResultEvent)each; } } } @@ -1855,6 +1933,9 @@ namespace PlayFab.Events if (OnMultiplayerRequestMultiplayerServerRequestEvent != null) { foreach (var each in OnMultiplayerRequestMultiplayerServerRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerRequestMultiplayerServerRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerRequestMultiplayerServerResultEvent != null) { foreach (var each in OnMultiplayerRequestMultiplayerServerResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerRequestMultiplayerServerResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerRequestPartyServiceRequestEvent != null) { foreach (var each in OnMultiplayerRequestPartyServiceRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerRequestPartyServiceRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnMultiplayerRequestPartyServiceResultEvent != null) { foreach (var each in OnMultiplayerRequestPartyServiceResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerRequestPartyServiceResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerRolloverContainerRegistryCredentialsRequestEvent != null) { foreach (var each in OnMultiplayerRolloverContainerRegistryCredentialsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerRolloverContainerRegistryCredentialsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerRolloverContainerRegistryCredentialsResultEvent != null) { foreach (var each in OnMultiplayerRolloverContainerRegistryCredentialsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerRolloverContainerRegistryCredentialsResultEvent -= (PlayFabResultEvent)each; } } } @@ -1894,9 +1975,15 @@ namespace PlayFab.Events if (OnMultiplayerUpdateLobbyRequestEvent != null) { foreach (var each in OnMultiplayerUpdateLobbyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUpdateLobbyRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerUpdateLobbyResultEvent != null) { foreach (var each in OnMultiplayerUpdateLobbyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUpdateLobbyResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerUpdateLobbyAsServerRequestEvent != null) { foreach (var each in OnMultiplayerUpdateLobbyAsServerRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUpdateLobbyAsServerRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnMultiplayerUpdateLobbyAsServerResultEvent != null) { foreach (var each in OnMultiplayerUpdateLobbyAsServerResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUpdateLobbyAsServerResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerUploadCertificateRequestEvent != null) { foreach (var each in OnMultiplayerUploadCertificateRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUploadCertificateRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnMultiplayerUploadCertificateResultEvent != null) { foreach (var each in OnMultiplayerUploadCertificateResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUploadCertificateResultEvent -= (PlayFabResultEvent)each; } } } + if (OnMultiplayerUploadSecretRequestEvent != null) { foreach (var each in OnMultiplayerUploadSecretRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUploadSecretRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnMultiplayerUploadSecretResultEvent != null) { foreach (var each in OnMultiplayerUploadSecretResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnMultiplayerUploadSecretResultEvent -= (PlayFabResultEvent)each; } } } + #endif #if !DISABLE_PLAYFABENTITY_API if (OnProfilesGetGlobalPolicyRequestEvent != null) { foreach (var each in OnProfilesGetGlobalPolicyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesGetGlobalPolicyRequestEvent -= (PlayFabRequestEvent)each; } } } @@ -1911,6 +1998,12 @@ namespace PlayFab.Events if (OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsRequestEvent != null) { foreach (var each in OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsResultEvent != null) { foreach (var each in OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsResultEvent -= (PlayFabResultEvent)each; } } } + if (OnProfilesGetTitlePlayersFromXboxLiveIDsRequestEvent != null) { foreach (var each in OnProfilesGetTitlePlayersFromXboxLiveIDsRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesGetTitlePlayersFromXboxLiveIDsRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProfilesGetTitlePlayersFromXboxLiveIDsResultEvent != null) { foreach (var each in OnProfilesGetTitlePlayersFromXboxLiveIDsResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesGetTitlePlayersFromXboxLiveIDsResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnProfilesSetDisplayNameRequestEvent != null) { foreach (var each in OnProfilesSetDisplayNameRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesSetDisplayNameRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnProfilesSetDisplayNameResultEvent != null) { foreach (var each in OnProfilesSetDisplayNameResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesSetDisplayNameResultEvent -= (PlayFabResultEvent)each; } } } + if (OnProfilesSetGlobalPolicyRequestEvent != null) { foreach (var each in OnProfilesSetGlobalPolicyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesSetGlobalPolicyRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnProfilesSetGlobalPolicyResultEvent != null) { foreach (var each in OnProfilesSetGlobalPolicyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesSetGlobalPolicyResultEvent -= (PlayFabResultEvent)each; } } } @@ -1920,6 +2013,91 @@ namespace PlayFab.Events if (OnProfilesSetProfilePolicyRequestEvent != null) { foreach (var each in OnProfilesSetProfilePolicyRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesSetProfilePolicyRequestEvent -= (PlayFabRequestEvent)each; } } } if (OnProfilesSetProfilePolicyResultEvent != null) { foreach (var each in OnProfilesSetProfilePolicyResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnProfilesSetProfilePolicyResultEvent -= (PlayFabResultEvent)each; } } } +#endif +#if ENABLE_PLAYFABSERVER_API +#endif +#if !DISABLE_PLAYFABENTITY_API + if (OnAddonCreateOrUpdateAppleRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateAppleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateAppleRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateAppleResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateAppleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateAppleResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdateFacebookRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateFacebookRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateFacebookRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateFacebookResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateFacebookResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateFacebookResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdateFacebookInstantGamesRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateFacebookInstantGamesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateFacebookInstantGamesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateFacebookInstantGamesResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateFacebookInstantGamesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateFacebookInstantGamesResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdateGoogleRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateGoogleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateGoogleRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateGoogleResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateGoogleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateGoogleResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdateKongregateRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateKongregateRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateKongregateRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateKongregateResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateKongregateResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateKongregateResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdateNintendoRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateNintendoRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateNintendoRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateNintendoResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateNintendoResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateNintendoResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdatePSNRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdatePSNRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdatePSNRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdatePSNResultEvent != null) { foreach (var each in OnAddonCreateOrUpdatePSNResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdatePSNResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdateSteamRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateSteamRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateSteamRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateSteamResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateSteamResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateSteamResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonCreateOrUpdateTwitchRequestEvent != null) { foreach (var each in OnAddonCreateOrUpdateTwitchRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateTwitchRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonCreateOrUpdateTwitchResultEvent != null) { foreach (var each in OnAddonCreateOrUpdateTwitchResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonCreateOrUpdateTwitchResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteAppleRequestEvent != null) { foreach (var each in OnAddonDeleteAppleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteAppleRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteAppleResultEvent != null) { foreach (var each in OnAddonDeleteAppleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteAppleResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteFacebookRequestEvent != null) { foreach (var each in OnAddonDeleteFacebookRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteFacebookRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteFacebookResultEvent != null) { foreach (var each in OnAddonDeleteFacebookResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteFacebookResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteFacebookInstantGamesRequestEvent != null) { foreach (var each in OnAddonDeleteFacebookInstantGamesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteFacebookInstantGamesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteFacebookInstantGamesResultEvent != null) { foreach (var each in OnAddonDeleteFacebookInstantGamesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteFacebookInstantGamesResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteGoogleRequestEvent != null) { foreach (var each in OnAddonDeleteGoogleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteGoogleRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteGoogleResultEvent != null) { foreach (var each in OnAddonDeleteGoogleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteGoogleResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteKongregateRequestEvent != null) { foreach (var each in OnAddonDeleteKongregateRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteKongregateRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteKongregateResultEvent != null) { foreach (var each in OnAddonDeleteKongregateResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteKongregateResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteNintendoRequestEvent != null) { foreach (var each in OnAddonDeleteNintendoRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteNintendoRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteNintendoResultEvent != null) { foreach (var each in OnAddonDeleteNintendoResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteNintendoResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeletePSNRequestEvent != null) { foreach (var each in OnAddonDeletePSNRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeletePSNRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeletePSNResultEvent != null) { foreach (var each in OnAddonDeletePSNResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeletePSNResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteSteamRequestEvent != null) { foreach (var each in OnAddonDeleteSteamRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteSteamRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteSteamResultEvent != null) { foreach (var each in OnAddonDeleteSteamResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteSteamResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonDeleteTwitchRequestEvent != null) { foreach (var each in OnAddonDeleteTwitchRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteTwitchRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonDeleteTwitchResultEvent != null) { foreach (var each in OnAddonDeleteTwitchResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonDeleteTwitchResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetAppleRequestEvent != null) { foreach (var each in OnAddonGetAppleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetAppleRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetAppleResultEvent != null) { foreach (var each in OnAddonGetAppleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetAppleResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetFacebookRequestEvent != null) { foreach (var each in OnAddonGetFacebookRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetFacebookRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetFacebookResultEvent != null) { foreach (var each in OnAddonGetFacebookResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetFacebookResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetFacebookInstantGamesRequestEvent != null) { foreach (var each in OnAddonGetFacebookInstantGamesRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetFacebookInstantGamesRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetFacebookInstantGamesResultEvent != null) { foreach (var each in OnAddonGetFacebookInstantGamesResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetFacebookInstantGamesResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetGoogleRequestEvent != null) { foreach (var each in OnAddonGetGoogleRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetGoogleRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetGoogleResultEvent != null) { foreach (var each in OnAddonGetGoogleResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetGoogleResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetKongregateRequestEvent != null) { foreach (var each in OnAddonGetKongregateRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetKongregateRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetKongregateResultEvent != null) { foreach (var each in OnAddonGetKongregateResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetKongregateResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetNintendoRequestEvent != null) { foreach (var each in OnAddonGetNintendoRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetNintendoRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetNintendoResultEvent != null) { foreach (var each in OnAddonGetNintendoResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetNintendoResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetPSNRequestEvent != null) { foreach (var each in OnAddonGetPSNRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetPSNRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetPSNResultEvent != null) { foreach (var each in OnAddonGetPSNResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetPSNResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetSteamRequestEvent != null) { foreach (var each in OnAddonGetSteamRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetSteamRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetSteamResultEvent != null) { foreach (var each in OnAddonGetSteamResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetSteamResultEvent -= (PlayFabResultEvent)each; } } } + + if (OnAddonGetTwitchRequestEvent != null) { foreach (var each in OnAddonGetTwitchRequestEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetTwitchRequestEvent -= (PlayFabRequestEvent)each; } } } + if (OnAddonGetTwitchResultEvent != null) { foreach (var each in OnAddonGetTwitchResultEvent.GetInvocationList()) { if (ReferenceEquals(each.Target, instance)) { OnAddonGetTwitchResultEvent -= (PlayFabResultEvent)each; } } } + #endif } @@ -1957,6 +2135,7 @@ namespace PlayFab.Events if (type == typeof(AdminModels.CreateSegmentRequest)) { if (_instance.OnAdminCreateSegmentRequestEvent != null) { _instance.OnAdminCreateSegmentRequestEvent((AdminModels.CreateSegmentRequest)e.Request); return; } } if (type == typeof(AdminModels.DeleteContentRequest)) { if (_instance.OnAdminDeleteContentRequestEvent != null) { _instance.OnAdminDeleteContentRequestEvent((AdminModels.DeleteContentRequest)e.Request); return; } } if (type == typeof(AdminModels.DeleteMasterPlayerAccountRequest)) { if (_instance.OnAdminDeleteMasterPlayerAccountRequestEvent != null) { _instance.OnAdminDeleteMasterPlayerAccountRequestEvent((AdminModels.DeleteMasterPlayerAccountRequest)e.Request); return; } } + if (type == typeof(AdminModels.DeleteMasterPlayerEventDataRequest)) { if (_instance.OnAdminDeleteMasterPlayerEventDataRequestEvent != null) { _instance.OnAdminDeleteMasterPlayerEventDataRequestEvent((AdminModels.DeleteMasterPlayerEventDataRequest)e.Request); return; } } if (type == typeof(AdminModels.DeleteMembershipSubscriptionRequest)) { if (_instance.OnAdminDeleteMembershipSubscriptionRequestEvent != null) { _instance.OnAdminDeleteMembershipSubscriptionRequestEvent((AdminModels.DeleteMembershipSubscriptionRequest)e.Request); return; } } if (type == typeof(AdminModels.DeleteOpenIdConnectionRequest)) { if (_instance.OnAdminDeleteOpenIdConnectionRequestEvent != null) { _instance.OnAdminDeleteOpenIdConnectionRequestEvent((AdminModels.DeleteOpenIdConnectionRequest)e.Request); return; } } if (type == typeof(AdminModels.DeletePlayerRequest)) { if (_instance.OnAdminDeletePlayerRequestEvent != null) { _instance.OnAdminDeletePlayerRequestEvent((AdminModels.DeletePlayerRequest)e.Request); return; } } @@ -1977,8 +2156,6 @@ namespace PlayFab.Events if (type == typeof(AdminModels.GetContentListRequest)) { if (_instance.OnAdminGetContentListRequestEvent != null) { _instance.OnAdminGetContentListRequestEvent((AdminModels.GetContentListRequest)e.Request); return; } } if (type == typeof(AdminModels.GetContentUploadUrlRequest)) { if (_instance.OnAdminGetContentUploadUrlRequestEvent != null) { _instance.OnAdminGetContentUploadUrlRequestEvent((AdminModels.GetContentUploadUrlRequest)e.Request); return; } } if (type == typeof(AdminModels.GetDataReportRequest)) { if (_instance.OnAdminGetDataReportRequestEvent != null) { _instance.OnAdminGetDataReportRequestEvent((AdminModels.GetDataReportRequest)e.Request); return; } } - if (type == typeof(AdminModels.GetMatchmakerGameInfoRequest)) { if (_instance.OnAdminGetMatchmakerGameInfoRequestEvent != null) { _instance.OnAdminGetMatchmakerGameInfoRequestEvent((AdminModels.GetMatchmakerGameInfoRequest)e.Request); return; } } - if (type == typeof(AdminModels.GetMatchmakerGameModesRequest)) { if (_instance.OnAdminGetMatchmakerGameModesRequestEvent != null) { _instance.OnAdminGetMatchmakerGameModesRequestEvent((AdminModels.GetMatchmakerGameModesRequest)e.Request); return; } } if (type == typeof(AdminModels.GetPlayedTitleListRequest)) { if (_instance.OnAdminGetPlayedTitleListRequestEvent != null) { _instance.OnAdminGetPlayedTitleListRequestEvent((AdminModels.GetPlayedTitleListRequest)e.Request); return; } } if (type == typeof(AdminModels.GetPlayerIdFromAuthTokenRequest)) { if (_instance.OnAdminGetPlayerIdFromAuthTokenRequestEvent != null) { _instance.OnAdminGetPlayerIdFromAuthTokenRequestEvent((AdminModels.GetPlayerIdFromAuthTokenRequest)e.Request); return; } } if (type == typeof(AdminModels.GetPlayerProfileRequest)) { if (_instance.OnAdminGetPlayerProfileRequestEvent != null) { _instance.OnAdminGetPlayerProfileRequestEvent((AdminModels.GetPlayerProfileRequest)e.Request); return; } } @@ -2012,7 +2189,6 @@ namespace PlayFab.Events if (type == typeof(AdminModels.IncrementPlayerStatisticVersionRequest)) { if (_instance.OnAdminIncrementPlayerStatisticVersionRequestEvent != null) { _instance.OnAdminIncrementPlayerStatisticVersionRequestEvent((AdminModels.IncrementPlayerStatisticVersionRequest)e.Request); return; } } if (type == typeof(AdminModels.ListOpenIdConnectionRequest)) { if (_instance.OnAdminListOpenIdConnectionRequestEvent != null) { _instance.OnAdminListOpenIdConnectionRequestEvent((AdminModels.ListOpenIdConnectionRequest)e.Request); return; } } if (type == typeof(AdminModels.ListVirtualCurrencyTypesRequest)) { if (_instance.OnAdminListVirtualCurrencyTypesRequestEvent != null) { _instance.OnAdminListVirtualCurrencyTypesRequestEvent((AdminModels.ListVirtualCurrencyTypesRequest)e.Request); return; } } - if (type == typeof(AdminModels.ModifyServerBuildRequest)) { if (_instance.OnAdminModifyServerBuildRequestEvent != null) { _instance.OnAdminModifyServerBuildRequestEvent((AdminModels.ModifyServerBuildRequest)e.Request); return; } } if (type == typeof(AdminModels.RefundPurchaseRequest)) { if (_instance.OnAdminRefundPurchaseRequestEvent != null) { _instance.OnAdminRefundPurchaseRequestEvent((AdminModels.RefundPurchaseRequest)e.Request); return; } } if (type == typeof(AdminModels.RemovePlayerTagRequest)) { if (_instance.OnAdminRemovePlayerTagRequestEvent != null) { _instance.OnAdminRemovePlayerTagRequestEvent((AdminModels.RemovePlayerTagRequest)e.Request); return; } } if (type == typeof(AdminModels.RemoveVirtualCurrencyTypesRequest)) { if (_instance.OnAdminRemoveVirtualCurrencyTypesRequestEvent != null) { _instance.OnAdminRemoveVirtualCurrencyTypesRequestEvent((AdminModels.RemoveVirtualCurrencyTypesRequest)e.Request); return; } } @@ -2085,11 +2261,9 @@ namespace PlayFab.Events if (type == typeof(ClientModels.GetCharacterDataRequest)) { if (_instance.OnGetCharacterReadOnlyDataRequestEvent != null) { _instance.OnGetCharacterReadOnlyDataRequestEvent((ClientModels.GetCharacterDataRequest)e.Request); return; } } if (type == typeof(ClientModels.GetCharacterStatisticsRequest)) { if (_instance.OnGetCharacterStatisticsRequestEvent != null) { _instance.OnGetCharacterStatisticsRequestEvent((ClientModels.GetCharacterStatisticsRequest)e.Request); return; } } if (type == typeof(ClientModels.GetContentDownloadUrlRequest)) { if (_instance.OnGetContentDownloadUrlRequestEvent != null) { _instance.OnGetContentDownloadUrlRequestEvent((ClientModels.GetContentDownloadUrlRequest)e.Request); return; } } - if (type == typeof(ClientModels.CurrentGamesRequest)) { if (_instance.OnGetCurrentGamesRequestEvent != null) { _instance.OnGetCurrentGamesRequestEvent((ClientModels.CurrentGamesRequest)e.Request); return; } } if (type == typeof(ClientModels.GetFriendLeaderboardRequest)) { if (_instance.OnGetFriendLeaderboardRequestEvent != null) { _instance.OnGetFriendLeaderboardRequestEvent((ClientModels.GetFriendLeaderboardRequest)e.Request); return; } } if (type == typeof(ClientModels.GetFriendLeaderboardAroundPlayerRequest)) { if (_instance.OnGetFriendLeaderboardAroundPlayerRequestEvent != null) { _instance.OnGetFriendLeaderboardAroundPlayerRequestEvent((ClientModels.GetFriendLeaderboardAroundPlayerRequest)e.Request); return; } } if (type == typeof(ClientModels.GetFriendsListRequest)) { if (_instance.OnGetFriendsListRequestEvent != null) { _instance.OnGetFriendsListRequestEvent((ClientModels.GetFriendsListRequest)e.Request); return; } } - if (type == typeof(ClientModels.GameServerRegionsRequest)) { if (_instance.OnGetGameServerRegionsRequestEvent != null) { _instance.OnGetGameServerRegionsRequestEvent((ClientModels.GameServerRegionsRequest)e.Request); return; } } if (type == typeof(ClientModels.GetLeaderboardRequest)) { if (_instance.OnGetLeaderboardRequestEvent != null) { _instance.OnGetLeaderboardRequestEvent((ClientModels.GetLeaderboardRequest)e.Request); return; } } if (type == typeof(ClientModels.GetLeaderboardAroundCharacterRequest)) { if (_instance.OnGetLeaderboardAroundCharacterRequestEvent != null) { _instance.OnGetLeaderboardAroundCharacterRequestEvent((ClientModels.GetLeaderboardAroundCharacterRequest)e.Request); return; } } if (type == typeof(ClientModels.GetLeaderboardAroundPlayerRequest)) { if (_instance.OnGetLeaderboardAroundPlayerRequestEvent != null) { _instance.OnGetLeaderboardAroundPlayerRequestEvent((ClientModels.GetLeaderboardAroundPlayerRequest)e.Request); return; } } @@ -2113,7 +2287,9 @@ namespace PlayFab.Events if (type == typeof(ClientModels.GetPlayFabIDsFromNintendoServiceAccountIdsRequest)) { if (_instance.OnGetPlayFabIDsFromNintendoServiceAccountIdsRequestEvent != null) { _instance.OnGetPlayFabIDsFromNintendoServiceAccountIdsRequestEvent((ClientModels.GetPlayFabIDsFromNintendoServiceAccountIdsRequest)e.Request); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest)) { if (_instance.OnGetPlayFabIDsFromNintendoSwitchDeviceIdsRequestEvent != null) { _instance.OnGetPlayFabIDsFromNintendoSwitchDeviceIdsRequestEvent((ClientModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest)e.Request); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromPSNAccountIDsRequest)) { if (_instance.OnGetPlayFabIDsFromPSNAccountIDsRequestEvent != null) { _instance.OnGetPlayFabIDsFromPSNAccountIDsRequestEvent((ClientModels.GetPlayFabIDsFromPSNAccountIDsRequest)e.Request); return; } } + if (type == typeof(ClientModels.GetPlayFabIDsFromPSNOnlineIDsRequest)) { if (_instance.OnGetPlayFabIDsFromPSNOnlineIDsRequestEvent != null) { _instance.OnGetPlayFabIDsFromPSNOnlineIDsRequestEvent((ClientModels.GetPlayFabIDsFromPSNOnlineIDsRequest)e.Request); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromSteamIDsRequest)) { if (_instance.OnGetPlayFabIDsFromSteamIDsRequestEvent != null) { _instance.OnGetPlayFabIDsFromSteamIDsRequestEvent((ClientModels.GetPlayFabIDsFromSteamIDsRequest)e.Request); return; } } + if (type == typeof(ClientModels.GetPlayFabIDsFromSteamNamesRequest)) { if (_instance.OnGetPlayFabIDsFromSteamNamesRequestEvent != null) { _instance.OnGetPlayFabIDsFromSteamNamesRequestEvent((ClientModels.GetPlayFabIDsFromSteamNamesRequest)e.Request); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromTwitchIDsRequest)) { if (_instance.OnGetPlayFabIDsFromTwitchIDsRequestEvent != null) { _instance.OnGetPlayFabIDsFromTwitchIDsRequestEvent((ClientModels.GetPlayFabIDsFromTwitchIDsRequest)e.Request); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromXboxLiveIDsRequest)) { if (_instance.OnGetPlayFabIDsFromXboxLiveIDsRequestEvent != null) { _instance.OnGetPlayFabIDsFromXboxLiveIDsRequestEvent((ClientModels.GetPlayFabIDsFromXboxLiveIDsRequest)e.Request); return; } } if (type == typeof(ClientModels.GetPublisherDataRequest)) { if (_instance.OnGetPublisherDataRequestEvent != null) { _instance.OnGetPublisherDataRequestEvent((ClientModels.GetPublisherDataRequest)e.Request); return; } } @@ -2167,7 +2343,6 @@ namespace PlayFab.Events if (type == typeof(ClientModels.LoginWithSteamRequest)) { if (_instance.OnLoginWithSteamRequestEvent != null) { _instance.OnLoginWithSteamRequestEvent((ClientModels.LoginWithSteamRequest)e.Request); return; } } if (type == typeof(ClientModels.LoginWithTwitchRequest)) { if (_instance.OnLoginWithTwitchRequestEvent != null) { _instance.OnLoginWithTwitchRequestEvent((ClientModels.LoginWithTwitchRequest)e.Request); return; } } if (type == typeof(ClientModels.LoginWithXboxRequest)) { if (_instance.OnLoginWithXboxRequestEvent != null) { _instance.OnLoginWithXboxRequestEvent((ClientModels.LoginWithXboxRequest)e.Request); return; } } - if (type == typeof(ClientModels.MatchmakeRequest)) { if (_instance.OnMatchmakeRequestEvent != null) { _instance.OnMatchmakeRequestEvent((ClientModels.MatchmakeRequest)e.Request); return; } } if (type == typeof(ClientModels.OpenTradeRequest)) { if (_instance.OnOpenTradeRequestEvent != null) { _instance.OnOpenTradeRequestEvent((ClientModels.OpenTradeRequest)e.Request); return; } } if (type == typeof(ClientModels.PayForPurchaseRequest)) { if (_instance.OnPayForPurchaseRequestEvent != null) { _instance.OnPayForPurchaseRequestEvent((ClientModels.PayForPurchaseRequest)e.Request); return; } } if (type == typeof(ClientModels.PurchaseItemRequest)) { if (_instance.OnPurchaseItemRequestEvent != null) { _instance.OnPurchaseItemRequestEvent((ClientModels.PurchaseItemRequest)e.Request); return; } } @@ -2224,12 +2399,6 @@ namespace PlayFab.Events if (type == typeof(ClientModels.WriteClientPlayerEventRequest)) { if (_instance.OnWritePlayerEventRequestEvent != null) { _instance.OnWritePlayerEventRequestEvent((ClientModels.WriteClientPlayerEventRequest)e.Request); return; } } if (type == typeof(ClientModels.WriteTitleEventRequest)) { if (_instance.OnWriteTitleEventRequestEvent != null) { _instance.OnWriteTitleEventRequestEvent((ClientModels.WriteTitleEventRequest)e.Request); return; } } #endif -#if ENABLE_PLAYFABSERVER_API - if (type == typeof(MatchmakerModels.AuthUserRequest)) { if (_instance.OnMatchmakerAuthUserRequestEvent != null) { _instance.OnMatchmakerAuthUserRequestEvent((MatchmakerModels.AuthUserRequest)e.Request); return; } } - if (type == typeof(MatchmakerModels.PlayerJoinedRequest)) { if (_instance.OnMatchmakerPlayerJoinedRequestEvent != null) { _instance.OnMatchmakerPlayerJoinedRequestEvent((MatchmakerModels.PlayerJoinedRequest)e.Request); return; } } - if (type == typeof(MatchmakerModels.PlayerLeftRequest)) { if (_instance.OnMatchmakerPlayerLeftRequestEvent != null) { _instance.OnMatchmakerPlayerLeftRequestEvent((MatchmakerModels.PlayerLeftRequest)e.Request); return; } } - if (type == typeof(MatchmakerModels.UserInfoRequest)) { if (_instance.OnMatchmakerUserInfoRequestEvent != null) { _instance.OnMatchmakerUserInfoRequestEvent((MatchmakerModels.UserInfoRequest)e.Request); return; } } -#endif #if ENABLE_PLAYFABSERVER_API if (type == typeof(ServerModels.AddCharacterVirtualCurrencyRequest)) { if (_instance.OnServerAddCharacterVirtualCurrencyRequestEvent != null) { _instance.OnServerAddCharacterVirtualCurrencyRequestEvent((ServerModels.AddCharacterVirtualCurrencyRequest)e.Request); return; } } if (type == typeof(ServerModels.AddFriendRequest)) { if (_instance.OnServerAddFriendRequestEvent != null) { _instance.OnServerAddFriendRequestEvent((ServerModels.AddFriendRequest)e.Request); return; } } @@ -2246,7 +2415,6 @@ namespace PlayFab.Events if (type == typeof(ServerModels.DeletePlayerRequest)) { if (_instance.OnServerDeletePlayerRequestEvent != null) { _instance.OnServerDeletePlayerRequestEvent((ServerModels.DeletePlayerRequest)e.Request); return; } } if (type == typeof(ServerModels.DeletePushNotificationTemplateRequest)) { if (_instance.OnServerDeletePushNotificationTemplateRequestEvent != null) { _instance.OnServerDeletePushNotificationTemplateRequestEvent((ServerModels.DeletePushNotificationTemplateRequest)e.Request); return; } } if (type == typeof(ServerModels.DeleteSharedGroupRequest)) { if (_instance.OnServerDeleteSharedGroupRequestEvent != null) { _instance.OnServerDeleteSharedGroupRequestEvent((ServerModels.DeleteSharedGroupRequest)e.Request); return; } } - if (type == typeof(ServerModels.DeregisterGameRequest)) { if (_instance.OnServerDeregisterGameRequestEvent != null) { _instance.OnServerDeregisterGameRequestEvent((ServerModels.DeregisterGameRequest)e.Request); return; } } if (type == typeof(ServerModels.EvaluateRandomResultTableRequest)) { if (_instance.OnServerEvaluateRandomResultTableRequestEvent != null) { _instance.OnServerEvaluateRandomResultTableRequestEvent((ServerModels.EvaluateRandomResultTableRequest)e.Request); return; } } if (type == typeof(ServerModels.ExecuteCloudScriptServerRequest)) { if (_instance.OnServerExecuteCloudScriptRequestEvent != null) { _instance.OnServerExecuteCloudScriptRequestEvent((ServerModels.ExecuteCloudScriptServerRequest)e.Request); return; } } if (type == typeof(ServerModels.GetAllSegmentsRequest)) { if (_instance.OnServerGetAllSegmentsRequestEvent != null) { _instance.OnServerGetAllSegmentsRequestEvent((ServerModels.GetAllSegmentsRequest)e.Request); return; } } @@ -2278,7 +2446,9 @@ namespace PlayFab.Events if (type == typeof(ServerModels.GetPlayFabIDsFromNintendoServiceAccountIdsRequest)) { if (_instance.OnServerGetPlayFabIDsFromNintendoServiceAccountIdsRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromNintendoServiceAccountIdsRequestEvent((ServerModels.GetPlayFabIDsFromNintendoServiceAccountIdsRequest)e.Request); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest)) { if (_instance.OnServerGetPlayFabIDsFromNintendoSwitchDeviceIdsRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromNintendoSwitchDeviceIdsRequestEvent((ServerModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsRequest)e.Request); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromPSNAccountIDsRequest)) { if (_instance.OnServerGetPlayFabIDsFromPSNAccountIDsRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromPSNAccountIDsRequestEvent((ServerModels.GetPlayFabIDsFromPSNAccountIDsRequest)e.Request); return; } } + if (type == typeof(ServerModels.GetPlayFabIDsFromPSNOnlineIDsRequest)) { if (_instance.OnServerGetPlayFabIDsFromPSNOnlineIDsRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromPSNOnlineIDsRequestEvent((ServerModels.GetPlayFabIDsFromPSNOnlineIDsRequest)e.Request); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromSteamIDsRequest)) { if (_instance.OnServerGetPlayFabIDsFromSteamIDsRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromSteamIDsRequestEvent((ServerModels.GetPlayFabIDsFromSteamIDsRequest)e.Request); return; } } + if (type == typeof(ServerModels.GetPlayFabIDsFromSteamNamesRequest)) { if (_instance.OnServerGetPlayFabIDsFromSteamNamesRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromSteamNamesRequestEvent((ServerModels.GetPlayFabIDsFromSteamNamesRequest)e.Request); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromTwitchIDsRequest)) { if (_instance.OnServerGetPlayFabIDsFromTwitchIDsRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromTwitchIDsRequestEvent((ServerModels.GetPlayFabIDsFromTwitchIDsRequest)e.Request); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromXboxLiveIDsRequest)) { if (_instance.OnServerGetPlayFabIDsFromXboxLiveIDsRequestEvent != null) { _instance.OnServerGetPlayFabIDsFromXboxLiveIDsRequestEvent((ServerModels.GetPlayFabIDsFromXboxLiveIDsRequest)e.Request); return; } } if (type == typeof(ServerModels.GetPublisherDataRequest)) { if (_instance.OnServerGetPublisherDataRequestEvent != null) { _instance.OnServerGetPublisherDataRequestEvent((ServerModels.GetPublisherDataRequest)e.Request); return; } } @@ -2304,10 +2474,14 @@ namespace PlayFab.Events if (type == typeof(ServerModels.GrantItemsToUserRequest)) { if (_instance.OnServerGrantItemsToUserRequestEvent != null) { _instance.OnServerGrantItemsToUserRequestEvent((ServerModels.GrantItemsToUserRequest)e.Request); return; } } if (type == typeof(ServerModels.GrantItemsToUsersRequest)) { if (_instance.OnServerGrantItemsToUsersRequestEvent != null) { _instance.OnServerGrantItemsToUsersRequestEvent((ServerModels.GrantItemsToUsersRequest)e.Request); return; } } if (type == typeof(ServerModels.LinkNintendoServiceAccountRequest)) { if (_instance.OnServerLinkNintendoServiceAccountRequestEvent != null) { _instance.OnServerLinkNintendoServiceAccountRequestEvent((ServerModels.LinkNintendoServiceAccountRequest)e.Request); return; } } + if (type == typeof(ServerModels.LinkNintendoServiceAccountSubjectRequest)) { if (_instance.OnServerLinkNintendoServiceAccountSubjectRequestEvent != null) { _instance.OnServerLinkNintendoServiceAccountSubjectRequestEvent((ServerModels.LinkNintendoServiceAccountSubjectRequest)e.Request); return; } } if (type == typeof(ServerModels.LinkNintendoSwitchDeviceIdRequest)) { if (_instance.OnServerLinkNintendoSwitchDeviceIdRequestEvent != null) { _instance.OnServerLinkNintendoSwitchDeviceIdRequestEvent((ServerModels.LinkNintendoSwitchDeviceIdRequest)e.Request); return; } } if (type == typeof(ServerModels.LinkPSNAccountRequest)) { if (_instance.OnServerLinkPSNAccountRequestEvent != null) { _instance.OnServerLinkPSNAccountRequestEvent((ServerModels.LinkPSNAccountRequest)e.Request); return; } } + if (type == typeof(ServerModels.LinkPSNIdRequest)) { if (_instance.OnServerLinkPSNIdRequestEvent != null) { _instance.OnServerLinkPSNIdRequestEvent((ServerModels.LinkPSNIdRequest)e.Request); return; } } if (type == typeof(ServerModels.LinkServerCustomIdRequest)) { if (_instance.OnServerLinkServerCustomIdRequestEvent != null) { _instance.OnServerLinkServerCustomIdRequestEvent((ServerModels.LinkServerCustomIdRequest)e.Request); return; } } + if (type == typeof(ServerModels.LinkSteamIdRequest)) { if (_instance.OnServerLinkSteamIdRequestEvent != null) { _instance.OnServerLinkSteamIdRequestEvent((ServerModels.LinkSteamIdRequest)e.Request); return; } } if (type == typeof(ServerModels.LinkXboxAccountRequest)) { if (_instance.OnServerLinkXboxAccountRequestEvent != null) { _instance.OnServerLinkXboxAccountRequestEvent((ServerModels.LinkXboxAccountRequest)e.Request); return; } } + if (type == typeof(ServerModels.LoginWithPSNRequest)) { if (_instance.OnServerLoginWithPSNRequestEvent != null) { _instance.OnServerLoginWithPSNRequestEvent((ServerModels.LoginWithPSNRequest)e.Request); return; } } if (type == typeof(ServerModels.LoginWithServerCustomIdRequest)) { if (_instance.OnServerLoginWithServerCustomIdRequestEvent != null) { _instance.OnServerLoginWithServerCustomIdRequestEvent((ServerModels.LoginWithServerCustomIdRequest)e.Request); return; } } if (type == typeof(ServerModels.LoginWithSteamIdRequest)) { if (_instance.OnServerLoginWithSteamIdRequestEvent != null) { _instance.OnServerLoginWithSteamIdRequestEvent((ServerModels.LoginWithSteamIdRequest)e.Request); return; } } if (type == typeof(ServerModels.LoginWithXboxRequest)) { if (_instance.OnServerLoginWithXboxRequestEvent != null) { _instance.OnServerLoginWithXboxRequestEvent((ServerModels.LoginWithXboxRequest)e.Request); return; } } @@ -2316,11 +2490,7 @@ namespace PlayFab.Events if (type == typeof(ServerModels.MoveItemToCharacterFromCharacterRequest)) { if (_instance.OnServerMoveItemToCharacterFromCharacterRequestEvent != null) { _instance.OnServerMoveItemToCharacterFromCharacterRequestEvent((ServerModels.MoveItemToCharacterFromCharacterRequest)e.Request); return; } } if (type == typeof(ServerModels.MoveItemToCharacterFromUserRequest)) { if (_instance.OnServerMoveItemToCharacterFromUserRequestEvent != null) { _instance.OnServerMoveItemToCharacterFromUserRequestEvent((ServerModels.MoveItemToCharacterFromUserRequest)e.Request); return; } } if (type == typeof(ServerModels.MoveItemToUserFromCharacterRequest)) { if (_instance.OnServerMoveItemToUserFromCharacterRequestEvent != null) { _instance.OnServerMoveItemToUserFromCharacterRequestEvent((ServerModels.MoveItemToUserFromCharacterRequest)e.Request); return; } } - if (type == typeof(ServerModels.NotifyMatchmakerPlayerLeftRequest)) { if (_instance.OnServerNotifyMatchmakerPlayerLeftRequestEvent != null) { _instance.OnServerNotifyMatchmakerPlayerLeftRequestEvent((ServerModels.NotifyMatchmakerPlayerLeftRequest)e.Request); return; } } if (type == typeof(ServerModels.RedeemCouponRequest)) { if (_instance.OnServerRedeemCouponRequestEvent != null) { _instance.OnServerRedeemCouponRequestEvent((ServerModels.RedeemCouponRequest)e.Request); return; } } - if (type == typeof(ServerModels.RedeemMatchmakerTicketRequest)) { if (_instance.OnServerRedeemMatchmakerTicketRequestEvent != null) { _instance.OnServerRedeemMatchmakerTicketRequestEvent((ServerModels.RedeemMatchmakerTicketRequest)e.Request); return; } } - if (type == typeof(ServerModels.RefreshGameServerInstanceHeartbeatRequest)) { if (_instance.OnServerRefreshGameServerInstanceHeartbeatRequestEvent != null) { _instance.OnServerRefreshGameServerInstanceHeartbeatRequestEvent((ServerModels.RefreshGameServerInstanceHeartbeatRequest)e.Request); return; } } - if (type == typeof(ServerModels.RegisterGameRequest)) { if (_instance.OnServerRegisterGameRequestEvent != null) { _instance.OnServerRegisterGameRequestEvent((ServerModels.RegisterGameRequest)e.Request); return; } } if (type == typeof(ServerModels.RemoveFriendRequest)) { if (_instance.OnServerRemoveFriendRequestEvent != null) { _instance.OnServerRemoveFriendRequestEvent((ServerModels.RemoveFriendRequest)e.Request); return; } } if (type == typeof(ServerModels.RemoveGenericIDRequest)) { if (_instance.OnServerRemoveGenericIDRequestEvent != null) { _instance.OnServerRemoveGenericIDRequestEvent((ServerModels.RemoveGenericIDRequest)e.Request); return; } } if (type == typeof(ServerModels.RemovePlayerTagRequest)) { if (_instance.OnServerRemovePlayerTagRequestEvent != null) { _instance.OnServerRemovePlayerTagRequestEvent((ServerModels.RemovePlayerTagRequest)e.Request); return; } } @@ -2336,9 +2506,6 @@ namespace PlayFab.Events if (type == typeof(ServerModels.SendPushNotificationRequest)) { if (_instance.OnServerSendPushNotificationRequestEvent != null) { _instance.OnServerSendPushNotificationRequestEvent((ServerModels.SendPushNotificationRequest)e.Request); return; } } if (type == typeof(ServerModels.SendPushNotificationFromTemplateRequest)) { if (_instance.OnServerSendPushNotificationFromTemplateRequestEvent != null) { _instance.OnServerSendPushNotificationFromTemplateRequestEvent((ServerModels.SendPushNotificationFromTemplateRequest)e.Request); return; } } if (type == typeof(ServerModels.SetFriendTagsRequest)) { if (_instance.OnServerSetFriendTagsRequestEvent != null) { _instance.OnServerSetFriendTagsRequestEvent((ServerModels.SetFriendTagsRequest)e.Request); return; } } - if (type == typeof(ServerModels.SetGameServerInstanceDataRequest)) { if (_instance.OnServerSetGameServerInstanceDataRequestEvent != null) { _instance.OnServerSetGameServerInstanceDataRequestEvent((ServerModels.SetGameServerInstanceDataRequest)e.Request); return; } } - if (type == typeof(ServerModels.SetGameServerInstanceStateRequest)) { if (_instance.OnServerSetGameServerInstanceStateRequestEvent != null) { _instance.OnServerSetGameServerInstanceStateRequestEvent((ServerModels.SetGameServerInstanceStateRequest)e.Request); return; } } - if (type == typeof(ServerModels.SetGameServerInstanceTagsRequest)) { if (_instance.OnServerSetGameServerInstanceTagsRequestEvent != null) { _instance.OnServerSetGameServerInstanceTagsRequestEvent((ServerModels.SetGameServerInstanceTagsRequest)e.Request); return; } } if (type == typeof(ServerModels.SetPlayerSecretRequest)) { if (_instance.OnServerSetPlayerSecretRequestEvent != null) { _instance.OnServerSetPlayerSecretRequestEvent((ServerModels.SetPlayerSecretRequest)e.Request); return; } } if (type == typeof(ServerModels.SetPublisherDataRequest)) { if (_instance.OnServerSetPublisherDataRequestEvent != null) { _instance.OnServerSetPublisherDataRequestEvent((ServerModels.SetPublisherDataRequest)e.Request); return; } } if (type == typeof(ServerModels.SetTitleDataRequest)) { if (_instance.OnServerSetTitleDataRequestEvent != null) { _instance.OnServerSetTitleDataRequestEvent((ServerModels.SetTitleDataRequest)e.Request); return; } } @@ -2349,6 +2516,7 @@ namespace PlayFab.Events if (type == typeof(ServerModels.UnlinkNintendoSwitchDeviceIdRequest)) { if (_instance.OnServerUnlinkNintendoSwitchDeviceIdRequestEvent != null) { _instance.OnServerUnlinkNintendoSwitchDeviceIdRequestEvent((ServerModels.UnlinkNintendoSwitchDeviceIdRequest)e.Request); return; } } if (type == typeof(ServerModels.UnlinkPSNAccountRequest)) { if (_instance.OnServerUnlinkPSNAccountRequestEvent != null) { _instance.OnServerUnlinkPSNAccountRequestEvent((ServerModels.UnlinkPSNAccountRequest)e.Request); return; } } if (type == typeof(ServerModels.UnlinkServerCustomIdRequest)) { if (_instance.OnServerUnlinkServerCustomIdRequestEvent != null) { _instance.OnServerUnlinkServerCustomIdRequestEvent((ServerModels.UnlinkServerCustomIdRequest)e.Request); return; } } + if (type == typeof(ServerModels.UnlinkSteamIdRequest)) { if (_instance.OnServerUnlinkSteamIdRequestEvent != null) { _instance.OnServerUnlinkSteamIdRequestEvent((ServerModels.UnlinkSteamIdRequest)e.Request); return; } } if (type == typeof(ServerModels.UnlinkXboxAccountRequest)) { if (_instance.OnServerUnlinkXboxAccountRequestEvent != null) { _instance.OnServerUnlinkXboxAccountRequestEvent((ServerModels.UnlinkXboxAccountRequest)e.Request); return; } } if (type == typeof(ServerModels.UnlockContainerInstanceRequest)) { if (_instance.OnServerUnlockContainerInstanceRequestEvent != null) { _instance.OnServerUnlockContainerInstanceRequestEvent((ServerModels.UnlockContainerInstanceRequest)e.Request); return; } } if (type == typeof(ServerModels.UnlockContainerItemRequest)) { if (_instance.OnServerUnlockContainerItemRequestEvent != null) { _instance.OnServerUnlockContainerItemRequestEvent((ServerModels.UnlockContainerItemRequest)e.Request); return; } } @@ -2381,6 +2549,7 @@ namespace PlayFab.Events if (type == typeof(CloudScriptModels.ExecuteEntityCloudScriptRequest)) { if (_instance.OnCloudScriptExecuteEntityCloudScriptRequestEvent != null) { _instance.OnCloudScriptExecuteEntityCloudScriptRequestEvent((CloudScriptModels.ExecuteEntityCloudScriptRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.ExecuteFunctionRequest)) { if (_instance.OnCloudScriptExecuteFunctionRequestEvent != null) { _instance.OnCloudScriptExecuteFunctionRequestEvent((CloudScriptModels.ExecuteFunctionRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.GetFunctionRequest)) { if (_instance.OnCloudScriptGetFunctionRequestEvent != null) { _instance.OnCloudScriptGetFunctionRequestEvent((CloudScriptModels.GetFunctionRequest)e.Request); return; } } + if (type == typeof(CloudScriptModels.ListFunctionsRequest)) { if (_instance.OnCloudScriptListEventHubFunctionsRequestEvent != null) { _instance.OnCloudScriptListEventHubFunctionsRequestEvent((CloudScriptModels.ListFunctionsRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.ListFunctionsRequest)) { if (_instance.OnCloudScriptListFunctionsRequestEvent != null) { _instance.OnCloudScriptListFunctionsRequestEvent((CloudScriptModels.ListFunctionsRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.ListFunctionsRequest)) { if (_instance.OnCloudScriptListHttpFunctionsRequestEvent != null) { _instance.OnCloudScriptListHttpFunctionsRequestEvent((CloudScriptModels.ListFunctionsRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.ListFunctionsRequest)) { if (_instance.OnCloudScriptListQueuedFunctionsRequestEvent != null) { _instance.OnCloudScriptListQueuedFunctionsRequestEvent((CloudScriptModels.ListFunctionsRequest)e.Request); return; } } @@ -2388,6 +2557,7 @@ namespace PlayFab.Events if (type == typeof(CloudScriptModels.PostFunctionResultForFunctionExecutionRequest)) { if (_instance.OnCloudScriptPostFunctionResultForFunctionExecutionRequestEvent != null) { _instance.OnCloudScriptPostFunctionResultForFunctionExecutionRequestEvent((CloudScriptModels.PostFunctionResultForFunctionExecutionRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.PostFunctionResultForPlayerTriggeredActionRequest)) { if (_instance.OnCloudScriptPostFunctionResultForPlayerTriggeredActionRequestEvent != null) { _instance.OnCloudScriptPostFunctionResultForPlayerTriggeredActionRequestEvent((CloudScriptModels.PostFunctionResultForPlayerTriggeredActionRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.PostFunctionResultForScheduledTaskRequest)) { if (_instance.OnCloudScriptPostFunctionResultForScheduledTaskRequestEvent != null) { _instance.OnCloudScriptPostFunctionResultForScheduledTaskRequestEvent((CloudScriptModels.PostFunctionResultForScheduledTaskRequest)e.Request); return; } } + if (type == typeof(CloudScriptModels.RegisterEventHubFunctionRequest)) { if (_instance.OnCloudScriptRegisterEventHubFunctionRequestEvent != null) { _instance.OnCloudScriptRegisterEventHubFunctionRequestEvent((CloudScriptModels.RegisterEventHubFunctionRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.RegisterHttpFunctionRequest)) { if (_instance.OnCloudScriptRegisterHttpFunctionRequestEvent != null) { _instance.OnCloudScriptRegisterHttpFunctionRequestEvent((CloudScriptModels.RegisterHttpFunctionRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.RegisterQueuedFunctionRequest)) { if (_instance.OnCloudScriptRegisterQueuedFunctionRequestEvent != null) { _instance.OnCloudScriptRegisterQueuedFunctionRequestEvent((CloudScriptModels.RegisterQueuedFunctionRequest)e.Request); return; } } if (type == typeof(CloudScriptModels.UnregisterFunctionRequest)) { if (_instance.OnCloudScriptUnregisterFunctionRequestEvent != null) { _instance.OnCloudScriptUnregisterFunctionRequestEvent((CloudScriptModels.UnregisterFunctionRequest)e.Request); return; } } @@ -2410,6 +2580,7 @@ namespace PlayFab.Events if (type == typeof(EconomyModels.DeleteInventoryItemsRequest)) { if (_instance.OnEconomyDeleteInventoryItemsRequestEvent != null) { _instance.OnEconomyDeleteInventoryItemsRequestEvent((EconomyModels.DeleteInventoryItemsRequest)e.Request); return; } } if (type == typeof(EconomyModels.DeleteItemRequest)) { if (_instance.OnEconomyDeleteItemRequestEvent != null) { _instance.OnEconomyDeleteItemRequestEvent((EconomyModels.DeleteItemRequest)e.Request); return; } } if (type == typeof(EconomyModels.ExecuteInventoryOperationsRequest)) { if (_instance.OnEconomyExecuteInventoryOperationsRequestEvent != null) { _instance.OnEconomyExecuteInventoryOperationsRequestEvent((EconomyModels.ExecuteInventoryOperationsRequest)e.Request); return; } } + if (type == typeof(EconomyModels.ExecuteTransferOperationsRequest)) { if (_instance.OnEconomyExecuteTransferOperationsRequestEvent != null) { _instance.OnEconomyExecuteTransferOperationsRequestEvent((EconomyModels.ExecuteTransferOperationsRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetCatalogConfigRequest)) { if (_instance.OnEconomyGetCatalogConfigRequestEvent != null) { _instance.OnEconomyGetCatalogConfigRequestEvent((EconomyModels.GetCatalogConfigRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetDraftItemRequest)) { if (_instance.OnEconomyGetDraftItemRequestEvent != null) { _instance.OnEconomyGetDraftItemRequestEvent((EconomyModels.GetDraftItemRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetDraftItemsRequest)) { if (_instance.OnEconomyGetDraftItemsRequestEvent != null) { _instance.OnEconomyGetDraftItemsRequestEvent((EconomyModels.GetDraftItemsRequest)e.Request); return; } } @@ -2417,6 +2588,7 @@ namespace PlayFab.Events if (type == typeof(EconomyModels.GetEntityItemReviewRequest)) { if (_instance.OnEconomyGetEntityItemReviewRequestEvent != null) { _instance.OnEconomyGetEntityItemReviewRequestEvent((EconomyModels.GetEntityItemReviewRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetInventoryCollectionIdsRequest)) { if (_instance.OnEconomyGetInventoryCollectionIdsRequestEvent != null) { _instance.OnEconomyGetInventoryCollectionIdsRequestEvent((EconomyModels.GetInventoryCollectionIdsRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetInventoryItemsRequest)) { if (_instance.OnEconomyGetInventoryItemsRequestEvent != null) { _instance.OnEconomyGetInventoryItemsRequestEvent((EconomyModels.GetInventoryItemsRequest)e.Request); return; } } + if (type == typeof(EconomyModels.GetInventoryOperationStatusRequest)) { if (_instance.OnEconomyGetInventoryOperationStatusRequestEvent != null) { _instance.OnEconomyGetInventoryOperationStatusRequestEvent((EconomyModels.GetInventoryOperationStatusRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetItemRequest)) { if (_instance.OnEconomyGetItemRequestEvent != null) { _instance.OnEconomyGetItemRequestEvent((EconomyModels.GetItemRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetItemContainersRequest)) { if (_instance.OnEconomyGetItemContainersRequestEvent != null) { _instance.OnEconomyGetItemContainersRequestEvent((EconomyModels.GetItemContainersRequest)e.Request); return; } } if (type == typeof(EconomyModels.GetItemModerationStateRequest)) { if (_instance.OnEconomyGetItemModerationStateRequestEvent != null) { _instance.OnEconomyGetItemModerationStateRequestEvent((EconomyModels.GetItemModerationStateRequest)e.Request); return; } } @@ -2448,6 +2620,11 @@ namespace PlayFab.Events if (type == typeof(EconomyModels.UpdateInventoryItemsRequest)) { if (_instance.OnEconomyUpdateInventoryItemsRequestEvent != null) { _instance.OnEconomyUpdateInventoryItemsRequestEvent((EconomyModels.UpdateInventoryItemsRequest)e.Request); return; } } #endif #if !DISABLE_PLAYFABENTITY_API + if (type == typeof(EventsModels.CreateTelemetryKeyRequest)) { if (_instance.OnEventsCreateTelemetryKeyRequestEvent != null) { _instance.OnEventsCreateTelemetryKeyRequestEvent((EventsModels.CreateTelemetryKeyRequest)e.Request); return; } } + if (type == typeof(EventsModels.DeleteTelemetryKeyRequest)) { if (_instance.OnEventsDeleteTelemetryKeyRequestEvent != null) { _instance.OnEventsDeleteTelemetryKeyRequestEvent((EventsModels.DeleteTelemetryKeyRequest)e.Request); return; } } + if (type == typeof(EventsModels.GetTelemetryKeyRequest)) { if (_instance.OnEventsGetTelemetryKeyRequestEvent != null) { _instance.OnEventsGetTelemetryKeyRequestEvent((EventsModels.GetTelemetryKeyRequest)e.Request); return; } } + if (type == typeof(EventsModels.ListTelemetryKeysRequest)) { if (_instance.OnEventsListTelemetryKeysRequestEvent != null) { _instance.OnEventsListTelemetryKeysRequestEvent((EventsModels.ListTelemetryKeysRequest)e.Request); return; } } + if (type == typeof(EventsModels.SetTelemetryKeyActiveRequest)) { if (_instance.OnEventsSetTelemetryKeyActiveRequestEvent != null) { _instance.OnEventsSetTelemetryKeyActiveRequestEvent((EventsModels.SetTelemetryKeyActiveRequest)e.Request); return; } } if (type == typeof(EventsModels.WriteEventsRequest)) { if (_instance.OnEventsWriteEventsRequestEvent != null) { _instance.OnEventsWriteEventsRequestEvent((EventsModels.WriteEventsRequest)e.Request); return; } } if (type == typeof(EventsModels.WriteEventsRequest)) { if (_instance.OnEventsWriteTelemetryEventsRequestEvent != null) { _instance.OnEventsWriteTelemetryEventsRequestEvent((EventsModels.WriteEventsRequest)e.Request); return; } } #endif @@ -2501,6 +2678,29 @@ namespace PlayFab.Events if (type == typeof(GroupsModels.UpdateGroupRequest)) { if (_instance.OnGroupsUpdateGroupRequestEvent != null) { _instance.OnGroupsUpdateGroupRequestEvent((GroupsModels.UpdateGroupRequest)e.Request); return; } } if (type == typeof(GroupsModels.UpdateGroupRoleRequest)) { if (_instance.OnGroupsUpdateRoleRequestEvent != null) { _instance.OnGroupsUpdateRoleRequestEvent((GroupsModels.UpdateGroupRoleRequest)e.Request); return; } } #endif +#if !DISABLE_PLAYFABENTITY_API + if (type == typeof(ProgressionModels.CreateLeaderboardDefinitionRequest)) { if (_instance.OnProgressionCreateLeaderboardDefinitionRequestEvent != null) { _instance.OnProgressionCreateLeaderboardDefinitionRequestEvent((ProgressionModels.CreateLeaderboardDefinitionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.CreateStatisticDefinitionRequest)) { if (_instance.OnProgressionCreateStatisticDefinitionRequestEvent != null) { _instance.OnProgressionCreateStatisticDefinitionRequestEvent((ProgressionModels.CreateStatisticDefinitionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.DeleteLeaderboardDefinitionRequest)) { if (_instance.OnProgressionDeleteLeaderboardDefinitionRequestEvent != null) { _instance.OnProgressionDeleteLeaderboardDefinitionRequestEvent((ProgressionModels.DeleteLeaderboardDefinitionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.DeleteLeaderboardEntriesRequest)) { if (_instance.OnProgressionDeleteLeaderboardEntriesRequestEvent != null) { _instance.OnProgressionDeleteLeaderboardEntriesRequestEvent((ProgressionModels.DeleteLeaderboardEntriesRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.DeleteStatisticDefinitionRequest)) { if (_instance.OnProgressionDeleteStatisticDefinitionRequestEvent != null) { _instance.OnProgressionDeleteStatisticDefinitionRequestEvent((ProgressionModels.DeleteStatisticDefinitionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.DeleteStatisticsRequest)) { if (_instance.OnProgressionDeleteStatisticsRequestEvent != null) { _instance.OnProgressionDeleteStatisticsRequestEvent((ProgressionModels.DeleteStatisticsRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetFriendLeaderboardForEntityRequest)) { if (_instance.OnProgressionGetFriendLeaderboardForEntityRequestEvent != null) { _instance.OnProgressionGetFriendLeaderboardForEntityRequestEvent((ProgressionModels.GetFriendLeaderboardForEntityRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetEntityLeaderboardRequest)) { if (_instance.OnProgressionGetLeaderboardRequestEvent != null) { _instance.OnProgressionGetLeaderboardRequestEvent((ProgressionModels.GetEntityLeaderboardRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetLeaderboardAroundEntityRequest)) { if (_instance.OnProgressionGetLeaderboardAroundEntityRequestEvent != null) { _instance.OnProgressionGetLeaderboardAroundEntityRequestEvent((ProgressionModels.GetLeaderboardAroundEntityRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetLeaderboardDefinitionRequest)) { if (_instance.OnProgressionGetLeaderboardDefinitionRequestEvent != null) { _instance.OnProgressionGetLeaderboardDefinitionRequestEvent((ProgressionModels.GetLeaderboardDefinitionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetLeaderboardForEntitiesRequest)) { if (_instance.OnProgressionGetLeaderboardForEntitiesRequestEvent != null) { _instance.OnProgressionGetLeaderboardForEntitiesRequestEvent((ProgressionModels.GetLeaderboardForEntitiesRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetStatisticDefinitionRequest)) { if (_instance.OnProgressionGetStatisticDefinitionRequestEvent != null) { _instance.OnProgressionGetStatisticDefinitionRequestEvent((ProgressionModels.GetStatisticDefinitionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetStatisticsRequest)) { if (_instance.OnProgressionGetStatisticsRequestEvent != null) { _instance.OnProgressionGetStatisticsRequestEvent((ProgressionModels.GetStatisticsRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.GetStatisticsForEntitiesRequest)) { if (_instance.OnProgressionGetStatisticsForEntitiesRequestEvent != null) { _instance.OnProgressionGetStatisticsForEntitiesRequestEvent((ProgressionModels.GetStatisticsForEntitiesRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.IncrementLeaderboardVersionRequest)) { if (_instance.OnProgressionIncrementLeaderboardVersionRequestEvent != null) { _instance.OnProgressionIncrementLeaderboardVersionRequestEvent((ProgressionModels.IncrementLeaderboardVersionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.IncrementStatisticVersionRequest)) { if (_instance.OnProgressionIncrementStatisticVersionRequestEvent != null) { _instance.OnProgressionIncrementStatisticVersionRequestEvent((ProgressionModels.IncrementStatisticVersionRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.ListLeaderboardDefinitionsRequest)) { if (_instance.OnProgressionListLeaderboardDefinitionsRequestEvent != null) { _instance.OnProgressionListLeaderboardDefinitionsRequestEvent((ProgressionModels.ListLeaderboardDefinitionsRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.ListStatisticDefinitionsRequest)) { if (_instance.OnProgressionListStatisticDefinitionsRequestEvent != null) { _instance.OnProgressionListStatisticDefinitionsRequestEvent((ProgressionModels.ListStatisticDefinitionsRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.UnlinkLeaderboardFromStatisticRequest)) { if (_instance.OnProgressionUnlinkLeaderboardFromStatisticRequestEvent != null) { _instance.OnProgressionUnlinkLeaderboardFromStatisticRequestEvent((ProgressionModels.UnlinkLeaderboardFromStatisticRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.UpdateLeaderboardEntriesRequest)) { if (_instance.OnProgressionUpdateLeaderboardEntriesRequestEvent != null) { _instance.OnProgressionUpdateLeaderboardEntriesRequestEvent((ProgressionModels.UpdateLeaderboardEntriesRequest)e.Request); return; } } + if (type == typeof(ProgressionModels.UpdateStatisticsRequest)) { if (_instance.OnProgressionUpdateStatisticsRequestEvent != null) { _instance.OnProgressionUpdateStatisticsRequestEvent((ProgressionModels.UpdateStatisticsRequest)e.Request); return; } } +#endif #if !DISABLE_PLAYFABENTITY_API if (type == typeof(LocalizationModels.GetLanguageListRequest)) { if (_instance.OnLocalizationGetLanguageListRequestEvent != null) { _instance.OnLocalizationGetLanguageListRequestEvent((LocalizationModels.GetLanguageListRequest)e.Request); return; } } #endif @@ -2527,6 +2727,7 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.DeleteContainerImageRequest)) { if (_instance.OnMultiplayerDeleteContainerImageRepositoryRequestEvent != null) { _instance.OnMultiplayerDeleteContainerImageRepositoryRequestEvent((MultiplayerModels.DeleteContainerImageRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.DeleteLobbyRequest)) { if (_instance.OnMultiplayerDeleteLobbyRequestEvent != null) { _instance.OnMultiplayerDeleteLobbyRequestEvent((MultiplayerModels.DeleteLobbyRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.DeleteRemoteUserRequest)) { if (_instance.OnMultiplayerDeleteRemoteUserRequestEvent != null) { _instance.OnMultiplayerDeleteRemoteUserRequestEvent((MultiplayerModels.DeleteRemoteUserRequest)e.Request); return; } } + if (type == typeof(MultiplayerModels.DeleteSecretRequest)) { if (_instance.OnMultiplayerDeleteSecretRequestEvent != null) { _instance.OnMultiplayerDeleteSecretRequestEvent((MultiplayerModels.DeleteSecretRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.EnableMultiplayerServersForTitleRequest)) { if (_instance.OnMultiplayerEnableMultiplayerServersForTitleRequestEvent != null) { _instance.OnMultiplayerEnableMultiplayerServersForTitleRequestEvent((MultiplayerModels.EnableMultiplayerServersForTitleRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.FindFriendLobbiesRequest)) { if (_instance.OnMultiplayerFindFriendLobbiesRequestEvent != null) { _instance.OnMultiplayerFindFriendLobbiesRequestEvent((MultiplayerModels.FindFriendLobbiesRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.FindLobbiesRequest)) { if (_instance.OnMultiplayerFindLobbiesRequestEvent != null) { _instance.OnMultiplayerFindLobbiesRequestEvent((MultiplayerModels.FindLobbiesRequest)e.Request); return; } } @@ -2551,8 +2752,10 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.InviteToLobbyRequest)) { if (_instance.OnMultiplayerInviteToLobbyRequestEvent != null) { _instance.OnMultiplayerInviteToLobbyRequestEvent((MultiplayerModels.InviteToLobbyRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.JoinArrangedLobbyRequest)) { if (_instance.OnMultiplayerJoinArrangedLobbyRequestEvent != null) { _instance.OnMultiplayerJoinArrangedLobbyRequestEvent((MultiplayerModels.JoinArrangedLobbyRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.JoinLobbyRequest)) { if (_instance.OnMultiplayerJoinLobbyRequestEvent != null) { _instance.OnMultiplayerJoinLobbyRequestEvent((MultiplayerModels.JoinLobbyRequest)e.Request); return; } } + if (type == typeof(MultiplayerModels.JoinLobbyAsServerRequest)) { if (_instance.OnMultiplayerJoinLobbyAsServerRequestEvent != null) { _instance.OnMultiplayerJoinLobbyAsServerRequestEvent((MultiplayerModels.JoinLobbyAsServerRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.JoinMatchmakingTicketRequest)) { if (_instance.OnMultiplayerJoinMatchmakingTicketRequestEvent != null) { _instance.OnMultiplayerJoinMatchmakingTicketRequestEvent((MultiplayerModels.JoinMatchmakingTicketRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.LeaveLobbyRequest)) { if (_instance.OnMultiplayerLeaveLobbyRequestEvent != null) { _instance.OnMultiplayerLeaveLobbyRequestEvent((MultiplayerModels.LeaveLobbyRequest)e.Request); return; } } + if (type == typeof(MultiplayerModels.LeaveLobbyAsServerRequest)) { if (_instance.OnMultiplayerLeaveLobbyAsServerRequestEvent != null) { _instance.OnMultiplayerLeaveLobbyAsServerRequestEvent((MultiplayerModels.LeaveLobbyAsServerRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListMultiplayerServersRequest)) { if (_instance.OnMultiplayerListArchivedMultiplayerServersRequestEvent != null) { _instance.OnMultiplayerListArchivedMultiplayerServersRequestEvent((MultiplayerModels.ListMultiplayerServersRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListAssetSummariesRequest)) { if (_instance.OnMultiplayerListAssetSummariesRequestEvent != null) { _instance.OnMultiplayerListAssetSummariesRequestEvent((MultiplayerModels.ListAssetSummariesRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListBuildAliasesRequest)) { if (_instance.OnMultiplayerListBuildAliasesRequestEvent != null) { _instance.OnMultiplayerListBuildAliasesRequestEvent((MultiplayerModels.ListBuildAliasesRequest)e.Request); return; } } @@ -2565,12 +2768,14 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.ListMultiplayerServersRequest)) { if (_instance.OnMultiplayerListMultiplayerServersRequestEvent != null) { _instance.OnMultiplayerListMultiplayerServersRequestEvent((MultiplayerModels.ListMultiplayerServersRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListPartyQosServersRequest)) { if (_instance.OnMultiplayerListPartyQosServersRequestEvent != null) { _instance.OnMultiplayerListPartyQosServersRequestEvent((MultiplayerModels.ListPartyQosServersRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListQosServersForTitleRequest)) { if (_instance.OnMultiplayerListQosServersForTitleRequestEvent != null) { _instance.OnMultiplayerListQosServersForTitleRequestEvent((MultiplayerModels.ListQosServersForTitleRequest)e.Request); return; } } + if (type == typeof(MultiplayerModels.ListSecretSummariesRequest)) { if (_instance.OnMultiplayerListSecretSummariesRequestEvent != null) { _instance.OnMultiplayerListSecretSummariesRequestEvent((MultiplayerModels.ListSecretSummariesRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListServerBackfillTicketsForPlayerRequest)) { if (_instance.OnMultiplayerListServerBackfillTicketsForPlayerRequestEvent != null) { _instance.OnMultiplayerListServerBackfillTicketsForPlayerRequestEvent((MultiplayerModels.ListServerBackfillTicketsForPlayerRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListTitleMultiplayerServersQuotaChangesRequest)) { if (_instance.OnMultiplayerListTitleMultiplayerServersQuotaChangesRequestEvent != null) { _instance.OnMultiplayerListTitleMultiplayerServersQuotaChangesRequestEvent((MultiplayerModels.ListTitleMultiplayerServersQuotaChangesRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ListVirtualMachineSummariesRequest)) { if (_instance.OnMultiplayerListVirtualMachineSummariesRequestEvent != null) { _instance.OnMultiplayerListVirtualMachineSummariesRequestEvent((MultiplayerModels.ListVirtualMachineSummariesRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.RemoveMatchmakingQueueRequest)) { if (_instance.OnMultiplayerRemoveMatchmakingQueueRequestEvent != null) { _instance.OnMultiplayerRemoveMatchmakingQueueRequestEvent((MultiplayerModels.RemoveMatchmakingQueueRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.RemoveMemberFromLobbyRequest)) { if (_instance.OnMultiplayerRemoveMemberRequestEvent != null) { _instance.OnMultiplayerRemoveMemberRequestEvent((MultiplayerModels.RemoveMemberFromLobbyRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.RequestMultiplayerServerRequest)) { if (_instance.OnMultiplayerRequestMultiplayerServerRequestEvent != null) { _instance.OnMultiplayerRequestMultiplayerServerRequestEvent((MultiplayerModels.RequestMultiplayerServerRequest)e.Request); return; } } + if (type == typeof(MultiplayerModels.RequestPartyServiceRequest)) { if (_instance.OnMultiplayerRequestPartyServiceRequestEvent != null) { _instance.OnMultiplayerRequestPartyServiceRequestEvent((MultiplayerModels.RequestPartyServiceRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.RolloverContainerRegistryCredentialsRequest)) { if (_instance.OnMultiplayerRolloverContainerRegistryCredentialsRequestEvent != null) { _instance.OnMultiplayerRolloverContainerRegistryCredentialsRequestEvent((MultiplayerModels.RolloverContainerRegistryCredentialsRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.SetMatchmakingQueueRequest)) { if (_instance.OnMultiplayerSetMatchmakingQueueRequestEvent != null) { _instance.OnMultiplayerSetMatchmakingQueueRequestEvent((MultiplayerModels.SetMatchmakingQueueRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.ShutdownMultiplayerServerRequest)) { if (_instance.OnMultiplayerShutdownMultiplayerServerRequestEvent != null) { _instance.OnMultiplayerShutdownMultiplayerServerRequestEvent((MultiplayerModels.ShutdownMultiplayerServerRequest)e.Request); return; } } @@ -2584,17 +2789,52 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.UpdateBuildRegionRequest)) { if (_instance.OnMultiplayerUpdateBuildRegionRequestEvent != null) { _instance.OnMultiplayerUpdateBuildRegionRequestEvent((MultiplayerModels.UpdateBuildRegionRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.UpdateBuildRegionsRequest)) { if (_instance.OnMultiplayerUpdateBuildRegionsRequestEvent != null) { _instance.OnMultiplayerUpdateBuildRegionsRequestEvent((MultiplayerModels.UpdateBuildRegionsRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.UpdateLobbyRequest)) { if (_instance.OnMultiplayerUpdateLobbyRequestEvent != null) { _instance.OnMultiplayerUpdateLobbyRequestEvent((MultiplayerModels.UpdateLobbyRequest)e.Request); return; } } + if (type == typeof(MultiplayerModels.UpdateLobbyAsServerRequest)) { if (_instance.OnMultiplayerUpdateLobbyAsServerRequestEvent != null) { _instance.OnMultiplayerUpdateLobbyAsServerRequestEvent((MultiplayerModels.UpdateLobbyAsServerRequest)e.Request); return; } } if (type == typeof(MultiplayerModels.UploadCertificateRequest)) { if (_instance.OnMultiplayerUploadCertificateRequestEvent != null) { _instance.OnMultiplayerUploadCertificateRequestEvent((MultiplayerModels.UploadCertificateRequest)e.Request); return; } } + if (type == typeof(MultiplayerModels.UploadSecretRequest)) { if (_instance.OnMultiplayerUploadSecretRequestEvent != null) { _instance.OnMultiplayerUploadSecretRequestEvent((MultiplayerModels.UploadSecretRequest)e.Request); return; } } #endif #if !DISABLE_PLAYFABENTITY_API if (type == typeof(ProfilesModels.GetGlobalPolicyRequest)) { if (_instance.OnProfilesGetGlobalPolicyRequestEvent != null) { _instance.OnProfilesGetGlobalPolicyRequestEvent((ProfilesModels.GetGlobalPolicyRequest)e.Request); return; } } if (type == typeof(ProfilesModels.GetEntityProfileRequest)) { if (_instance.OnProfilesGetProfileRequestEvent != null) { _instance.OnProfilesGetProfileRequestEvent((ProfilesModels.GetEntityProfileRequest)e.Request); return; } } if (type == typeof(ProfilesModels.GetEntityProfilesRequest)) { if (_instance.OnProfilesGetProfilesRequestEvent != null) { _instance.OnProfilesGetProfilesRequestEvent((ProfilesModels.GetEntityProfilesRequest)e.Request); return; } } if (type == typeof(ProfilesModels.GetTitlePlayersFromMasterPlayerAccountIdsRequest)) { if (_instance.OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsRequestEvent != null) { _instance.OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsRequestEvent((ProfilesModels.GetTitlePlayersFromMasterPlayerAccountIdsRequest)e.Request); return; } } + if (type == typeof(ProfilesModels.GetTitlePlayersFromXboxLiveIDsRequest)) { if (_instance.OnProfilesGetTitlePlayersFromXboxLiveIDsRequestEvent != null) { _instance.OnProfilesGetTitlePlayersFromXboxLiveIDsRequestEvent((ProfilesModels.GetTitlePlayersFromXboxLiveIDsRequest)e.Request); return; } } + if (type == typeof(ProfilesModels.SetDisplayNameRequest)) { if (_instance.OnProfilesSetDisplayNameRequestEvent != null) { _instance.OnProfilesSetDisplayNameRequestEvent((ProfilesModels.SetDisplayNameRequest)e.Request); return; } } if (type == typeof(ProfilesModels.SetGlobalPolicyRequest)) { if (_instance.OnProfilesSetGlobalPolicyRequestEvent != null) { _instance.OnProfilesSetGlobalPolicyRequestEvent((ProfilesModels.SetGlobalPolicyRequest)e.Request); return; } } if (type == typeof(ProfilesModels.SetProfileLanguageRequest)) { if (_instance.OnProfilesSetProfileLanguageRequestEvent != null) { _instance.OnProfilesSetProfileLanguageRequestEvent((ProfilesModels.SetProfileLanguageRequest)e.Request); return; } } if (type == typeof(ProfilesModels.SetEntityProfilePolicyRequest)) { if (_instance.OnProfilesSetProfilePolicyRequestEvent != null) { _instance.OnProfilesSetProfilePolicyRequestEvent((ProfilesModels.SetEntityProfilePolicyRequest)e.Request); return; } } #endif +#if ENABLE_PLAYFABSERVER_API +#endif +#if !DISABLE_PLAYFABENTITY_API + if (type == typeof(AddonModels.CreateOrUpdateAppleRequest)) { if (_instance.OnAddonCreateOrUpdateAppleRequestEvent != null) { _instance.OnAddonCreateOrUpdateAppleRequestEvent((AddonModels.CreateOrUpdateAppleRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdateFacebookRequest)) { if (_instance.OnAddonCreateOrUpdateFacebookRequestEvent != null) { _instance.OnAddonCreateOrUpdateFacebookRequestEvent((AddonModels.CreateOrUpdateFacebookRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdateFacebookInstantGamesRequest)) { if (_instance.OnAddonCreateOrUpdateFacebookInstantGamesRequestEvent != null) { _instance.OnAddonCreateOrUpdateFacebookInstantGamesRequestEvent((AddonModels.CreateOrUpdateFacebookInstantGamesRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdateGoogleRequest)) { if (_instance.OnAddonCreateOrUpdateGoogleRequestEvent != null) { _instance.OnAddonCreateOrUpdateGoogleRequestEvent((AddonModels.CreateOrUpdateGoogleRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdateKongregateRequest)) { if (_instance.OnAddonCreateOrUpdateKongregateRequestEvent != null) { _instance.OnAddonCreateOrUpdateKongregateRequestEvent((AddonModels.CreateOrUpdateKongregateRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdateNintendoRequest)) { if (_instance.OnAddonCreateOrUpdateNintendoRequestEvent != null) { _instance.OnAddonCreateOrUpdateNintendoRequestEvent((AddonModels.CreateOrUpdateNintendoRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdatePSNRequest)) { if (_instance.OnAddonCreateOrUpdatePSNRequestEvent != null) { _instance.OnAddonCreateOrUpdatePSNRequestEvent((AddonModels.CreateOrUpdatePSNRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdateSteamRequest)) { if (_instance.OnAddonCreateOrUpdateSteamRequestEvent != null) { _instance.OnAddonCreateOrUpdateSteamRequestEvent((AddonModels.CreateOrUpdateSteamRequest)e.Request); return; } } + if (type == typeof(AddonModels.CreateOrUpdateTwitchRequest)) { if (_instance.OnAddonCreateOrUpdateTwitchRequestEvent != null) { _instance.OnAddonCreateOrUpdateTwitchRequestEvent((AddonModels.CreateOrUpdateTwitchRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteAppleRequest)) { if (_instance.OnAddonDeleteAppleRequestEvent != null) { _instance.OnAddonDeleteAppleRequestEvent((AddonModels.DeleteAppleRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteFacebookRequest)) { if (_instance.OnAddonDeleteFacebookRequestEvent != null) { _instance.OnAddonDeleteFacebookRequestEvent((AddonModels.DeleteFacebookRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteFacebookInstantGamesRequest)) { if (_instance.OnAddonDeleteFacebookInstantGamesRequestEvent != null) { _instance.OnAddonDeleteFacebookInstantGamesRequestEvent((AddonModels.DeleteFacebookInstantGamesRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteGoogleRequest)) { if (_instance.OnAddonDeleteGoogleRequestEvent != null) { _instance.OnAddonDeleteGoogleRequestEvent((AddonModels.DeleteGoogleRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteKongregateRequest)) { if (_instance.OnAddonDeleteKongregateRequestEvent != null) { _instance.OnAddonDeleteKongregateRequestEvent((AddonModels.DeleteKongregateRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteNintendoRequest)) { if (_instance.OnAddonDeleteNintendoRequestEvent != null) { _instance.OnAddonDeleteNintendoRequestEvent((AddonModels.DeleteNintendoRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeletePSNRequest)) { if (_instance.OnAddonDeletePSNRequestEvent != null) { _instance.OnAddonDeletePSNRequestEvent((AddonModels.DeletePSNRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteSteamRequest)) { if (_instance.OnAddonDeleteSteamRequestEvent != null) { _instance.OnAddonDeleteSteamRequestEvent((AddonModels.DeleteSteamRequest)e.Request); return; } } + if (type == typeof(AddonModels.DeleteTwitchRequest)) { if (_instance.OnAddonDeleteTwitchRequestEvent != null) { _instance.OnAddonDeleteTwitchRequestEvent((AddonModels.DeleteTwitchRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetAppleRequest)) { if (_instance.OnAddonGetAppleRequestEvent != null) { _instance.OnAddonGetAppleRequestEvent((AddonModels.GetAppleRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetFacebookRequest)) { if (_instance.OnAddonGetFacebookRequestEvent != null) { _instance.OnAddonGetFacebookRequestEvent((AddonModels.GetFacebookRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetFacebookInstantGamesRequest)) { if (_instance.OnAddonGetFacebookInstantGamesRequestEvent != null) { _instance.OnAddonGetFacebookInstantGamesRequestEvent((AddonModels.GetFacebookInstantGamesRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetGoogleRequest)) { if (_instance.OnAddonGetGoogleRequestEvent != null) { _instance.OnAddonGetGoogleRequestEvent((AddonModels.GetGoogleRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetKongregateRequest)) { if (_instance.OnAddonGetKongregateRequestEvent != null) { _instance.OnAddonGetKongregateRequestEvent((AddonModels.GetKongregateRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetNintendoRequest)) { if (_instance.OnAddonGetNintendoRequestEvent != null) { _instance.OnAddonGetNintendoRequestEvent((AddonModels.GetNintendoRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetPSNRequest)) { if (_instance.OnAddonGetPSNRequestEvent != null) { _instance.OnAddonGetPSNRequestEvent((AddonModels.GetPSNRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetSteamRequest)) { if (_instance.OnAddonGetSteamRequestEvent != null) { _instance.OnAddonGetSteamRequestEvent((AddonModels.GetSteamRequest)e.Request); return; } } + if (type == typeof(AddonModels.GetTwitchRequest)) { if (_instance.OnAddonGetTwitchRequestEvent != null) { _instance.OnAddonGetTwitchRequestEvent((AddonModels.GetTwitchRequest)e.Request); return; } } +#endif } else @@ -2619,6 +2859,7 @@ namespace PlayFab.Events if (type == typeof(AdminModels.CreateSegmentResponse)) { if (_instance.OnAdminCreateSegmentResultEvent != null) { _instance.OnAdminCreateSegmentResultEvent((AdminModels.CreateSegmentResponse)e.Result); return; } } if (type == typeof(AdminModels.BlankResult)) { if (_instance.OnAdminDeleteContentResultEvent != null) { _instance.OnAdminDeleteContentResultEvent((AdminModels.BlankResult)e.Result); return; } } if (type == typeof(AdminModels.DeleteMasterPlayerAccountResult)) { if (_instance.OnAdminDeleteMasterPlayerAccountResultEvent != null) { _instance.OnAdminDeleteMasterPlayerAccountResultEvent((AdminModels.DeleteMasterPlayerAccountResult)e.Result); return; } } + if (type == typeof(AdminModels.DeleteMasterPlayerEventDataResult)) { if (_instance.OnAdminDeleteMasterPlayerEventDataResultEvent != null) { _instance.OnAdminDeleteMasterPlayerEventDataResultEvent((AdminModels.DeleteMasterPlayerEventDataResult)e.Result); return; } } if (type == typeof(AdminModels.DeleteMembershipSubscriptionResult)) { if (_instance.OnAdminDeleteMembershipSubscriptionResultEvent != null) { _instance.OnAdminDeleteMembershipSubscriptionResultEvent((AdminModels.DeleteMembershipSubscriptionResult)e.Result); return; } } if (type == typeof(AdminModels.EmptyResponse)) { if (_instance.OnAdminDeleteOpenIdConnectionResultEvent != null) { _instance.OnAdminDeleteOpenIdConnectionResultEvent((AdminModels.EmptyResponse)e.Result); return; } } if (type == typeof(AdminModels.DeletePlayerResult)) { if (_instance.OnAdminDeletePlayerResultEvent != null) { _instance.OnAdminDeletePlayerResultEvent((AdminModels.DeletePlayerResult)e.Result); return; } } @@ -2639,8 +2880,6 @@ namespace PlayFab.Events if (type == typeof(AdminModels.GetContentListResult)) { if (_instance.OnAdminGetContentListResultEvent != null) { _instance.OnAdminGetContentListResultEvent((AdminModels.GetContentListResult)e.Result); return; } } if (type == typeof(AdminModels.GetContentUploadUrlResult)) { if (_instance.OnAdminGetContentUploadUrlResultEvent != null) { _instance.OnAdminGetContentUploadUrlResultEvent((AdminModels.GetContentUploadUrlResult)e.Result); return; } } if (type == typeof(AdminModels.GetDataReportResult)) { if (_instance.OnAdminGetDataReportResultEvent != null) { _instance.OnAdminGetDataReportResultEvent((AdminModels.GetDataReportResult)e.Result); return; } } - if (type == typeof(AdminModels.GetMatchmakerGameInfoResult)) { if (_instance.OnAdminGetMatchmakerGameInfoResultEvent != null) { _instance.OnAdminGetMatchmakerGameInfoResultEvent((AdminModels.GetMatchmakerGameInfoResult)e.Result); return; } } - if (type == typeof(AdminModels.GetMatchmakerGameModesResult)) { if (_instance.OnAdminGetMatchmakerGameModesResultEvent != null) { _instance.OnAdminGetMatchmakerGameModesResultEvent((AdminModels.GetMatchmakerGameModesResult)e.Result); return; } } if (type == typeof(AdminModels.GetPlayedTitleListResult)) { if (_instance.OnAdminGetPlayedTitleListResultEvent != null) { _instance.OnAdminGetPlayedTitleListResultEvent((AdminModels.GetPlayedTitleListResult)e.Result); return; } } if (type == typeof(AdminModels.GetPlayerIdFromAuthTokenResult)) { if (_instance.OnAdminGetPlayerIdFromAuthTokenResultEvent != null) { _instance.OnAdminGetPlayerIdFromAuthTokenResultEvent((AdminModels.GetPlayerIdFromAuthTokenResult)e.Result); return; } } if (type == typeof(AdminModels.GetPlayerProfileResult)) { if (_instance.OnAdminGetPlayerProfileResultEvent != null) { _instance.OnAdminGetPlayerProfileResultEvent((AdminModels.GetPlayerProfileResult)e.Result); return; } } @@ -2674,7 +2913,6 @@ namespace PlayFab.Events if (type == typeof(AdminModels.IncrementPlayerStatisticVersionResult)) { if (_instance.OnAdminIncrementPlayerStatisticVersionResultEvent != null) { _instance.OnAdminIncrementPlayerStatisticVersionResultEvent((AdminModels.IncrementPlayerStatisticVersionResult)e.Result); return; } } if (type == typeof(AdminModels.ListOpenIdConnectionResponse)) { if (_instance.OnAdminListOpenIdConnectionResultEvent != null) { _instance.OnAdminListOpenIdConnectionResultEvent((AdminModels.ListOpenIdConnectionResponse)e.Result); return; } } if (type == typeof(AdminModels.ListVirtualCurrencyTypesResult)) { if (_instance.OnAdminListVirtualCurrencyTypesResultEvent != null) { _instance.OnAdminListVirtualCurrencyTypesResultEvent((AdminModels.ListVirtualCurrencyTypesResult)e.Result); return; } } - if (type == typeof(AdminModels.ModifyServerBuildResult)) { if (_instance.OnAdminModifyServerBuildResultEvent != null) { _instance.OnAdminModifyServerBuildResultEvent((AdminModels.ModifyServerBuildResult)e.Result); return; } } if (type == typeof(AdminModels.RefundPurchaseResponse)) { if (_instance.OnAdminRefundPurchaseResultEvent != null) { _instance.OnAdminRefundPurchaseResultEvent((AdminModels.RefundPurchaseResponse)e.Result); return; } } if (type == typeof(AdminModels.RemovePlayerTagResult)) { if (_instance.OnAdminRemovePlayerTagResultEvent != null) { _instance.OnAdminRemovePlayerTagResultEvent((AdminModels.RemovePlayerTagResult)e.Result); return; } } if (type == typeof(AdminModels.BlankResult)) { if (_instance.OnAdminRemoveVirtualCurrencyTypesResultEvent != null) { _instance.OnAdminRemoveVirtualCurrencyTypesResultEvent((AdminModels.BlankResult)e.Result); return; } } @@ -2749,11 +2987,9 @@ namespace PlayFab.Events if (type == typeof(ClientModels.GetCharacterDataResult)) { if (_instance.OnGetCharacterReadOnlyDataResultEvent != null) { _instance.OnGetCharacterReadOnlyDataResultEvent((ClientModels.GetCharacterDataResult)e.Result); return; } } if (type == typeof(ClientModels.GetCharacterStatisticsResult)) { if (_instance.OnGetCharacterStatisticsResultEvent != null) { _instance.OnGetCharacterStatisticsResultEvent((ClientModels.GetCharacterStatisticsResult)e.Result); return; } } if (type == typeof(ClientModels.GetContentDownloadUrlResult)) { if (_instance.OnGetContentDownloadUrlResultEvent != null) { _instance.OnGetContentDownloadUrlResultEvent((ClientModels.GetContentDownloadUrlResult)e.Result); return; } } - if (type == typeof(ClientModels.CurrentGamesResult)) { if (_instance.OnGetCurrentGamesResultEvent != null) { _instance.OnGetCurrentGamesResultEvent((ClientModels.CurrentGamesResult)e.Result); return; } } if (type == typeof(ClientModels.GetLeaderboardResult)) { if (_instance.OnGetFriendLeaderboardResultEvent != null) { _instance.OnGetFriendLeaderboardResultEvent((ClientModels.GetLeaderboardResult)e.Result); return; } } if (type == typeof(ClientModels.GetFriendLeaderboardAroundPlayerResult)) { if (_instance.OnGetFriendLeaderboardAroundPlayerResultEvent != null) { _instance.OnGetFriendLeaderboardAroundPlayerResultEvent((ClientModels.GetFriendLeaderboardAroundPlayerResult)e.Result); return; } } if (type == typeof(ClientModels.GetFriendsListResult)) { if (_instance.OnGetFriendsListResultEvent != null) { _instance.OnGetFriendsListResultEvent((ClientModels.GetFriendsListResult)e.Result); return; } } - if (type == typeof(ClientModels.GameServerRegionsResult)) { if (_instance.OnGetGameServerRegionsResultEvent != null) { _instance.OnGetGameServerRegionsResultEvent((ClientModels.GameServerRegionsResult)e.Result); return; } } if (type == typeof(ClientModels.GetLeaderboardResult)) { if (_instance.OnGetLeaderboardResultEvent != null) { _instance.OnGetLeaderboardResultEvent((ClientModels.GetLeaderboardResult)e.Result); return; } } if (type == typeof(ClientModels.GetLeaderboardAroundCharacterResult)) { if (_instance.OnGetLeaderboardAroundCharacterResultEvent != null) { _instance.OnGetLeaderboardAroundCharacterResultEvent((ClientModels.GetLeaderboardAroundCharacterResult)e.Result); return; } } if (type == typeof(ClientModels.GetLeaderboardAroundPlayerResult)) { if (_instance.OnGetLeaderboardAroundPlayerResultEvent != null) { _instance.OnGetLeaderboardAroundPlayerResultEvent((ClientModels.GetLeaderboardAroundPlayerResult)e.Result); return; } } @@ -2777,7 +3013,9 @@ namespace PlayFab.Events if (type == typeof(ClientModels.GetPlayFabIDsFromNintendoServiceAccountIdsResult)) { if (_instance.OnGetPlayFabIDsFromNintendoServiceAccountIdsResultEvent != null) { _instance.OnGetPlayFabIDsFromNintendoServiceAccountIdsResultEvent((ClientModels.GetPlayFabIDsFromNintendoServiceAccountIdsResult)e.Result); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsResult)) { if (_instance.OnGetPlayFabIDsFromNintendoSwitchDeviceIdsResultEvent != null) { _instance.OnGetPlayFabIDsFromNintendoSwitchDeviceIdsResultEvent((ClientModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsResult)e.Result); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromPSNAccountIDsResult)) { if (_instance.OnGetPlayFabIDsFromPSNAccountIDsResultEvent != null) { _instance.OnGetPlayFabIDsFromPSNAccountIDsResultEvent((ClientModels.GetPlayFabIDsFromPSNAccountIDsResult)e.Result); return; } } + if (type == typeof(ClientModels.GetPlayFabIDsFromPSNOnlineIDsResult)) { if (_instance.OnGetPlayFabIDsFromPSNOnlineIDsResultEvent != null) { _instance.OnGetPlayFabIDsFromPSNOnlineIDsResultEvent((ClientModels.GetPlayFabIDsFromPSNOnlineIDsResult)e.Result); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromSteamIDsResult)) { if (_instance.OnGetPlayFabIDsFromSteamIDsResultEvent != null) { _instance.OnGetPlayFabIDsFromSteamIDsResultEvent((ClientModels.GetPlayFabIDsFromSteamIDsResult)e.Result); return; } } + if (type == typeof(ClientModels.GetPlayFabIDsFromSteamNamesResult)) { if (_instance.OnGetPlayFabIDsFromSteamNamesResultEvent != null) { _instance.OnGetPlayFabIDsFromSteamNamesResultEvent((ClientModels.GetPlayFabIDsFromSteamNamesResult)e.Result); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromTwitchIDsResult)) { if (_instance.OnGetPlayFabIDsFromTwitchIDsResultEvent != null) { _instance.OnGetPlayFabIDsFromTwitchIDsResultEvent((ClientModels.GetPlayFabIDsFromTwitchIDsResult)e.Result); return; } } if (type == typeof(ClientModels.GetPlayFabIDsFromXboxLiveIDsResult)) { if (_instance.OnGetPlayFabIDsFromXboxLiveIDsResultEvent != null) { _instance.OnGetPlayFabIDsFromXboxLiveIDsResultEvent((ClientModels.GetPlayFabIDsFromXboxLiveIDsResult)e.Result); return; } } if (type == typeof(ClientModels.GetPublisherDataResult)) { if (_instance.OnGetPublisherDataResultEvent != null) { _instance.OnGetPublisherDataResultEvent((ClientModels.GetPublisherDataResult)e.Result); return; } } @@ -2812,7 +3050,6 @@ namespace PlayFab.Events if (type == typeof(ClientModels.LinkSteamAccountResult)) { if (_instance.OnLinkSteamAccountResultEvent != null) { _instance.OnLinkSteamAccountResultEvent((ClientModels.LinkSteamAccountResult)e.Result); return; } } if (type == typeof(ClientModels.LinkTwitchAccountResult)) { if (_instance.OnLinkTwitchResultEvent != null) { _instance.OnLinkTwitchResultEvent((ClientModels.LinkTwitchAccountResult)e.Result); return; } } if (type == typeof(ClientModels.LinkXboxAccountResult)) { if (_instance.OnLinkXboxAccountResultEvent != null) { _instance.OnLinkXboxAccountResultEvent((ClientModels.LinkXboxAccountResult)e.Result); return; } } - if (type == typeof(ClientModels.MatchmakeResult)) { if (_instance.OnMatchmakeResultEvent != null) { _instance.OnMatchmakeResultEvent((ClientModels.MatchmakeResult)e.Result); return; } } if (type == typeof(ClientModels.OpenTradeResponse)) { if (_instance.OnOpenTradeResultEvent != null) { _instance.OnOpenTradeResultEvent((ClientModels.OpenTradeResponse)e.Result); return; } } if (type == typeof(ClientModels.PayForPurchaseResult)) { if (_instance.OnPayForPurchaseResultEvent != null) { _instance.OnPayForPurchaseResultEvent((ClientModels.PayForPurchaseResult)e.Result); return; } } if (type == typeof(ClientModels.PurchaseItemResult)) { if (_instance.OnPurchaseItemResultEvent != null) { _instance.OnPurchaseItemResultEvent((ClientModels.PurchaseItemResult)e.Result); return; } } @@ -2869,13 +3106,6 @@ namespace PlayFab.Events if (type == typeof(ClientModels.WriteEventResponse)) { if (_instance.OnWritePlayerEventResultEvent != null) { _instance.OnWritePlayerEventResultEvent((ClientModels.WriteEventResponse)e.Result); return; } } if (type == typeof(ClientModels.WriteEventResponse)) { if (_instance.OnWriteTitleEventResultEvent != null) { _instance.OnWriteTitleEventResultEvent((ClientModels.WriteEventResponse)e.Result); return; } } #endif -#if ENABLE_PLAYFABSERVER_API - - if (type == typeof(MatchmakerModels.AuthUserResponse)) { if (_instance.OnMatchmakerAuthUserResultEvent != null) { _instance.OnMatchmakerAuthUserResultEvent((MatchmakerModels.AuthUserResponse)e.Result); return; } } - if (type == typeof(MatchmakerModels.PlayerJoinedResponse)) { if (_instance.OnMatchmakerPlayerJoinedResultEvent != null) { _instance.OnMatchmakerPlayerJoinedResultEvent((MatchmakerModels.PlayerJoinedResponse)e.Result); return; } } - if (type == typeof(MatchmakerModels.PlayerLeftResponse)) { if (_instance.OnMatchmakerPlayerLeftResultEvent != null) { _instance.OnMatchmakerPlayerLeftResultEvent((MatchmakerModels.PlayerLeftResponse)e.Result); return; } } - if (type == typeof(MatchmakerModels.UserInfoResponse)) { if (_instance.OnMatchmakerUserInfoResultEvent != null) { _instance.OnMatchmakerUserInfoResultEvent((MatchmakerModels.UserInfoResponse)e.Result); return; } } -#endif #if ENABLE_PLAYFABSERVER_API if (type == typeof(ServerModels.ModifyCharacterVirtualCurrencyResult)) { if (_instance.OnServerAddCharacterVirtualCurrencyResultEvent != null) { _instance.OnServerAddCharacterVirtualCurrencyResultEvent((ServerModels.ModifyCharacterVirtualCurrencyResult)e.Result); return; } } @@ -2893,7 +3123,6 @@ namespace PlayFab.Events if (type == typeof(ServerModels.DeletePlayerResult)) { if (_instance.OnServerDeletePlayerResultEvent != null) { _instance.OnServerDeletePlayerResultEvent((ServerModels.DeletePlayerResult)e.Result); return; } } if (type == typeof(ServerModels.DeletePushNotificationTemplateResult)) { if (_instance.OnServerDeletePushNotificationTemplateResultEvent != null) { _instance.OnServerDeletePushNotificationTemplateResultEvent((ServerModels.DeletePushNotificationTemplateResult)e.Result); return; } } if (type == typeof(ServerModels.EmptyResponse)) { if (_instance.OnServerDeleteSharedGroupResultEvent != null) { _instance.OnServerDeleteSharedGroupResultEvent((ServerModels.EmptyResponse)e.Result); return; } } - if (type == typeof(ServerModels.DeregisterGameResponse)) { if (_instance.OnServerDeregisterGameResultEvent != null) { _instance.OnServerDeregisterGameResultEvent((ServerModels.DeregisterGameResponse)e.Result); return; } } if (type == typeof(ServerModels.EvaluateRandomResultTableResult)) { if (_instance.OnServerEvaluateRandomResultTableResultEvent != null) { _instance.OnServerEvaluateRandomResultTableResultEvent((ServerModels.EvaluateRandomResultTableResult)e.Result); return; } } if (type == typeof(ServerModels.ExecuteCloudScriptResult)) { if (_instance.OnServerExecuteCloudScriptResultEvent != null) { _instance.OnServerExecuteCloudScriptResultEvent((ServerModels.ExecuteCloudScriptResult)e.Result); return; } } if (type == typeof(ServerModels.GetAllSegmentsResult)) { if (_instance.OnServerGetAllSegmentsResultEvent != null) { _instance.OnServerGetAllSegmentsResultEvent((ServerModels.GetAllSegmentsResult)e.Result); return; } } @@ -2925,7 +3154,9 @@ namespace PlayFab.Events if (type == typeof(ServerModels.GetPlayFabIDsFromNintendoServiceAccountIdsResult)) { if (_instance.OnServerGetPlayFabIDsFromNintendoServiceAccountIdsResultEvent != null) { _instance.OnServerGetPlayFabIDsFromNintendoServiceAccountIdsResultEvent((ServerModels.GetPlayFabIDsFromNintendoServiceAccountIdsResult)e.Result); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsResult)) { if (_instance.OnServerGetPlayFabIDsFromNintendoSwitchDeviceIdsResultEvent != null) { _instance.OnServerGetPlayFabIDsFromNintendoSwitchDeviceIdsResultEvent((ServerModels.GetPlayFabIDsFromNintendoSwitchDeviceIdsResult)e.Result); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromPSNAccountIDsResult)) { if (_instance.OnServerGetPlayFabIDsFromPSNAccountIDsResultEvent != null) { _instance.OnServerGetPlayFabIDsFromPSNAccountIDsResultEvent((ServerModels.GetPlayFabIDsFromPSNAccountIDsResult)e.Result); return; } } + if (type == typeof(ServerModels.GetPlayFabIDsFromPSNOnlineIDsResult)) { if (_instance.OnServerGetPlayFabIDsFromPSNOnlineIDsResultEvent != null) { _instance.OnServerGetPlayFabIDsFromPSNOnlineIDsResultEvent((ServerModels.GetPlayFabIDsFromPSNOnlineIDsResult)e.Result); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromSteamIDsResult)) { if (_instance.OnServerGetPlayFabIDsFromSteamIDsResultEvent != null) { _instance.OnServerGetPlayFabIDsFromSteamIDsResultEvent((ServerModels.GetPlayFabIDsFromSteamIDsResult)e.Result); return; } } + if (type == typeof(ServerModels.GetPlayFabIDsFromSteamNamesResult)) { if (_instance.OnServerGetPlayFabIDsFromSteamNamesResultEvent != null) { _instance.OnServerGetPlayFabIDsFromSteamNamesResultEvent((ServerModels.GetPlayFabIDsFromSteamNamesResult)e.Result); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromTwitchIDsResult)) { if (_instance.OnServerGetPlayFabIDsFromTwitchIDsResultEvent != null) { _instance.OnServerGetPlayFabIDsFromTwitchIDsResultEvent((ServerModels.GetPlayFabIDsFromTwitchIDsResult)e.Result); return; } } if (type == typeof(ServerModels.GetPlayFabIDsFromXboxLiveIDsResult)) { if (_instance.OnServerGetPlayFabIDsFromXboxLiveIDsResultEvent != null) { _instance.OnServerGetPlayFabIDsFromXboxLiveIDsResultEvent((ServerModels.GetPlayFabIDsFromXboxLiveIDsResult)e.Result); return; } } if (type == typeof(ServerModels.GetPublisherDataResult)) { if (_instance.OnServerGetPublisherDataResultEvent != null) { _instance.OnServerGetPublisherDataResultEvent((ServerModels.GetPublisherDataResult)e.Result); return; } } @@ -2951,10 +3182,14 @@ namespace PlayFab.Events if (type == typeof(ServerModels.GrantItemsToUserResult)) { if (_instance.OnServerGrantItemsToUserResultEvent != null) { _instance.OnServerGrantItemsToUserResultEvent((ServerModels.GrantItemsToUserResult)e.Result); return; } } if (type == typeof(ServerModels.GrantItemsToUsersResult)) { if (_instance.OnServerGrantItemsToUsersResultEvent != null) { _instance.OnServerGrantItemsToUsersResultEvent((ServerModels.GrantItemsToUsersResult)e.Result); return; } } if (type == typeof(ServerModels.EmptyResult)) { if (_instance.OnServerLinkNintendoServiceAccountResultEvent != null) { _instance.OnServerLinkNintendoServiceAccountResultEvent((ServerModels.EmptyResult)e.Result); return; } } + if (type == typeof(ServerModels.EmptyResult)) { if (_instance.OnServerLinkNintendoServiceAccountSubjectResultEvent != null) { _instance.OnServerLinkNintendoServiceAccountSubjectResultEvent((ServerModels.EmptyResult)e.Result); return; } } if (type == typeof(ServerModels.LinkNintendoSwitchDeviceIdResult)) { if (_instance.OnServerLinkNintendoSwitchDeviceIdResultEvent != null) { _instance.OnServerLinkNintendoSwitchDeviceIdResultEvent((ServerModels.LinkNintendoSwitchDeviceIdResult)e.Result); return; } } if (type == typeof(ServerModels.LinkPSNAccountResult)) { if (_instance.OnServerLinkPSNAccountResultEvent != null) { _instance.OnServerLinkPSNAccountResultEvent((ServerModels.LinkPSNAccountResult)e.Result); return; } } + if (type == typeof(ServerModels.LinkPSNIdResponse)) { if (_instance.OnServerLinkPSNIdResultEvent != null) { _instance.OnServerLinkPSNIdResultEvent((ServerModels.LinkPSNIdResponse)e.Result); return; } } if (type == typeof(ServerModels.LinkServerCustomIdResult)) { if (_instance.OnServerLinkServerCustomIdResultEvent != null) { _instance.OnServerLinkServerCustomIdResultEvent((ServerModels.LinkServerCustomIdResult)e.Result); return; } } + if (type == typeof(ServerModels.LinkSteamIdResult)) { if (_instance.OnServerLinkSteamIdResultEvent != null) { _instance.OnServerLinkSteamIdResultEvent((ServerModels.LinkSteamIdResult)e.Result); return; } } if (type == typeof(ServerModels.LinkXboxAccountResult)) { if (_instance.OnServerLinkXboxAccountResultEvent != null) { _instance.OnServerLinkXboxAccountResultEvent((ServerModels.LinkXboxAccountResult)e.Result); return; } } + if (type == typeof(ServerModels.ServerLoginResult)) { if (_instance.OnServerLoginWithPSNResultEvent != null) { _instance.OnServerLoginWithPSNResultEvent((ServerModels.ServerLoginResult)e.Result); return; } } if (type == typeof(ServerModels.ServerLoginResult)) { if (_instance.OnServerLoginWithServerCustomIdResultEvent != null) { _instance.OnServerLoginWithServerCustomIdResultEvent((ServerModels.ServerLoginResult)e.Result); return; } } if (type == typeof(ServerModels.ServerLoginResult)) { if (_instance.OnServerLoginWithSteamIdResultEvent != null) { _instance.OnServerLoginWithSteamIdResultEvent((ServerModels.ServerLoginResult)e.Result); return; } } if (type == typeof(ServerModels.ServerLoginResult)) { if (_instance.OnServerLoginWithXboxResultEvent != null) { _instance.OnServerLoginWithXboxResultEvent((ServerModels.ServerLoginResult)e.Result); return; } } @@ -2963,11 +3198,7 @@ namespace PlayFab.Events if (type == typeof(ServerModels.MoveItemToCharacterFromCharacterResult)) { if (_instance.OnServerMoveItemToCharacterFromCharacterResultEvent != null) { _instance.OnServerMoveItemToCharacterFromCharacterResultEvent((ServerModels.MoveItemToCharacterFromCharacterResult)e.Result); return; } } if (type == typeof(ServerModels.MoveItemToCharacterFromUserResult)) { if (_instance.OnServerMoveItemToCharacterFromUserResultEvent != null) { _instance.OnServerMoveItemToCharacterFromUserResultEvent((ServerModels.MoveItemToCharacterFromUserResult)e.Result); return; } } if (type == typeof(ServerModels.MoveItemToUserFromCharacterResult)) { if (_instance.OnServerMoveItemToUserFromCharacterResultEvent != null) { _instance.OnServerMoveItemToUserFromCharacterResultEvent((ServerModels.MoveItemToUserFromCharacterResult)e.Result); return; } } - if (type == typeof(ServerModels.NotifyMatchmakerPlayerLeftResult)) { if (_instance.OnServerNotifyMatchmakerPlayerLeftResultEvent != null) { _instance.OnServerNotifyMatchmakerPlayerLeftResultEvent((ServerModels.NotifyMatchmakerPlayerLeftResult)e.Result); return; } } if (type == typeof(ServerModels.RedeemCouponResult)) { if (_instance.OnServerRedeemCouponResultEvent != null) { _instance.OnServerRedeemCouponResultEvent((ServerModels.RedeemCouponResult)e.Result); return; } } - if (type == typeof(ServerModels.RedeemMatchmakerTicketResult)) { if (_instance.OnServerRedeemMatchmakerTicketResultEvent != null) { _instance.OnServerRedeemMatchmakerTicketResultEvent((ServerModels.RedeemMatchmakerTicketResult)e.Result); return; } } - if (type == typeof(ServerModels.RefreshGameServerInstanceHeartbeatResult)) { if (_instance.OnServerRefreshGameServerInstanceHeartbeatResultEvent != null) { _instance.OnServerRefreshGameServerInstanceHeartbeatResultEvent((ServerModels.RefreshGameServerInstanceHeartbeatResult)e.Result); return; } } - if (type == typeof(ServerModels.RegisterGameResponse)) { if (_instance.OnServerRegisterGameResultEvent != null) { _instance.OnServerRegisterGameResultEvent((ServerModels.RegisterGameResponse)e.Result); return; } } if (type == typeof(ServerModels.EmptyResponse)) { if (_instance.OnServerRemoveFriendResultEvent != null) { _instance.OnServerRemoveFriendResultEvent((ServerModels.EmptyResponse)e.Result); return; } } if (type == typeof(ServerModels.EmptyResult)) { if (_instance.OnServerRemoveGenericIDResultEvent != null) { _instance.OnServerRemoveGenericIDResultEvent((ServerModels.EmptyResult)e.Result); return; } } if (type == typeof(ServerModels.RemovePlayerTagResult)) { if (_instance.OnServerRemovePlayerTagResultEvent != null) { _instance.OnServerRemovePlayerTagResultEvent((ServerModels.RemovePlayerTagResult)e.Result); return; } } @@ -2983,9 +3214,6 @@ namespace PlayFab.Events if (type == typeof(ServerModels.SendPushNotificationResult)) { if (_instance.OnServerSendPushNotificationResultEvent != null) { _instance.OnServerSendPushNotificationResultEvent((ServerModels.SendPushNotificationResult)e.Result); return; } } if (type == typeof(ServerModels.SendPushNotificationResult)) { if (_instance.OnServerSendPushNotificationFromTemplateResultEvent != null) { _instance.OnServerSendPushNotificationFromTemplateResultEvent((ServerModels.SendPushNotificationResult)e.Result); return; } } if (type == typeof(ServerModels.EmptyResponse)) { if (_instance.OnServerSetFriendTagsResultEvent != null) { _instance.OnServerSetFriendTagsResultEvent((ServerModels.EmptyResponse)e.Result); return; } } - if (type == typeof(ServerModels.SetGameServerInstanceDataResult)) { if (_instance.OnServerSetGameServerInstanceDataResultEvent != null) { _instance.OnServerSetGameServerInstanceDataResultEvent((ServerModels.SetGameServerInstanceDataResult)e.Result); return; } } - if (type == typeof(ServerModels.SetGameServerInstanceStateResult)) { if (_instance.OnServerSetGameServerInstanceStateResultEvent != null) { _instance.OnServerSetGameServerInstanceStateResultEvent((ServerModels.SetGameServerInstanceStateResult)e.Result); return; } } - if (type == typeof(ServerModels.SetGameServerInstanceTagsResult)) { if (_instance.OnServerSetGameServerInstanceTagsResultEvent != null) { _instance.OnServerSetGameServerInstanceTagsResultEvent((ServerModels.SetGameServerInstanceTagsResult)e.Result); return; } } if (type == typeof(ServerModels.SetPlayerSecretResult)) { if (_instance.OnServerSetPlayerSecretResultEvent != null) { _instance.OnServerSetPlayerSecretResultEvent((ServerModels.SetPlayerSecretResult)e.Result); return; } } if (type == typeof(ServerModels.SetPublisherDataResult)) { if (_instance.OnServerSetPublisherDataResultEvent != null) { _instance.OnServerSetPublisherDataResultEvent((ServerModels.SetPublisherDataResult)e.Result); return; } } if (type == typeof(ServerModels.SetTitleDataResult)) { if (_instance.OnServerSetTitleDataResultEvent != null) { _instance.OnServerSetTitleDataResultEvent((ServerModels.SetTitleDataResult)e.Result); return; } } @@ -2996,6 +3224,7 @@ namespace PlayFab.Events if (type == typeof(ServerModels.UnlinkNintendoSwitchDeviceIdResult)) { if (_instance.OnServerUnlinkNintendoSwitchDeviceIdResultEvent != null) { _instance.OnServerUnlinkNintendoSwitchDeviceIdResultEvent((ServerModels.UnlinkNintendoSwitchDeviceIdResult)e.Result); return; } } if (type == typeof(ServerModels.UnlinkPSNAccountResult)) { if (_instance.OnServerUnlinkPSNAccountResultEvent != null) { _instance.OnServerUnlinkPSNAccountResultEvent((ServerModels.UnlinkPSNAccountResult)e.Result); return; } } if (type == typeof(ServerModels.UnlinkServerCustomIdResult)) { if (_instance.OnServerUnlinkServerCustomIdResultEvent != null) { _instance.OnServerUnlinkServerCustomIdResultEvent((ServerModels.UnlinkServerCustomIdResult)e.Result); return; } } + if (type == typeof(ServerModels.UnlinkSteamIdResult)) { if (_instance.OnServerUnlinkSteamIdResultEvent != null) { _instance.OnServerUnlinkSteamIdResultEvent((ServerModels.UnlinkSteamIdResult)e.Result); return; } } if (type == typeof(ServerModels.UnlinkXboxAccountResult)) { if (_instance.OnServerUnlinkXboxAccountResultEvent != null) { _instance.OnServerUnlinkXboxAccountResultEvent((ServerModels.UnlinkXboxAccountResult)e.Result); return; } } if (type == typeof(ServerModels.UnlockContainerItemResult)) { if (_instance.OnServerUnlockContainerInstanceResultEvent != null) { _instance.OnServerUnlockContainerInstanceResultEvent((ServerModels.UnlockContainerItemResult)e.Result); return; } } if (type == typeof(ServerModels.UnlockContainerItemResult)) { if (_instance.OnServerUnlockContainerItemResultEvent != null) { _instance.OnServerUnlockContainerItemResultEvent((ServerModels.UnlockContainerItemResult)e.Result); return; } } @@ -3030,6 +3259,7 @@ namespace PlayFab.Events if (type == typeof(CloudScriptModels.ExecuteCloudScriptResult)) { if (_instance.OnCloudScriptExecuteEntityCloudScriptResultEvent != null) { _instance.OnCloudScriptExecuteEntityCloudScriptResultEvent((CloudScriptModels.ExecuteCloudScriptResult)e.Result); return; } } if (type == typeof(CloudScriptModels.ExecuteFunctionResult)) { if (_instance.OnCloudScriptExecuteFunctionResultEvent != null) { _instance.OnCloudScriptExecuteFunctionResultEvent((CloudScriptModels.ExecuteFunctionResult)e.Result); return; } } if (type == typeof(CloudScriptModels.GetFunctionResult)) { if (_instance.OnCloudScriptGetFunctionResultEvent != null) { _instance.OnCloudScriptGetFunctionResultEvent((CloudScriptModels.GetFunctionResult)e.Result); return; } } + if (type == typeof(CloudScriptModels.ListEventHubFunctionsResult)) { if (_instance.OnCloudScriptListEventHubFunctionsResultEvent != null) { _instance.OnCloudScriptListEventHubFunctionsResultEvent((CloudScriptModels.ListEventHubFunctionsResult)e.Result); return; } } if (type == typeof(CloudScriptModels.ListFunctionsResult)) { if (_instance.OnCloudScriptListFunctionsResultEvent != null) { _instance.OnCloudScriptListFunctionsResultEvent((CloudScriptModels.ListFunctionsResult)e.Result); return; } } if (type == typeof(CloudScriptModels.ListHttpFunctionsResult)) { if (_instance.OnCloudScriptListHttpFunctionsResultEvent != null) { _instance.OnCloudScriptListHttpFunctionsResultEvent((CloudScriptModels.ListHttpFunctionsResult)e.Result); return; } } if (type == typeof(CloudScriptModels.ListQueuedFunctionsResult)) { if (_instance.OnCloudScriptListQueuedFunctionsResultEvent != null) { _instance.OnCloudScriptListQueuedFunctionsResultEvent((CloudScriptModels.ListQueuedFunctionsResult)e.Result); return; } } @@ -3037,6 +3267,7 @@ namespace PlayFab.Events if (type == typeof(CloudScriptModels.EmptyResult)) { if (_instance.OnCloudScriptPostFunctionResultForFunctionExecutionResultEvent != null) { _instance.OnCloudScriptPostFunctionResultForFunctionExecutionResultEvent((CloudScriptModels.EmptyResult)e.Result); return; } } if (type == typeof(CloudScriptModels.EmptyResult)) { if (_instance.OnCloudScriptPostFunctionResultForPlayerTriggeredActionResultEvent != null) { _instance.OnCloudScriptPostFunctionResultForPlayerTriggeredActionResultEvent((CloudScriptModels.EmptyResult)e.Result); return; } } if (type == typeof(CloudScriptModels.EmptyResult)) { if (_instance.OnCloudScriptPostFunctionResultForScheduledTaskResultEvent != null) { _instance.OnCloudScriptPostFunctionResultForScheduledTaskResultEvent((CloudScriptModels.EmptyResult)e.Result); return; } } + if (type == typeof(CloudScriptModels.EmptyResult)) { if (_instance.OnCloudScriptRegisterEventHubFunctionResultEvent != null) { _instance.OnCloudScriptRegisterEventHubFunctionResultEvent((CloudScriptModels.EmptyResult)e.Result); return; } } if (type == typeof(CloudScriptModels.EmptyResult)) { if (_instance.OnCloudScriptRegisterHttpFunctionResultEvent != null) { _instance.OnCloudScriptRegisterHttpFunctionResultEvent((CloudScriptModels.EmptyResult)e.Result); return; } } if (type == typeof(CloudScriptModels.EmptyResult)) { if (_instance.OnCloudScriptRegisterQueuedFunctionResultEvent != null) { _instance.OnCloudScriptRegisterQueuedFunctionResultEvent((CloudScriptModels.EmptyResult)e.Result); return; } } if (type == typeof(CloudScriptModels.EmptyResult)) { if (_instance.OnCloudScriptUnregisterFunctionResultEvent != null) { _instance.OnCloudScriptUnregisterFunctionResultEvent((CloudScriptModels.EmptyResult)e.Result); return; } } @@ -3061,6 +3292,7 @@ namespace PlayFab.Events if (type == typeof(EconomyModels.DeleteInventoryItemsResponse)) { if (_instance.OnEconomyDeleteInventoryItemsResultEvent != null) { _instance.OnEconomyDeleteInventoryItemsResultEvent((EconomyModels.DeleteInventoryItemsResponse)e.Result); return; } } if (type == typeof(EconomyModels.DeleteItemResponse)) { if (_instance.OnEconomyDeleteItemResultEvent != null) { _instance.OnEconomyDeleteItemResultEvent((EconomyModels.DeleteItemResponse)e.Result); return; } } if (type == typeof(EconomyModels.ExecuteInventoryOperationsResponse)) { if (_instance.OnEconomyExecuteInventoryOperationsResultEvent != null) { _instance.OnEconomyExecuteInventoryOperationsResultEvent((EconomyModels.ExecuteInventoryOperationsResponse)e.Result); return; } } + if (type == typeof(EconomyModels.ExecuteTransferOperationsResponse)) { if (_instance.OnEconomyExecuteTransferOperationsResultEvent != null) { _instance.OnEconomyExecuteTransferOperationsResultEvent((EconomyModels.ExecuteTransferOperationsResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetCatalogConfigResponse)) { if (_instance.OnEconomyGetCatalogConfigResultEvent != null) { _instance.OnEconomyGetCatalogConfigResultEvent((EconomyModels.GetCatalogConfigResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetDraftItemResponse)) { if (_instance.OnEconomyGetDraftItemResultEvent != null) { _instance.OnEconomyGetDraftItemResultEvent((EconomyModels.GetDraftItemResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetDraftItemsResponse)) { if (_instance.OnEconomyGetDraftItemsResultEvent != null) { _instance.OnEconomyGetDraftItemsResultEvent((EconomyModels.GetDraftItemsResponse)e.Result); return; } } @@ -3068,6 +3300,7 @@ namespace PlayFab.Events if (type == typeof(EconomyModels.GetEntityItemReviewResponse)) { if (_instance.OnEconomyGetEntityItemReviewResultEvent != null) { _instance.OnEconomyGetEntityItemReviewResultEvent((EconomyModels.GetEntityItemReviewResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetInventoryCollectionIdsResponse)) { if (_instance.OnEconomyGetInventoryCollectionIdsResultEvent != null) { _instance.OnEconomyGetInventoryCollectionIdsResultEvent((EconomyModels.GetInventoryCollectionIdsResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetInventoryItemsResponse)) { if (_instance.OnEconomyGetInventoryItemsResultEvent != null) { _instance.OnEconomyGetInventoryItemsResultEvent((EconomyModels.GetInventoryItemsResponse)e.Result); return; } } + if (type == typeof(EconomyModels.GetInventoryOperationStatusResponse)) { if (_instance.OnEconomyGetInventoryOperationStatusResultEvent != null) { _instance.OnEconomyGetInventoryOperationStatusResultEvent((EconomyModels.GetInventoryOperationStatusResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetItemResponse)) { if (_instance.OnEconomyGetItemResultEvent != null) { _instance.OnEconomyGetItemResultEvent((EconomyModels.GetItemResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetItemContainersResponse)) { if (_instance.OnEconomyGetItemContainersResultEvent != null) { _instance.OnEconomyGetItemContainersResultEvent((EconomyModels.GetItemContainersResponse)e.Result); return; } } if (type == typeof(EconomyModels.GetItemModerationStateResponse)) { if (_instance.OnEconomyGetItemModerationStateResultEvent != null) { _instance.OnEconomyGetItemModerationStateResultEvent((EconomyModels.GetItemModerationStateResponse)e.Result); return; } } @@ -3100,6 +3333,11 @@ namespace PlayFab.Events #endif #if !DISABLE_PLAYFABENTITY_API + if (type == typeof(EventsModels.CreateTelemetryKeyResponse)) { if (_instance.OnEventsCreateTelemetryKeyResultEvent != null) { _instance.OnEventsCreateTelemetryKeyResultEvent((EventsModels.CreateTelemetryKeyResponse)e.Result); return; } } + if (type == typeof(EventsModels.DeleteTelemetryKeyResponse)) { if (_instance.OnEventsDeleteTelemetryKeyResultEvent != null) { _instance.OnEventsDeleteTelemetryKeyResultEvent((EventsModels.DeleteTelemetryKeyResponse)e.Result); return; } } + if (type == typeof(EventsModels.GetTelemetryKeyResponse)) { if (_instance.OnEventsGetTelemetryKeyResultEvent != null) { _instance.OnEventsGetTelemetryKeyResultEvent((EventsModels.GetTelemetryKeyResponse)e.Result); return; } } + if (type == typeof(EventsModels.ListTelemetryKeysResponse)) { if (_instance.OnEventsListTelemetryKeysResultEvent != null) { _instance.OnEventsListTelemetryKeysResultEvent((EventsModels.ListTelemetryKeysResponse)e.Result); return; } } + if (type == typeof(EventsModels.SetTelemetryKeyActiveResponse)) { if (_instance.OnEventsSetTelemetryKeyActiveResultEvent != null) { _instance.OnEventsSetTelemetryKeyActiveResultEvent((EventsModels.SetTelemetryKeyActiveResponse)e.Result); return; } } if (type == typeof(EventsModels.WriteEventsResponse)) { if (_instance.OnEventsWriteEventsResultEvent != null) { _instance.OnEventsWriteEventsResultEvent((EventsModels.WriteEventsResponse)e.Result); return; } } if (type == typeof(EventsModels.WriteEventsResponse)) { if (_instance.OnEventsWriteTelemetryEventsResultEvent != null) { _instance.OnEventsWriteTelemetryEventsResultEvent((EventsModels.WriteEventsResponse)e.Result); return; } } #endif @@ -3156,6 +3394,30 @@ namespace PlayFab.Events if (type == typeof(GroupsModels.UpdateGroupResponse)) { if (_instance.OnGroupsUpdateGroupResultEvent != null) { _instance.OnGroupsUpdateGroupResultEvent((GroupsModels.UpdateGroupResponse)e.Result); return; } } if (type == typeof(GroupsModels.UpdateGroupRoleResponse)) { if (_instance.OnGroupsUpdateRoleResultEvent != null) { _instance.OnGroupsUpdateRoleResultEvent((GroupsModels.UpdateGroupRoleResponse)e.Result); return; } } #endif +#if !DISABLE_PLAYFABENTITY_API + + if (type == typeof(ProgressionModels.EmptyResponse)) { if (_instance.OnProgressionCreateLeaderboardDefinitionResultEvent != null) { _instance.OnProgressionCreateLeaderboardDefinitionResultEvent((ProgressionModels.EmptyResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.EmptyResponse)) { if (_instance.OnProgressionCreateStatisticDefinitionResultEvent != null) { _instance.OnProgressionCreateStatisticDefinitionResultEvent((ProgressionModels.EmptyResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.EmptyResponse)) { if (_instance.OnProgressionDeleteLeaderboardDefinitionResultEvent != null) { _instance.OnProgressionDeleteLeaderboardDefinitionResultEvent((ProgressionModels.EmptyResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.EmptyResponse)) { if (_instance.OnProgressionDeleteLeaderboardEntriesResultEvent != null) { _instance.OnProgressionDeleteLeaderboardEntriesResultEvent((ProgressionModels.EmptyResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.EmptyResponse)) { if (_instance.OnProgressionDeleteStatisticDefinitionResultEvent != null) { _instance.OnProgressionDeleteStatisticDefinitionResultEvent((ProgressionModels.EmptyResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.DeleteStatisticsResponse)) { if (_instance.OnProgressionDeleteStatisticsResultEvent != null) { _instance.OnProgressionDeleteStatisticsResultEvent((ProgressionModels.DeleteStatisticsResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetEntityLeaderboardResponse)) { if (_instance.OnProgressionGetFriendLeaderboardForEntityResultEvent != null) { _instance.OnProgressionGetFriendLeaderboardForEntityResultEvent((ProgressionModels.GetEntityLeaderboardResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetEntityLeaderboardResponse)) { if (_instance.OnProgressionGetLeaderboardResultEvent != null) { _instance.OnProgressionGetLeaderboardResultEvent((ProgressionModels.GetEntityLeaderboardResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetEntityLeaderboardResponse)) { if (_instance.OnProgressionGetLeaderboardAroundEntityResultEvent != null) { _instance.OnProgressionGetLeaderboardAroundEntityResultEvent((ProgressionModels.GetEntityLeaderboardResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetLeaderboardDefinitionResponse)) { if (_instance.OnProgressionGetLeaderboardDefinitionResultEvent != null) { _instance.OnProgressionGetLeaderboardDefinitionResultEvent((ProgressionModels.GetLeaderboardDefinitionResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetEntityLeaderboardResponse)) { if (_instance.OnProgressionGetLeaderboardForEntitiesResultEvent != null) { _instance.OnProgressionGetLeaderboardForEntitiesResultEvent((ProgressionModels.GetEntityLeaderboardResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetStatisticDefinitionResponse)) { if (_instance.OnProgressionGetStatisticDefinitionResultEvent != null) { _instance.OnProgressionGetStatisticDefinitionResultEvent((ProgressionModels.GetStatisticDefinitionResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetStatisticsResponse)) { if (_instance.OnProgressionGetStatisticsResultEvent != null) { _instance.OnProgressionGetStatisticsResultEvent((ProgressionModels.GetStatisticsResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.GetStatisticsForEntitiesResponse)) { if (_instance.OnProgressionGetStatisticsForEntitiesResultEvent != null) { _instance.OnProgressionGetStatisticsForEntitiesResultEvent((ProgressionModels.GetStatisticsForEntitiesResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.IncrementLeaderboardVersionResponse)) { if (_instance.OnProgressionIncrementLeaderboardVersionResultEvent != null) { _instance.OnProgressionIncrementLeaderboardVersionResultEvent((ProgressionModels.IncrementLeaderboardVersionResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.IncrementStatisticVersionResponse)) { if (_instance.OnProgressionIncrementStatisticVersionResultEvent != null) { _instance.OnProgressionIncrementStatisticVersionResultEvent((ProgressionModels.IncrementStatisticVersionResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.ListLeaderboardDefinitionsResponse)) { if (_instance.OnProgressionListLeaderboardDefinitionsResultEvent != null) { _instance.OnProgressionListLeaderboardDefinitionsResultEvent((ProgressionModels.ListLeaderboardDefinitionsResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.ListStatisticDefinitionsResponse)) { if (_instance.OnProgressionListStatisticDefinitionsResultEvent != null) { _instance.OnProgressionListStatisticDefinitionsResultEvent((ProgressionModels.ListStatisticDefinitionsResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.EmptyResponse)) { if (_instance.OnProgressionUnlinkLeaderboardFromStatisticResultEvent != null) { _instance.OnProgressionUnlinkLeaderboardFromStatisticResultEvent((ProgressionModels.EmptyResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.EmptyResponse)) { if (_instance.OnProgressionUpdateLeaderboardEntriesResultEvent != null) { _instance.OnProgressionUpdateLeaderboardEntriesResultEvent((ProgressionModels.EmptyResponse)e.Result); return; } } + if (type == typeof(ProgressionModels.UpdateStatisticsResponse)) { if (_instance.OnProgressionUpdateStatisticsResultEvent != null) { _instance.OnProgressionUpdateStatisticsResultEvent((ProgressionModels.UpdateStatisticsResponse)e.Result); return; } } +#endif #if !DISABLE_PLAYFABENTITY_API if (type == typeof(LocalizationModels.GetLanguageListResponse)) { if (_instance.OnLocalizationGetLanguageListResultEvent != null) { _instance.OnLocalizationGetLanguageListResultEvent((LocalizationModels.GetLanguageListResponse)e.Result); return; } } @@ -3184,6 +3446,7 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerDeleteContainerImageRepositoryResultEvent != null) { _instance.OnMultiplayerDeleteContainerImageRepositoryResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.LobbyEmptyResult)) { if (_instance.OnMultiplayerDeleteLobbyResultEvent != null) { _instance.OnMultiplayerDeleteLobbyResultEvent((MultiplayerModels.LobbyEmptyResult)e.Result); return; } } if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerDeleteRemoteUserResultEvent != null) { _instance.OnMultiplayerDeleteRemoteUserResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } + if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerDeleteSecretResultEvent != null) { _instance.OnMultiplayerDeleteSecretResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.EnableMultiplayerServersForTitleResponse)) { if (_instance.OnMultiplayerEnableMultiplayerServersForTitleResultEvent != null) { _instance.OnMultiplayerEnableMultiplayerServersForTitleResultEvent((MultiplayerModels.EnableMultiplayerServersForTitleResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.FindFriendLobbiesResult)) { if (_instance.OnMultiplayerFindFriendLobbiesResultEvent != null) { _instance.OnMultiplayerFindFriendLobbiesResultEvent((MultiplayerModels.FindFriendLobbiesResult)e.Result); return; } } if (type == typeof(MultiplayerModels.FindLobbiesResult)) { if (_instance.OnMultiplayerFindLobbiesResultEvent != null) { _instance.OnMultiplayerFindLobbiesResultEvent((MultiplayerModels.FindLobbiesResult)e.Result); return; } } @@ -3208,8 +3471,10 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.LobbyEmptyResult)) { if (_instance.OnMultiplayerInviteToLobbyResultEvent != null) { _instance.OnMultiplayerInviteToLobbyResultEvent((MultiplayerModels.LobbyEmptyResult)e.Result); return; } } if (type == typeof(MultiplayerModels.JoinLobbyResult)) { if (_instance.OnMultiplayerJoinArrangedLobbyResultEvent != null) { _instance.OnMultiplayerJoinArrangedLobbyResultEvent((MultiplayerModels.JoinLobbyResult)e.Result); return; } } if (type == typeof(MultiplayerModels.JoinLobbyResult)) { if (_instance.OnMultiplayerJoinLobbyResultEvent != null) { _instance.OnMultiplayerJoinLobbyResultEvent((MultiplayerModels.JoinLobbyResult)e.Result); return; } } + if (type == typeof(MultiplayerModels.JoinLobbyAsServerResult)) { if (_instance.OnMultiplayerJoinLobbyAsServerResultEvent != null) { _instance.OnMultiplayerJoinLobbyAsServerResultEvent((MultiplayerModels.JoinLobbyAsServerResult)e.Result); return; } } if (type == typeof(MultiplayerModels.JoinMatchmakingTicketResult)) { if (_instance.OnMultiplayerJoinMatchmakingTicketResultEvent != null) { _instance.OnMultiplayerJoinMatchmakingTicketResultEvent((MultiplayerModels.JoinMatchmakingTicketResult)e.Result); return; } } if (type == typeof(MultiplayerModels.LobbyEmptyResult)) { if (_instance.OnMultiplayerLeaveLobbyResultEvent != null) { _instance.OnMultiplayerLeaveLobbyResultEvent((MultiplayerModels.LobbyEmptyResult)e.Result); return; } } + if (type == typeof(MultiplayerModels.LobbyEmptyResult)) { if (_instance.OnMultiplayerLeaveLobbyAsServerResultEvent != null) { _instance.OnMultiplayerLeaveLobbyAsServerResultEvent((MultiplayerModels.LobbyEmptyResult)e.Result); return; } } if (type == typeof(MultiplayerModels.ListMultiplayerServersResponse)) { if (_instance.OnMultiplayerListArchivedMultiplayerServersResultEvent != null) { _instance.OnMultiplayerListArchivedMultiplayerServersResultEvent((MultiplayerModels.ListMultiplayerServersResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.ListAssetSummariesResponse)) { if (_instance.OnMultiplayerListAssetSummariesResultEvent != null) { _instance.OnMultiplayerListAssetSummariesResultEvent((MultiplayerModels.ListAssetSummariesResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.ListBuildAliasesResponse)) { if (_instance.OnMultiplayerListBuildAliasesResultEvent != null) { _instance.OnMultiplayerListBuildAliasesResultEvent((MultiplayerModels.ListBuildAliasesResponse)e.Result); return; } } @@ -3222,12 +3487,14 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.ListMultiplayerServersResponse)) { if (_instance.OnMultiplayerListMultiplayerServersResultEvent != null) { _instance.OnMultiplayerListMultiplayerServersResultEvent((MultiplayerModels.ListMultiplayerServersResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.ListPartyQosServersResponse)) { if (_instance.OnMultiplayerListPartyQosServersResultEvent != null) { _instance.OnMultiplayerListPartyQosServersResultEvent((MultiplayerModels.ListPartyQosServersResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.ListQosServersForTitleResponse)) { if (_instance.OnMultiplayerListQosServersForTitleResultEvent != null) { _instance.OnMultiplayerListQosServersForTitleResultEvent((MultiplayerModels.ListQosServersForTitleResponse)e.Result); return; } } + if (type == typeof(MultiplayerModels.ListSecretSummariesResponse)) { if (_instance.OnMultiplayerListSecretSummariesResultEvent != null) { _instance.OnMultiplayerListSecretSummariesResultEvent((MultiplayerModels.ListSecretSummariesResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.ListServerBackfillTicketsForPlayerResult)) { if (_instance.OnMultiplayerListServerBackfillTicketsForPlayerResultEvent != null) { _instance.OnMultiplayerListServerBackfillTicketsForPlayerResultEvent((MultiplayerModels.ListServerBackfillTicketsForPlayerResult)e.Result); return; } } if (type == typeof(MultiplayerModels.ListTitleMultiplayerServersQuotaChangesResponse)) { if (_instance.OnMultiplayerListTitleMultiplayerServersQuotaChangesResultEvent != null) { _instance.OnMultiplayerListTitleMultiplayerServersQuotaChangesResultEvent((MultiplayerModels.ListTitleMultiplayerServersQuotaChangesResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.ListVirtualMachineSummariesResponse)) { if (_instance.OnMultiplayerListVirtualMachineSummariesResultEvent != null) { _instance.OnMultiplayerListVirtualMachineSummariesResultEvent((MultiplayerModels.ListVirtualMachineSummariesResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.RemoveMatchmakingQueueResult)) { if (_instance.OnMultiplayerRemoveMatchmakingQueueResultEvent != null) { _instance.OnMultiplayerRemoveMatchmakingQueueResultEvent((MultiplayerModels.RemoveMatchmakingQueueResult)e.Result); return; } } if (type == typeof(MultiplayerModels.LobbyEmptyResult)) { if (_instance.OnMultiplayerRemoveMemberResultEvent != null) { _instance.OnMultiplayerRemoveMemberResultEvent((MultiplayerModels.LobbyEmptyResult)e.Result); return; } } if (type == typeof(MultiplayerModels.RequestMultiplayerServerResponse)) { if (_instance.OnMultiplayerRequestMultiplayerServerResultEvent != null) { _instance.OnMultiplayerRequestMultiplayerServerResultEvent((MultiplayerModels.RequestMultiplayerServerResponse)e.Result); return; } } + if (type == typeof(MultiplayerModels.RequestPartyServiceResponse)) { if (_instance.OnMultiplayerRequestPartyServiceResultEvent != null) { _instance.OnMultiplayerRequestPartyServiceResultEvent((MultiplayerModels.RequestPartyServiceResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.RolloverContainerRegistryCredentialsResponse)) { if (_instance.OnMultiplayerRolloverContainerRegistryCredentialsResultEvent != null) { _instance.OnMultiplayerRolloverContainerRegistryCredentialsResultEvent((MultiplayerModels.RolloverContainerRegistryCredentialsResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.SetMatchmakingQueueResult)) { if (_instance.OnMultiplayerSetMatchmakingQueueResultEvent != null) { _instance.OnMultiplayerSetMatchmakingQueueResultEvent((MultiplayerModels.SetMatchmakingQueueResult)e.Result); return; } } if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerShutdownMultiplayerServerResultEvent != null) { _instance.OnMultiplayerShutdownMultiplayerServerResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } @@ -3241,7 +3508,9 @@ namespace PlayFab.Events if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerUpdateBuildRegionResultEvent != null) { _instance.OnMultiplayerUpdateBuildRegionResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerUpdateBuildRegionsResultEvent != null) { _instance.OnMultiplayerUpdateBuildRegionsResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } if (type == typeof(MultiplayerModels.LobbyEmptyResult)) { if (_instance.OnMultiplayerUpdateLobbyResultEvent != null) { _instance.OnMultiplayerUpdateLobbyResultEvent((MultiplayerModels.LobbyEmptyResult)e.Result); return; } } + if (type == typeof(MultiplayerModels.LobbyEmptyResult)) { if (_instance.OnMultiplayerUpdateLobbyAsServerResultEvent != null) { _instance.OnMultiplayerUpdateLobbyAsServerResultEvent((MultiplayerModels.LobbyEmptyResult)e.Result); return; } } if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerUploadCertificateResultEvent != null) { _instance.OnMultiplayerUploadCertificateResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } + if (type == typeof(MultiplayerModels.EmptyResponse)) { if (_instance.OnMultiplayerUploadSecretResultEvent != null) { _instance.OnMultiplayerUploadSecretResultEvent((MultiplayerModels.EmptyResponse)e.Result); return; } } #endif #if !DISABLE_PLAYFABENTITY_API @@ -3249,10 +3518,45 @@ namespace PlayFab.Events if (type == typeof(ProfilesModels.GetEntityProfileResponse)) { if (_instance.OnProfilesGetProfileResultEvent != null) { _instance.OnProfilesGetProfileResultEvent((ProfilesModels.GetEntityProfileResponse)e.Result); return; } } if (type == typeof(ProfilesModels.GetEntityProfilesResponse)) { if (_instance.OnProfilesGetProfilesResultEvent != null) { _instance.OnProfilesGetProfilesResultEvent((ProfilesModels.GetEntityProfilesResponse)e.Result); return; } } if (type == typeof(ProfilesModels.GetTitlePlayersFromMasterPlayerAccountIdsResponse)) { if (_instance.OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsResultEvent != null) { _instance.OnProfilesGetTitlePlayersFromMasterPlayerAccountIdsResultEvent((ProfilesModels.GetTitlePlayersFromMasterPlayerAccountIdsResponse)e.Result); return; } } + if (type == typeof(ProfilesModels.GetTitlePlayersFromProviderIDsResponse)) { if (_instance.OnProfilesGetTitlePlayersFromXboxLiveIDsResultEvent != null) { _instance.OnProfilesGetTitlePlayersFromXboxLiveIDsResultEvent((ProfilesModels.GetTitlePlayersFromProviderIDsResponse)e.Result); return; } } + if (type == typeof(ProfilesModels.SetDisplayNameResponse)) { if (_instance.OnProfilesSetDisplayNameResultEvent != null) { _instance.OnProfilesSetDisplayNameResultEvent((ProfilesModels.SetDisplayNameResponse)e.Result); return; } } if (type == typeof(ProfilesModels.SetGlobalPolicyResponse)) { if (_instance.OnProfilesSetGlobalPolicyResultEvent != null) { _instance.OnProfilesSetGlobalPolicyResultEvent((ProfilesModels.SetGlobalPolicyResponse)e.Result); return; } } if (type == typeof(ProfilesModels.SetProfileLanguageResponse)) { if (_instance.OnProfilesSetProfileLanguageResultEvent != null) { _instance.OnProfilesSetProfileLanguageResultEvent((ProfilesModels.SetProfileLanguageResponse)e.Result); return; } } if (type == typeof(ProfilesModels.SetEntityProfilePolicyResponse)) { if (_instance.OnProfilesSetProfilePolicyResultEvent != null) { _instance.OnProfilesSetProfilePolicyResultEvent((ProfilesModels.SetEntityProfilePolicyResponse)e.Result); return; } } #endif +#if ENABLE_PLAYFABSERVER_API + +#endif +#if !DISABLE_PLAYFABENTITY_API + + if (type == typeof(AddonModels.CreateOrUpdateAppleResponse)) { if (_instance.OnAddonCreateOrUpdateAppleResultEvent != null) { _instance.OnAddonCreateOrUpdateAppleResultEvent((AddonModels.CreateOrUpdateAppleResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdateFacebookResponse)) { if (_instance.OnAddonCreateOrUpdateFacebookResultEvent != null) { _instance.OnAddonCreateOrUpdateFacebookResultEvent((AddonModels.CreateOrUpdateFacebookResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdateFacebookInstantGamesResponse)) { if (_instance.OnAddonCreateOrUpdateFacebookInstantGamesResultEvent != null) { _instance.OnAddonCreateOrUpdateFacebookInstantGamesResultEvent((AddonModels.CreateOrUpdateFacebookInstantGamesResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdateGoogleResponse)) { if (_instance.OnAddonCreateOrUpdateGoogleResultEvent != null) { _instance.OnAddonCreateOrUpdateGoogleResultEvent((AddonModels.CreateOrUpdateGoogleResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdateKongregateResponse)) { if (_instance.OnAddonCreateOrUpdateKongregateResultEvent != null) { _instance.OnAddonCreateOrUpdateKongregateResultEvent((AddonModels.CreateOrUpdateKongregateResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdateNintendoResponse)) { if (_instance.OnAddonCreateOrUpdateNintendoResultEvent != null) { _instance.OnAddonCreateOrUpdateNintendoResultEvent((AddonModels.CreateOrUpdateNintendoResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdatePSNResponse)) { if (_instance.OnAddonCreateOrUpdatePSNResultEvent != null) { _instance.OnAddonCreateOrUpdatePSNResultEvent((AddonModels.CreateOrUpdatePSNResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdateSteamResponse)) { if (_instance.OnAddonCreateOrUpdateSteamResultEvent != null) { _instance.OnAddonCreateOrUpdateSteamResultEvent((AddonModels.CreateOrUpdateSteamResponse)e.Result); return; } } + if (type == typeof(AddonModels.CreateOrUpdateTwitchResponse)) { if (_instance.OnAddonCreateOrUpdateTwitchResultEvent != null) { _instance.OnAddonCreateOrUpdateTwitchResultEvent((AddonModels.CreateOrUpdateTwitchResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteAppleResponse)) { if (_instance.OnAddonDeleteAppleResultEvent != null) { _instance.OnAddonDeleteAppleResultEvent((AddonModels.DeleteAppleResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteFacebookResponse)) { if (_instance.OnAddonDeleteFacebookResultEvent != null) { _instance.OnAddonDeleteFacebookResultEvent((AddonModels.DeleteFacebookResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteFacebookInstantGamesResponse)) { if (_instance.OnAddonDeleteFacebookInstantGamesResultEvent != null) { _instance.OnAddonDeleteFacebookInstantGamesResultEvent((AddonModels.DeleteFacebookInstantGamesResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteGoogleResponse)) { if (_instance.OnAddonDeleteGoogleResultEvent != null) { _instance.OnAddonDeleteGoogleResultEvent((AddonModels.DeleteGoogleResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteKongregateResponse)) { if (_instance.OnAddonDeleteKongregateResultEvent != null) { _instance.OnAddonDeleteKongregateResultEvent((AddonModels.DeleteKongregateResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteNintendoResponse)) { if (_instance.OnAddonDeleteNintendoResultEvent != null) { _instance.OnAddonDeleteNintendoResultEvent((AddonModels.DeleteNintendoResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeletePSNResponse)) { if (_instance.OnAddonDeletePSNResultEvent != null) { _instance.OnAddonDeletePSNResultEvent((AddonModels.DeletePSNResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteSteamResponse)) { if (_instance.OnAddonDeleteSteamResultEvent != null) { _instance.OnAddonDeleteSteamResultEvent((AddonModels.DeleteSteamResponse)e.Result); return; } } + if (type == typeof(AddonModels.DeleteTwitchResponse)) { if (_instance.OnAddonDeleteTwitchResultEvent != null) { _instance.OnAddonDeleteTwitchResultEvent((AddonModels.DeleteTwitchResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetAppleResponse)) { if (_instance.OnAddonGetAppleResultEvent != null) { _instance.OnAddonGetAppleResultEvent((AddonModels.GetAppleResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetFacebookResponse)) { if (_instance.OnAddonGetFacebookResultEvent != null) { _instance.OnAddonGetFacebookResultEvent((AddonModels.GetFacebookResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetFacebookInstantGamesResponse)) { if (_instance.OnAddonGetFacebookInstantGamesResultEvent != null) { _instance.OnAddonGetFacebookInstantGamesResultEvent((AddonModels.GetFacebookInstantGamesResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetGoogleResponse)) { if (_instance.OnAddonGetGoogleResultEvent != null) { _instance.OnAddonGetGoogleResultEvent((AddonModels.GetGoogleResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetKongregateResponse)) { if (_instance.OnAddonGetKongregateResultEvent != null) { _instance.OnAddonGetKongregateResultEvent((AddonModels.GetKongregateResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetNintendoResponse)) { if (_instance.OnAddonGetNintendoResultEvent != null) { _instance.OnAddonGetNintendoResultEvent((AddonModels.GetNintendoResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetPSNResponse)) { if (_instance.OnAddonGetPSNResultEvent != null) { _instance.OnAddonGetPSNResultEvent((AddonModels.GetPSNResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetSteamResponse)) { if (_instance.OnAddonGetSteamResultEvent != null) { _instance.OnAddonGetSteamResultEvent((AddonModels.GetSteamResponse)e.Result); return; } } + if (type == typeof(AddonModels.GetTwitchResponse)) { if (_instance.OnAddonGetTwitchResultEvent != null) { _instance.OnAddonGetTwitchResultEvent((AddonModels.GetTwitchResponse)e.Result); return; } } +#endif } } diff --git a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabSettings.cs b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabSettings.cs index e01c84651..fcb282ed2 100644 --- a/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabSettings.cs +++ b/Assets/ThirdParty/PlayFabSDK/Shared/Public/PlayFabSettings.cs @@ -29,7 +29,29 @@ namespace PlayFab public static class PlayFabSettings { - static PlayFabSettings() { } + static PlayFabSettings() + { +#if UNITY_GAMECORE || UNITY_GAMECORE_XBOXONE || UNITY_GAMECORE_SCARLETT || MICROSOFT_GAME_CORE + PlatformString = "GDK"; +#else + switch (Application.platform) + { + case RuntimePlatform.WindowsEditor: + case RuntimePlatform.WindowsPlayer: + case RuntimePlatform.WindowsServer: + PlatformString = "Windows"; + break; + + case RuntimePlatform.IPhonePlayer: + PlatformString = "iOS"; + break; + + default: + PlatformString = Application.platform.ToString(); + break; + } +#endif + } private static PlayFabSharedSettings _playFabShared = null; private static PlayFabSharedSettings PlayFabSharedPrivate { get { if (_playFabShared == null) _playFabShared = GetSharedSettingsObjectPrivate(); return _playFabShared; } } @@ -43,9 +65,11 @@ namespace PlayFab /// public static readonly PlayFabAuthenticationContext staticPlayer = new PlayFabAuthenticationContext(); - public const string SdkVersion = "2.162.230320"; + public const string SdkVersion = "2.206.241122"; public const string BuildIdentifier = "adobuild_unitysdk_167"; - public const string VersionString = "UnitySDK-2.162.230320"; + public const string VersionString = "UnitySDK-2.206.241122"; + public static string EngineVersion = UnityEngine.Application.unityVersion; + public static string PlatformString; public const string DefaultPlayFabApiUrl = "playfabapi.com"; @@ -142,7 +166,7 @@ namespace PlayFab _cachedStringBuilder.Clear(); return _cachedStringBuilder; } - + public static string GetFullUrl(string apiCall, Dictionary getParams, PlayFabApiSettings apiSettings = null) { StringBuilder sb = AcquireStringBuilder(); @@ -198,9 +222,9 @@ namespace PlayFab sb.Append(baseUrl).Append(apiCall); + bool firstParam = true; if (getParams != null) { - bool firstParam = true; foreach (var paramPair in getParams) { if (firstParam) @@ -216,6 +240,10 @@ namespace PlayFab } } + sb.Append(firstParam ? "?" : "&"); + sb.Append("engine=").Append(EngineVersion); + sb.Append("&platform=").Append(PlatformString); + return sb.ToString(); } }