From 6e3e60cae11d13ae54897e39040a0bde182925c6 Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Thu, 3 Jun 2021 23:44:40 -0400 Subject: [PATCH] Add tvOS target Adds TVVLCKit Adds xcassets for tvOS adds initial tvOS boilerplate - will not run currently --- Cartfile | 3 +- .../AccentColor.colorset/Contents.json | 20 ++ .../Content.imageset/1280x768-back.png | Bin 0 -> 6162 bytes .../Content.imageset/Contents.json | 12 + .../Back.imagestacklayer/Contents.json | 6 + .../Contents.json | 14 + .../Content.imageset/512.png | Bin 0 -> 80436 bytes .../Content.imageset/Contents.json | 12 + .../Front.imagestacklayer/Contents.json | 6 + .../Content.imageset/400x240-back-1.png | Bin 0 -> 2429 bytes .../Content.imageset/400x240-back.png | Bin 0 -> 2429 bytes .../Content.imageset/Contents.json | 18 ++ .../Back.imagestacklayer/Contents.json | 6 + .../App Icon.imagestack/Contents.json | 14 + .../Content.imageset/216-1.png | Bin 0 -> 20432 bytes .../Content.imageset/216.png | Bin 0 -> 20432 bytes .../Content.imageset/Contents.json | 18 ++ .../Front.imagestacklayer/Contents.json | 6 + .../Contents.json | 32 ++ .../Contents.json | 24 ++ .../Top Shelf Image.imageset/Contents.json | 24 ++ .../Assets.xcassets/Contents.json | 6 + JellyfinPlayer tvOS/ContentView.swift | 63 ++++ JellyfinPlayer tvOS/Info.plist | 32 ++ .../.xccurrentversion | 8 + .../JellyfinPlayer_tvOS.xcdatamodel/contents | 9 + .../JellyfinPlayer_tvOSApp.swift | 20 ++ JellyfinPlayer tvOS/Persistence.swift | 55 ++++ .../Preview Assets.xcassets/Contents.json | 6 + JellyfinPlayer.xcodeproj/project.pbxproj | 296 +++++++++++++++++- .../xcshareddata/swiftpm/Package.resolved | 6 +- .../AccentColor.colorset/Contents.json | 20 +- JellyfinPlayer/JellyfinPlayerApp.swift | 22 -- .../{Extensions => Views}/LoadingView.swift | 0 .../Model.xcdatamodeld/.xccurrentversion | 0 .../JellyfinPlayer.xcdatamodel/contents | 0 .../Resources/bitrates.json | 0 Shared/Typings/Typings.swift | 30 ++ .../.xccurrentversion | 5 + .../jellyfin_tvos.xcdatamodel/contents | 9 + 40 files changed, 768 insertions(+), 34 deletions(-) create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/1280x768-back.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/512.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/400x240-back-1.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/400x240-back.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/216-1.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/216.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Contents.json create mode 100644 JellyfinPlayer tvOS/ContentView.swift create mode 100644 JellyfinPlayer tvOS/Info.plist create mode 100644 JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion create mode 100644 JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents create mode 100644 JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift create mode 100644 JellyfinPlayer tvOS/Persistence.swift create mode 100644 JellyfinPlayer tvOS/Preview Content/Preview Assets.xcassets/Contents.json rename JellyfinPlayer/{Extensions => Views}/LoadingView.swift (100%) rename {JellyfinPlayer => Shared}/Resources/Model.xcdatamodeld/.xccurrentversion (100%) rename {JellyfinPlayer => Shared}/Resources/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents (100%) rename {JellyfinPlayer => Shared}/Resources/bitrates.json (100%) create mode 100644 Shared/Typings/Typings.swift create mode 100644 jellyfin-tvos/jellyfin_tvos.xcdatamodeld/.xccurrentversion create mode 100644 jellyfin-tvos/jellyfin_tvos.xcdatamodeld/jellyfin_tvos.xcdatamodel/contents diff --git a/Cartfile b/Cartfile index c1c758fb..d949255d 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1,2 @@ -binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/MobileVLCKit.json" ~> 3.3.0 \ No newline at end of file +binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/MobileVLCKit.json" ~> 3.3.0 +binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/TVVLCKit.json" ~> 3.3.0 \ No newline at end of file diff --git a/JellyfinPlayer tvOS/Assets.xcassets/AccentColor.colorset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..a21e4dca --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.765", + "green" : "0.361", + "red" : "0.667" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/1280x768-back.png b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/1280x768-back.png new file mode 100644 index 0000000000000000000000000000000000000000..5e44064e457e91a9e21ff5f0ae9bc7c49a5733a4 GIT binary patch literal 6162 zcmeHL%ZnUE7_T+Dnk9Qs5P}dWdj%D&e$MoZOg5XDH8WtZ%VyB^5ZLPO>X~MzyV~yF znc2M(A@l-N&!Lx|gU4SV-24U}=d<=l1w!(M_^*t=+Z+Pw@3^~P?tAaK z0Z(Kaa-YfLBm*=;mp8{54Gvj}eb$T9hVMJ2H3QFn5{#CIk-OJ=cQzKhHKcx7X0D=)Mk9G-$UN^U zn&UWvL)Qr)NO7E&bWGA>W6scGMUcl?8S@kiM(XpUvLS(_Qx%eIL7NscGl9XBG0hZB zR)tD)py!UnM_ElQdOtkY^pAe0=( zp=R1B(9Bzzul-919z{wYuf# zx)l*SV3b%<%^|+V9AaClQ}+#K8mvBNdq0n1?$E($Rv}dgjMUVqU!#;5zNM0y9ht

i0na@ig3XQ7-#g9bZqB2401d_7 z^=r7Z-841FG>I;2BJe>BP`4cy;N|1lRJy@Fp4A31p2Vk112HWcQXt}ih0^SE{1h`U zr_hvk)Mr3?MwCop1&_)R&DmBDT(U$QD$f$Xpu@9;UoJ-eSK()-4f-_gG03xuB-Bwv zMw&WCdD3T-wo}<_4u_N|s*79QlQQuS6{hv_iKb+e$Z)cb;o!A_)S|!ucP}{ zAH90%(NCX!@#eRqwV#Jy{`ev+1;0GJcS$S>pQ!hteBZml5HuHcnrsvxMQN0kYx99b;~)k0bA398*vwK1%=%+=|jIyY5E k#Om-|-4px=Hz>cO$KS82pQaD*z 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 A=l}o! literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..dc3e9968 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "512.png", + "idiom" : "tv" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/400x240-back-1.png b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/400x240-back-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4036a934011476ac48dc7f8d60d316d902f6c93b GIT binary patch literal 2429 zcmeHJJ&)r=81^1I0Vh_X0r6FgybVY@{va?&~gr4vU#e9@xq58`=->N8Kq56&+8ByNh<7EH5;5W_>2K4-d z`b^z@9qrTs5Tv{!s7@zY8PuUV=M7*imvt4*A=OE!?n#5_I66cfQE=pG2BwDLp_Z?i zp3`#eZDbjisT-DVy4W-W*9uG2(5s>%ahpUr04%+^FP(oNs@ zC5L5UK;ZH$t4NKra%;)Z5mXqv9jWz{ivvr_R6!f#QA{piVZm5DNElC*IZV|(4 zwXtmx7dy7y#RLZZhAO&8O3hf zF)=6km3woJ!p ztBBEHD2kLor6egCaXrsQD*9VZM@&Q!2?jB@FRu4Hox?&5lL>5;N7t{Rey`)1zUN^} zGiBj}3~+ZpDIv>e%~iU=KWs*m1kLL+AXHw9P^GdSI8&SDGlAQjF__b=}KNa7EmX1j_;?QSxRl1|gjva?&~gr4vU#e9@xq58`=->N8Kq56&+8ByNh<7EH5;5W_>2K4-d z`b^z@9qrTs5Tv{!s7@zY8PuUV=M7*imvt4*A=OE!?n#5_I66cfQE=pG2BwDLp_Z?i zp3`#eZDbjisT-DVy4W-W*9uG2(5s>%ahpUr04%+^FP(oNs@ zC5L5UK;ZH$t4NKra%;)Z5mXqv9jWz{ivvr_R6!f#QA{piVZm5DNElC*IZV|(4 zwXtmx7dy7y#RLZZhAO&8O3hf zF)=6km3woJ!p ztBBEHD2kLor6egCaXrsQD*9VZM@&Q!2?jB@FRu4Hox?&5lL>5;N7t{Rey`)1zUN^} zGiBj}3~+ZpDIv>e%~iU=KWs*m1kLL+AXHw9P^GdSI8&SDGlAQjF__b=}KNa7EmX1j_;?QSxRl1|gj6)3II;X08eqGgFH9tP9DPW6@IP3S zvaMD+PF>lmubk9Elm(yiXa~Owk!@t`qsFgj$5{QPxOG>rhJv-dl&x((H|vWa1TP{f zqSm6l9iJ3m0@ZSzx;kzl+mLrl-v~D?M~*hTd=cH| z;HqFD+kBBlvecF6Q<8n`d51Snac=~_!p==$`+sam{|~ac$unE(+}E=)>3-Jw(9ORe zy(e*GEat>lN3n5ga#X9s3Jp}@+?JK_0RjRa%b5q@a;z$4i{3j$4GV#&dusK8sY`-~TiE<4qf)8}AYAvhUI48}CX5 zz%M{0pfOI|44~FlCrG3wo6sG8*?9*79Zv#V9-$BztkQzlOzQ}&S8CH~aC7w9W!>p6 zCp;O?XWO|E1zfyd11<(8f({xXK|EYv>B2(akG(hB_H_ZAK5laUeISCs{wDX4vubbn z>Jq(mM3Y(@HQ7FcD;>yo;W1*PN0nqCH__d-VqrMb6fC1e7Ngu>(J3n;sdf#HjMzAO zbp%kf$sNd~U_~Bl$~QEo6^JbA+vc^IeJXvwXC*-#0TnN0+BoHwd(v~XUDw@EfyqbE z=kUr`JpcO)6L?+X{OjXDygIz%MWV5s6@F@BSM2*W#;vooao)~Y0@LZ`4{*_SlJn`# zX2XT-^^4@kBSz%WI23VFbujS`SJo;uO8Y@PZ%b!YOyKIs=h>{Vu8~@LTb*B?RSR~) zw`s;4q$CnAi7^kyC+SE^I$vgfT%s7>&l6jgnK|Mb9H2T zt~~P8fyGyU=eI97^6Q@7U(B>68tf$i@?}Mb?AUcf))aXDv_<3(Fnl8x~tTHYnQ4prUo{f^?wOJ44i? z%9)<~7bJmROVpVrmNusp&be-nFDb`47o-BFn;Hrn6|Ur#OMK=wetSQ=I*{noP|f%9 zoW5sX7Kyz)Y)E2Bio@N<91N?ClH;eAhB%<${z!_(gaZGlrE1ewAFyR#U@YQO#em5v zkdJqo+@7x?CbS<7L-o(%^rC+;NV)w@0Ja?}>TFb6614CreZj;Z%yGp?9yRnUJ_nqj zTV)6=B)4)&3Y;I9S@ItaXtp~n*$?HtTrU5Vc-#@-9gYM~i+BRI$hPQ;Au__7s`y!qVPIlfhJi(!w%5Ok})Uq183Qb_IN4X+#;g z7L4-9M&Uy4P|gmSsbTMda4Yjh&J4ed)c^GODY=nMkNew347$?`1H`#T9t|{c#C{pR zdSnVgDXqx}LJM{aX)t*WQCs#`CF5mB=kvSh(ykM$p7F?D6KKEFX<(mY3KTINnW^TP zmGr71W~w6$Ex1@7IS?l9zK`WLB6f{2*t8}OMzTSHDy}Rl2=YkhJ%yN?U&s;n1=A-~ zu_AQT-wm=vY^ds_=L~cmXt?u1?B4h=^T;!K9>#T>Gm1nkua`pmDi~urxNa8ULU}t2 z-nA*AR1*{El-PI=Z(U&Oh+oiiP}Q9q9MgzVt^}rmDx7@t)AS-vP3mVY?QQoLp@|F! zypNHt`i$4hEoBTQ6%;M91dcZH^BtT5_cTlRCY+lpxQTfQ8sVYHMsPSiE)8QIZQCZD zO3yTB1&zcsI^D+wZ`wL3*c@CkPq4>7u0FE_UFYpv3<;#D#vW2_Iy&&17^W4d~~@Rjv`1$;Mgiy)RU`kfu@t?3ps04_7W<-Kp=G*n3}bvivuk!s)r@i7bj@3>1zT z?P@YeEH|bhrOLb!y}xQvz9A}jCZNCnIB~$(T+ry9j^f5R~B{rlRY42KNRPz8Jh{pv$z{QVx;dz%hxm3I+K zL39JH4Rsn}{@0G(SbUD0(9(){g=fbvi7CSGC0VqTIPpGFPlNHS{?e6v&fet#=x|ltpL97*p&$-jcN^W`y(mr}5GGX!91qcx zP)Cf$ICC?4hR1yEp*O(0R%15j2`$}+>pwPc6Wnj;0)haT2*=v%5cjM&r)}kOv&b2^ zZZiVU5^c73Q(A-1F`n8TY{r{a#DuekiZx*o6iML|Y6I_h4$nZ&V20(nYvC*IX<;1y zOaF%V5W9&X3uABg63pgA5s_>W1`@hb!iq`#9IGwqQ5vTD+xt>ReNjz1Yh7?%C1U{_ z-`X(Az?6Z}Oh}L=Xgr?uok09p18tig^dFJ?W&VU%hb@+SWv6~Bu&5)`KVMweZI^>} z8+&VRV9*iWTY4HpcUGzNjvmX6p6HU_e}i*`bRQX8sMu!g{Wu1yg8AK_$z3(lJ>oc*3-!d?(he*)B+shV$&u!{H6+&P%65O^Yt-=E_ctjW{ltLZKqO|2f6Ya=C5j(LXgv0T+eC;kGV)$W4uz~- zL++o3e~t;lr1pJkF{pIKM+v!Z8k2!kBdjM`q0B^magSgsAbmb-FBPmMXoOR(i}>6g zRju_EKuxOp?E*f@1?Vz8K|Ka1P`_n00v3xiD*ZJB6QkfbxVyWjc zDxyeRc*CC^kNS)d%?$&TLotpuwW?^fu|ESE^AbatLe1a=IA9o zVxu}x2fG+2>*hOaBD(Lvek0^a;Q2D$@?g$YUq-$|=G%fuby@*N9NYb%paM2+4scGX z3dZtji?QvjQ*CO&@uj6}{INQ6nz)U(P^f_*Q&c zDq*APy&ZPt0~wmj0GkXQxb)*_oymCFnWwS_;LB)m5VwVP7Wq<*P6Jx8=Sh3^o+6U6 z;@)?x8=IFFs>U`JbLj`dK1WF_n`!j~m!6%y{^9h$#IradcxBe+jkn)MR9N$KNZRHMx;&bPnW4 z${;yiu3wiZCgrPf3=-*P7kLmWso6kgbpc8|d#VB)cCg!d@U;3X z#Q}s5^_&FSar@7Lq4d@_6G>aDj=hWaJ8Wio(ffO5(|sIyMEbk{pY&`m1CyfH^YS1gBLC4XXJ26XS06`vK3;ai^~rHu6L4J z+IuIMfIkd(@nTT1`cdL$y!8{)fw{2H`F;QdCg7@7>~?%p`(A1_ZN@c$W1W@C`-9#& z!Z4Aw348^_$lDRnlv@GTk}x(=&&06m=Ks$xVg!erOX`V)KMjp+{cGan!~CW!6Y5jm zX&Y1c4%7kl--U2ydOoizH1c>I{ibX!??LmX^IMMt-t~8DwP3|s!KasV(TV-2tV+Rf{`@vfji#}Sj_+v{#J@+1-DR@=noroMD zA8Hd8yoHc!jDh0Ws~DOq5@N6De~;6EclR}C+B@8?iq&z6ao#+uZ57O2{n%M|AVpek zkj92<=3iJYBNU%gsj5j2K0E#XW!}Hq@>6>S?2+QlF=$ZdqA%7d>8gKvt(s9zDFm7u z&`gex3FE84_@8?0C2IojcNro#n(THALac1^Q#=yLZs=2Azls$hS7lQ$eaDky`7);j z`SgLLzyXDp!?;NJU>w*2%OV>HJNkbeR4JVCvIl&)?{Iftisa1^SHh0$A`!oIT5l22UAYHPdF}G>@@=c`Way8W=x4)wE)Vkd zWwM(OARZ~)les-?K)9b?zX_H}j1Jpavy8Et9F~aXJ#{xg?j$ou!;{$<%%T-6!>H6U z8aAku0*j%M`+9#*jR{pmXz=DJ{u^-oh%q_!fec24kOnJjD|Jqp!_j z87L;`$tY$+JuX#Nxw?xxq5SbZ!^0BN-}Q0wUw6Htd8lNHq;x6`*NBVCtp$h(Sk2 z+ND$DB<%RPIsF=s9ajPCzvQgK;#lVCpy;j70A)UQOeF~fjR6KsZrBKCNOA;i?P=R1 z<>=rbe27(RnbaQ+g3@Rxh4JGNuw_TM_u#K!#7-mPp9XZKxCH+mDJN)8%u5@SgOC&@ z#~S~+5MfbRCc)XsR*g6mAdWQtEfx!H1?_#@Wo1O%;omS;mmEVyCHU4AEBaI-HShZhe zaAOg1pjAcnFGl2#6U>a-42!fxw8||}ckZSY5aq3NSg&y*$Am=1##Z|NxX5X(1)6DK z0=fy+l(}NfF+|7}S38&HOk}o-;|U-}6COH0+XRyg{3F)uv#Ku8f)KG;X%A^4M?t|Q ziP%`jO$rs!W|P`Rzp&yVSJ|~ zV{Q=euWYB#eo|=foAr~!p6ivf9*YH1?sWWCs{s(`v!bCfTvyfVQNbeabbN~U9e8n! z1;l*lt4znW`#9pYu;4*>QB73*lef?z(j(}vBkk3DP%OHCAJ^Bph@p>dJ~`f5o&Zq=s$3rI>Dm#8({y*m_6i1r^VDI+Wbj`JNe54+m3yb#MRo{Pz8&@ za-s~w5h3p}8QAj5E+#*%8f4`Wrjf1K9;_({?aj*srPBgMvAxraf9@Bt$t>}ITJ*-= zjm0vOS*mDffeIG$H5DXM1DM=UAv3?EVmIiVZ+B&f(_d>AKaX`+Rs1X~G~fA}Z1vtf?8S?Ex9C5O+VE-{YZ_yDe&Z(PlyWra$|;-&y%6y_Qk<%F^t_DjG)lyd@6?GmYL=Y3%}qLtL4rdbVZh}b=<8*LJa$G51K<&1w7QFx80-KY0y zKsH&9cNxUaeJ^xk-d)>bq!+1av0Ek^23gn?tuo|+dYOawc=r6ooQ1r_L6;vQzP=xr z2JvE0|p%Ia7D(VBh2sDDAumk~-Nt8a4YBxh|Hl^6k4b6vCE4iiR z7_+Gi?`m>GbkY}_7AE#qyDOM@!Qjy~IH|PSc$Cu=j$xRWfj$K*$D4paayc}9{4er& zI*V|Ey#UpYhzq%ZmR%O^Ppb8nLcY|G_4=eazAu~x=XMb1t0tN;uxrTFQ#ZtUFMZ4% zJ2Xemqlp$#b`}1MXAZU}_D@HTSv*?3G zFC4@!XWf75NLupo^{?MuT`%ciK~lTfL+7pttp*QDv!f|FB-T8$67nUNEbp{1OeQ&z`&>XmDexsy}j1p9k?1+wixVK%HC}P z_|~Ozi4F5-neN;DK~CDtL0Wo{b4JOUGz+el}BaxRyNv9P$HT-ShRumE3D& zWr= zi@SCbDN=-Dz7c!cNYGAjdOE2DZ0b{PMwL80_o+|*iNw77Dc*OgfUb-SRGnzGpkZHb zd!I7$ENE{DFSlErS@V3tl$~t$AJ(9Ud5y(evY0s2PLHcHU!sFPZr=_3rJ(`blv11P z2%s>147DF>2ckD9=z6}g?RWjl<~NEBfaNkousA{=W_+~)Ts$wXJ2mAA#pT|YChJCK z@2@-W^*z>d_-%YXCiE2~wNTgEd%8nzynwayP*+I-25=XV5q=p#pzl(Zp*j)malEw9 zIof!QBlF2ox(c8h&nKGCrr$;a^x7=bMR5qCc}A&C%APpG4>lv?*4S{C8mI}wzOH3U z6nKmT*SoMgqKfj0AN&P+lX|%ceL6CzRPki&ho`@Z7qve!F6W+{jt?R!rtxYJ&dw2pM+1U;sO0xK%anym2`tJ-}; zv$JB1-1Xf(Z@k0b(Uq^+gf4gs0ZK@_&KGvN6)*aBf0jftXO|trKUi+0b~6oa?&cfw zjpH*GrXaRFQ`4ee;I_1OoaODJNb+IvbbU5{Ch)Po4ZS^#?*IN(z9Av8u+FI5=n65B zdKs~LmRfyQ^rxYFxcon!QNou`J03YlbZgCT-BSWpTWI1NO7|yYc;FHF!+B04h()FM zyFinDD7owVE$82tR&Ld+`hrw<^W)Nk2$-kpQ4?7;X~;Z{hbC=!#^_>knMh2!uEfO` zcS3Q2j-Btg zuoL0Mmjz+8$GFgeW#w#~Z+yPwzuSSULPeVQN?T7YT7oXYC~EpOjWxJ{Gc0aS3H4B` zkHHsrpZ7+xCUe|=6-Q*PxwxS&eW8N9|6Ru^{xL~3Y2oBT>s&PTzPNeHl9bHKwC%Yc zr@`UXYG<6rq1u%dK5`sSZ$yR@D}&z+_bx=4ukyQFoatkn-l+)Nj~QjVaHyw1#G<>i zyM6J&I)5iB`?hPUi;L-&pFn!$eI_U^9j-#+uEa0>*-RD7W3MUn4x56zIA4}+?SPKM zllMIUYwg)Ci`h075^A{Tlzn4s;^ghWu?)OB%}Ekl$Y)>RZdHMO72kFWqz^K~Hw!c8 zvAFf~K+F!VNCT4hKSung2k?SR8zP09FLCF-VC4Q^6%^LKVYo0A*Ip}OZx3M3)pa*3 zv~YC4@0QB)YLoiH#~1Cq1&^+}B!Wp+9z%XYc|P3Nj%rSid%m;UC4IaUwgjEvi*~&d>7S4r6?Sd9d0y68O$F z#b?1yJtdS-OGnX#r_tl>5(ChNK6$}U8=pg8I+lx|VO(b#!d@8a2v#tpJKdmwG{lmc zhuDLyXL(?D(ul(JY8C;+6M53qDv~5DGLh;1ChjA|$COGM0(yZ)7_(BX}YQ)ZtMUpGf z9>xfxu6sVQy1Nj^4*>t zx99aeA&WNxdLQBlC)W(ap$h~4ZuDjo-=w>U|3>-!@6LQl>RXu`HEK2%iqoteqrTtC z5D#Di9~Ywwq9}@RneyR|3-y9aZ-3< zIK8%CRK_mYgc+2D`j~BjZf!0%1cgYki$@Li7#(4p8T2#EWPWp#CBYKT-+V^-}rifCW>u};HmV(L%mUz;q?D@fz09Y5#&y!AU zev;0Po6%g?$VT#3RHOaNcMvKt!cg!XJdB2+>HiR>JNX#Q3n-z(nRwVB#BtS)Pm)zr{B@wF%}KPqTrPymVBgmqLPl!LACi z6;ifPLT(=>o_W)Bju=yxPU_ElB;lP4y#S3(8U7d}Bg6)Bh6XI0on=9=#D<-ZR3Ajn zg3EW+vy-AioXTn}9gF(J<#Vs-t?9QH=hYLliNZepO#M*Ir4$sOI~T4F#y6nj^H&qu zjYa5ccKM^A)on7Wr)1KRyv$UjA_!fSS#W0 zOdT57^7g6-IjcN}1MXZ7#6KSh77-iF z6wk-Ma!;e2qTVX3r-2zXcYs&3hMAWU>Y|KWiS-%_KN0S~_TE!Y8yaa&wT!VC9w9NZ zzFU~>u@c6db&k&K%hYc8tk74XnfYRL9sRC$wka`B-Qk~GyZE(+Fs3qT-BB>;J-FSt0TcsCk=23N0*K1B=No#XgqfkO37tG;<)Bhg4(9_Z%j z*3Mi@?34DM^J>2fEiNvn2ND;QZLI^w*bpaAu@|4A9KmSptlWJFA(^nO5m~Mp=(_QV zH5Fe?yrz~WkPF(-P7A_&?{1io>2dU4;jpOlDl)Wj=pUmO2dZCsXo0($t+S~ah84C( zTef6L(cm`-qRx4b8r|Aei1?IYw7}`xsj$Q4&ZLVC2T9A}?e)IIw-1ese9G*- zw=>$BPyltqVg8=bu?@fjXRN0pc|I>{bZl9Y|4hTaH{}pk)%e*_B{|I8?wr;=ipuWu zL&&h(r+&=|dMQJ}F-K~9QE_Q~=E5l)^4{)J?S#UXsG_Pf%t?gKgneC=D$`k(jg`df zQyhNnP1Zm|S)7r+SB~$l_Z52UPj9(F!Zd@lc)`H+J0?|KLTuCB;CS~4Yri!3Ts}>I zIIW|_`pLWr{c(?go9fZI$vDm=9hJ0b!EIY-T*N%V{g{@i(b}pu`G9V@wsDjz(igC=IFFK<@M8ugrx4lRl-a(PsE;$ zZGAU05Dvra!*LsYS{NGx0*e;K`glER9;!FuxXSyF+!~FTB^(RGL6FLZi7TvL3g;eR#)2IJ(YhW}hIUsgJ_!YSXZKi_i6BP8db-#YdVJFGSl1QwC*{*R+F9 z1s(<)6OCY@kfeqobE~!!4@?Rwkjl?8!9HOT33>n7UVc@y_+>OSZG>&~GY)ozLCMmo zFMw!7wL=9n`f!7dA~SN#c+#fgH7Mg2c!sSBGBHy^%Tnm9)k5KEfRXLB3v1p^H(Oqr z=y`CF8061Hzt+C{D-731lV(xnOhZ!{eQBbYYQ^N8RlPx+DwU~(7&IvSWtAo~R1Lzvx5sB=3QN#e~{N_3&`0bI$G`areaegDni(S>EOzh?X zgMPuGO06Ji33Djtaf@Wlsrg!!;b@R`q6kV3RH_J#_$xpZ+xgOJwnsl=-PeO?6oT6{ zitA}}n_y+~Hvmnef!%>%tT#2!e|y9~LX}~)kNqqa)_Y{w)~r}Pl=sElEA!X3&i7xP z$4>zdTg=AsnxfYRbjd%l$kG7%9mY+VOX zJhr=it^*2(Qv7HMl2Ufx;4zFF*c+y3vjdz$Pj&qFoWpYluM)C*m(n=^@OAwhN0l|u zezb*b2p!Hvw|#qvO~Fa#uQb(8?1-{-w;!O4mb>!5lDY*-pDAb;h^k2=P)?I6inag) zb*>AmO(-AgWDPhleBlYQ$zA^n*e(ZDIikjxcKJvdmjJ_;4Z^i&fc|8=Da}M%ja+SD zP!l5ohwO?CtuF6r#b2OPXBTUsPTNb5iTA=G%w`TawodKRP+14huyacvzYhh<@>NIT1;l-b`g@}z z`d0aYAv@@ToU!&y<~szd(5Xw_ken)2y5d5XE-uSXx1aOPp)Pw{Jtt-9rS~D4dj-)= zZjyp;Q&Z|XYkHOr9EPtro$sE+K1*l(0eh9OHi@*hSiZP2E!)mYtHGI8mz)if;%*j7 z$_GBI1bES~wE4aoxh&7KHcj~}9$RG= zlvJgJgm;`9vJ1TK=39dEd}j->Qe)xMh%rYz6~-u+`;9x8+ zej3jrU{%Cf+73%7x5!`y=Cd!tK1Y=C-hbe2U6*sK zp$>NSLyVxl4=D-fam#n7R&#}mAbyu{FFP_7dag%SVS#Vvd)I0gxlvZ)4hA{iv|OZg zkEY$(2rq_R4USu!O|wW2DQh3Bwgp?|gkK+-6fg=w%1GV=fKU3Pb1iieA*(;*CPyen zOG)s(zVP!dX1xXzZqy5V4Ku)b+V~E48(SdNgLE4#bnzLmHdrK_Ul8)%tic0w-tVN@ z*z6{T%&aCzEWt*1qBpG-9(-HegC2 z7Qn@MY;x%z8J$mZ|1unc_In(fFlr$CZSz-lH`w)uTFCQyNzPnJFX!NqC**wIK>DjR zW5Zp%@}h<`P>-teO%SV26URZ1!Pm{qT!jfvLpLKRNJ(u&MFz)bBAHm;`%=ZamsWo` zKMY#MGW#PkmWgdBVRH62U!<+(54Ljxl++Q$L4DTZJJkRLqGfqGD#F6@jT?ys4w*7;PhfPi58u2mn6NG zb$rzqt;F`?1^!Azf-!E=G#;|33KlVyY)|^ezvwGS6x*+C*(%PTB0UsfYpC z>YP@qvX@6JM%!l-gGq6QN*w378vM?fNGY%2FH)juKC~{+?7I_vw?IV$r@b3Agk;OKi5jO`TL z#aNzTucD_W7$7P(erWeh*g6UwCNiP5gEiRTq7Ui_2KSJ9iVtO0|B1v@>-o;a+Ef6lb zwj^0gYr;41q4z=PmJK8+?Y_wFnUt~bVj}ZtWo#jvj~8j2d7r0@+cDeoZNr}K8FIZ` z`$yHGVM(g9Tu_ctK-u{R3hJW&h+==}o>hbDt9GTI*TL@Kk4L?~oL{e4ArEdfoL^1^ zbIJ=OP91-iCw*(t@C<6ps6GKe&KnuoHqW|cUSCotusj}EPkmL4^}ajI&;8V-rwz>< z7D-j#My2kig4*dzMt{SmRLSg4(Y=6=-yXSm8~cQD+1c_{4q2xZ<-|zYU7eg5H_m@ft`wN70vJKE&D?%dkHe5`s12z-t!u|#@G=_8gs>X zjfB%t>#xEgefe@A=ff6jgCG2cK<`Thqf=+EK$qV4J(YA+csc$x^FKfr$i?CzSjBWC zLj9bZBS;$ALnj`3llcA`)@ih1E{WZ$n#DeNlsm!d2pVHDq}a)C;jSuUrZ01)hhL&DCaKyrrv2R`e0DwtWeuw08S}@>m`@ zJ!;DJ195(!#oCTO2GZ;O;@x-tfO3&uF_uhzG}hbVM^Ty>bf#O=8jMh>GBm?-8WaOg z?uS!<3gRJu0>ld6b*;F|pFZxiW{C*yv$TAs)P!)#_kw+u_Hf_?r4dmKiG2Gwxqyl1 zAF1DVDz;ES2T3l{cK0DbYU6Jl;Xcd9-h{q|tS=|5L&c6SzM0%1_2V1s-+gC zGD2Pe@^6YPU0(?8T8AiR(@VEoM9pt5!M1SJ{UQEo^@9k~+M94cbt9zSVUm068&Q48 z>liyHrgYgI+l-R-l+U8HS%^1NsUj%H-{2{x;j zf%ey5W4e~45!4GR6MKyB)&-Kqh)QOrii9FkzuG-CMr9*^s7+b(>fh@==MxO=K()Q99zB;nP=e0<1PE?$To9FJA>0S^icaAdey*`8CMgw7-JaLLX$8N`-Vu-;v>L&cJc^ z>`{6wfQ@@lb9+zdiSLRHccVRCu~YjUv;^ITP1^F{Ps zCD?3IzQ)BNlN%d-6FRYX@X4$2>W@ousjboJvHo7nM_Om%{-Vcjn%7?)VwtT7oloet z>7NRN0Hrej3=XqUq$rF>^}8`*exQ9yl>gh_z}|U6?;z62l#l7k>hXb|;W3^lIY&jZ;Kb5O!|s_toO^g;%h* z>Vp=dj`XvWT4Cn-eG!0DP5ut6k-t1UY)t_jy!i1IGETI;YxRkYcC{384L|lNFgR?L z!+r*r{Ddfc`&#m1>zs{{hy?wnzwS=GOFx8V-b{A;&|N84$yalO9nq%?A#?i~$dGzK zJ-7?EN-b%~%nY2}#n9i(M4l!(Ga=->|TA90qH$26MlU&5XXh04exTEeTh5986s%Tpo@_M=9vp#s?Bu2SYzpBC^> zcjHG!e5lV|RHO4|u#iRNu_(Pf-N&&|o?+5-?M^8oPS4X-k7v-Wq_cg+`GX{7O_625 zb8%A(r45lHOnElxH0lOsQGwAIA>sMk^KBZ zq6qj59(o?o2%!WLSi8koHWrL>1aM9?im#WD*QOP!?C@YSNWsG{XgPKU)Hx@~&}occ zwB4A)Mb&@DJG~Z*uRf=__Wvl381F|*+&AGbMFOHTkB zN%Kv~7b^|-9Np6GZImoKkopLq19?n4_A5T{cQJZ)gW8Ye%h?Z~n(JsL!+@KzvEB|Q zjJ)3F{r-2!L@dNg`m}~JzapWFFzAhOqoAjO)nBM9=zF8-wx#y@i63v$!8#vp)*1bb z)l#j)D@`^OD((m!_s^iu{k??iBqC8^0k1jBckHEiM}iUo!{hyGk`r9`nHdgvbU7ML4W=mrs1eR70JP4QlN6DdVMdEfqS z)vPM$6Y&2NLm#8BelU0&aAGpJ72R<;^BsFp+Wk%%{{~*{ZhwzH6li+ba{NUo{ZJ1w zgQ2l7*_%NzIO2n~lifrBAS+;YMgzQ)&U+a~soVTzerg1&irP}f{V#tgA4kY=s`p<8 z%_rtt7J4`pXJh$pe!<(zD2DqbpPhosZ@etat_DkY&OWeeSH)`h-^ zfbX0|kwIcC!&wS{pHKk+#msjfWjw)G*AL4CCVI9_OolBL^}=SN+CHU9+eF*9%_|AR zJsNWBW*a*6FQmAtK7YmkCW2zNzng!2o<+g^6?35AV@k@X9dIjZ0+&+>{s|SHh||QA z-t63Bx9HmXgb(+bo$D{(slqHlx+(JHaM6OelQ-N%)8nUA^94^gI|nk%0h2p_%ZGhD zS3e^`{4L5LplJ!7L4Kn@8cO`R`R)Rw4Jug?U*~kp`c?5^ikDgeMyE=l`)sz`$9rxN zYcga@_YFeCwJ_K_jr8qe2vmWRCp@vfrSVmx@S9%2q6$i9L1tbC<~B8May+)EeX>aw zQ%j^r5&ZSYhJqr+HAVnIKylGyTn4TSJ#&>3;$ZbanLP-7Pxx|t)82EM(fyiTckM88 zI-Gsz;67b|KcVjqy~KJQjE95-!i*M1?utm~TeEa1gc)niFGYJdm_U#n{W~^#tQG{_ z$8UVGmWGP#jOoc*wk!44tAF$Yv4WGg^D}Eeis&u{%t=ukneyPI>=m zd`=^A3?O!rT~98!K(kJ@%1|>)cOAp7yxbo4S7kOL*CQXe(NCL!i&qoG^C_NRi(!A6 z%9_c$ve^@xa;VkKm8{cI&BmsqF;99P^{`_V0!vjtkjXG+9xgoSfmbK|G&HOV%F1Bndu1F*l=yeKSU zJ;?W`Um>iM3saV)U+sr^1HX`mn90BE3pNhLc1@oDszP}msm5t4Za6WQm%XQv9kKD$ zY|{jDdobFN%Oa%EnU|56tAJN9xVpF3Z#MYH&*tdtWl?u`PF`qWTFcBwQAOWn#By`( z8umN?<12N>+zDS{CUU!06~FMe@QfkwcL(l>#Ij{HkpkoZuu&MpsPb;peR#T`?l%1M zO4%SB-m!|P*(TA-zget*-Gb+IvG`7N0$gk5Z)qOwE+11c@>aCI>@Hn~%#dUf3lg+YEecR)8<@>nm z3%qO}*w8K70=bibslhZ>2j%CeaqoqW=$R=pG`!7BbS~LR2=u$@m{|vOOV+tW0~=yV zH`LwTs4XW{*6H1*sk7GXZfc*s#fFy4Ua9l{F_r8mM$0pG;i>!Go5Kq*tWRSJ(0>G1 z6|0rVmAf`Pqfto1GWR~tvUOihr-e4Ec7NsmSEV<~jMC^&fEZic8|jb+EU)kDEtO~l z{)$OqrMpX$CzKu&2uUUs?YWO`!1#iouoaF#6Xz)Qn-abRNYeUjp19*YeOEP*?EC#d zZ@_O0aW0?PCz?gQd;>xdhJfyMD0tc4v8BNPR z3CccPg$IKWd|V#|2URpMd0UHE|4g9iB|w*kyd&u!>-(cG&^OBmWP%NVm7O}Y!DG$_ zAB{8bl2=xR&bSI^;&e@;g=rJRA4zwhBBwVDFZAu^U6_-+puRcc|N3x0;*`oR*qA4T zZDV{M%F*4nEDwDG5P^vqn(ilMpUlnGhu?oMy(XI+9@5Fbe8E#2MODmdga;!|0%}KT z!tfLouqnhq6az_P7YJ`bO9%>5^2Lo6J_&iM6l#qy^?sarYsg$&BO10x5$FfyB;VKe#sMa>>uYIZsOl2}&~+W|CAvO9W*j+{_;3=|1r zyGz03>ER*X+Rn@bD}p{|5de9icBhn=g!H~7(Iz23mvbU+rxKiq&|9j=AX_Zv_IbQ1 z%in2)Gk0#>fgF8J%1EjM>AhOSk?*de+FnW`c}Midf`uTa;&fNeu4DW>O-(ZFa*g=N zLO~MnM?ta#VO@yHBAv6iGy7Zi9_Ks6p@o9Yl6F4qV7&7-(Yg&?l+hoc-8gIG*dBBoZo|*dfxQt5nksZBOZX7Z|Drh5$!Df_7ivn>_^$y6Z+^;6fq-5vpaGyW3 zLSOl4N1f?JQ257#vr)5Clb@(iGes7@fYdN8M3vTVI+AO07|MM?6o;fjK7!W}Rx(N8z^_uH ztqBK*!~WmD0N(t2Rp-Q)iL<(rCuqaHp%Fp3*4JeAsV9G>mJcHx!axu5aR=M8tb(ZH zFga&S>(uMInhV`B7)fzy)E!0LSt zd#br%3XW88M&*SUc$v;R}gng284_;I}D zn48?>NJOq-j!=;>#~e8lV=^`@M{~t|X3pGJm}BlJRLDmtM`DgSJ`EF+l#RJkEjmnm ze0~0m@9*!Q-tYJ0{eC~*@AvBo!-0X5oI*zMf>-0$CVo9{(GJ}7!Ta4uq8 z3=MDXGUR#s+0Wp9k1>S^p>kN*Uy*qr!f>#BGCFj_eNYUmA7#Zm__?iQJP1}!@zPF3 z54pjJq|q83j=>AfntQ2d3PedU0B5 zuR*(EHI?sS6e?0P60GF8PcQnI1QNW2}^X7Fsz!q&pJ5(Z9zUi%ZX|4MbB`_C98Z)4{yKd$`@VMdXwy*Naw#x2uzI#>1 z&tOz_tZq8`&MQ3YRa?La8UJwk91+NmFbUv;VURW^mTPvdn?nz+-?FS_>`ybhZ|$ST zGj!r&uwKU4RK<5m6Q#7g+Y?kAbqj0@1YwJEud&ObS*i%D8)t*p!s6b?pYe81SLPP3 zY0Z3HBQ-wREh;Y)^6`8P@p=TWR(bf2iZr-&?bROz1aAKB%i}Z*LB?++j<8mh-)qdZ zz_zcV0$h9!d4nYu7)qWyonj4`HgIDHvg$bXA;-UvXCgmd>lCF19h|Mw`owhHmHCDPQE;a|`{P)f{+5~1 zG|fB*p)>lNrRc$-tXoO0_~yDd9EpXG0d*C&pRYPJqD};vGPotBAFM^dGROG|(cq3f ztLt4U_58g>YX_je3WTD;VvdPp3Td4VehTlS?3vV_bb8{E`9v1+y22}w+dt*Ch_$!a zPu^A^@oSrXo6VP#uWT#q;*bNr26?p15bC0=1x!l>0J6eD#xu&&1>ePt+p;A82CZ>O zVAeQPIn4kowJqsJ8iT!dx3S(baK-JkCXoM(&x@HgeqZ=mYVW{GWPwONh@^!o435yQ zkZ{KblQM$~oM>0sXO>lpjW z$wo#ykvviK4M*@^l3q8h&28#uq9QHuD89v0^kDg%?(e4uS)|2}%r;{#{@S^rBYTG-D`w$$moaGTO{&qtN3lAJ} ztJ2b(zOK5C{v3(lz4{c#)x>_|hJwZ~$LJ*xi=9gM5t>aes%XhuiGP47*l046ifqY` zDhh0QlzNx*v7uAduHYcltnmmJXNUckIe*~Q*rs=?Tx@Ldj^ER5^m@mpb!C07m(Ng9 zY|8E3>k7PPPv+C7*4~h_MoY&2ex81kPkXN{I_a5iHCF%PbggN~;ZzDj?neAc?a6|6 zv^?=~YXu>txCG`~*ka5<9M+kE*fc@qE*3`p4ITaCYdq6nrZ1p)cwrDTlQ)dVbQ^lc zPHP;0pbcno=}l7NO0r{f2p7FRJ@2uRZKt^(y=l}`^uNT`{a zrYa8X*{U@U11oS)vY0HFn}@e=|JVza3N9Uz^JsSU+q>JO826jY;7_hUjHvP9JRt-pN+JtX&R%&Vo@?-q22-?vD@}f5G7yl<+HF+wfnEbl)Az2Xu__ zoNQB9Fzod4c3(+?Z;fK^G&oH#^-#1od7T?fsfK;EcaX;}ecBCM&ngA)07Z05h6V!O zMGT)y%yIsePv-(*Z;EYh!nj$3**tebG7bdnuXsm|ka01oT3 z-STf=d*YU(&*X)c zcM_%eHvf*(feKN0q#CTwDEho7C}iIEz6@3F|03H(8arwWn>0mBj#Cy6;_*!@=RL8D(*%NoNvg;)k23BIpZ3Ps@3!8t zE8;aE399MIBfig2y-Z1yE81%4fkA7!#6_rXLla5I1-iwBTvUh)=z|P3J}fOirz}Pt zT1%_kG+DZ&_?H7v_^YN+%zEW83DZdVF~-&RXh17n{VY{Fq0G(3Wj^ZNUvf>e{?c}^ zQ{Jsrs^mfS{6PYZ7};Y4y|WQ=RgEb8PA(!E%h^v%b*eJ;b#Nw{e-!XoP+oU46-eU~ zb;9Hikfqvrt9P~SoK>br0kt)*zpIE|pKp!pg{$1V?{WdhH=sYv6=_lIM_g%F8lU1i z1b6Q}=Nu9rcO>NV26Z1LBldp9M$;JH%&1$R4#U|cZCboM2P>EMvwJs?I+0IkNs-6T zl}%v)jPxT@2{nX*lg$oJaD9b9QF87}9wn?!%PtY7Gby*9RlQ1KWE+BWJQ(r>e%1Lb$(HAzE?Fxn#oWs)?a#d+Y#@)4tTBU`Te(| z`X_tjd*`Y{gEFiY|6!`+M|0#m=wKh+&yAU3;U|Ca*2P$!N)F_q+EDc1^bmW8b8M>x zdSrXuk1Q}A_hcKBmtwO)p@fnFF&9ww0Re5_T_j`D^coeu#aj!!0eF(m-sI?!JFU09 z4B142KVBlxV|cEWEIXzrXrgT<#rkX*Xn$=f~ivZW_mG(l#=}L)3;pV@AKY&R}UZ$7xweEKlBX4!Arz=zqDs zRwFesv{%~Q5ax$;X?3U*o|kr(6S(_qrwqjTa&J?#E|`%9vIyG|Ji)0;CD(~m>4CRc zn;~WwfeOHQ2LidIMPXi+rvdBX_Tt+_L@DDkh?4SKhDmosgu|K&wQO-3ggfgSfoyo} zXiCfP!(&}vXjfnK`XV4zM^F?vBwczd5_r!T4Vr`u$twmSOT-$;Y(^nEvKQk)H|ZSw zgSq2VF;MLmh5wkJYX0@>rtav7PDMtx8@IKR6gXRM2K?`lq%ya`rz^hKWG@{}t3V<< zfRq!IGN74}?4Ffe*bu$cUpQO&nlyN|acw%|G%(UTV+>y5g}on=dW?$F2|6(wr>k4K zLR-Bhpf2YM$wGX$_Nowld3ZPKK73EM9_2(UTsiMQzgpfQQN&h4!s{8D;<4-kOXWAhO$!cS~ zQ4v2Ry%vjYX(M_CKU@6;+vi#tH_~`-K4tyl@I5byArD#QcHnz jL`@yDI{x1c`;UYrb3jXH6Iwg}qv_dMJ6W|{^-K95DGtYt literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/216.png b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/216.png new file mode 100644 index 0000000000000000000000000000000000000000..0050345306a43d2fbcc199ac0e03fc4692c7374d GIT binary patch literal 20432 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..4b6d862a --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "filename" : "216.png", + "idiom" : "tv", + "scale" : "1x" + }, + { + "filename" : "216-1.png", + "idiom" : "tv", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json new file mode 100644 index 00000000..f47ba43d --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json @@ -0,0 +1,32 @@ +{ + "assets" : [ + { + "filename" : "App Icon - App Store.imagestack", + "idiom" : "tv", + "role" : "primary-app-icon", + "size" : "1280x768" + }, + { + "filename" : "App Icon.imagestack", + "idiom" : "tv", + "role" : "primary-app-icon", + "size" : "400x240" + }, + { + "filename" : "Top Shelf Image Wide.imageset", + "idiom" : "tv", + "role" : "top-shelf-image-wide", + "size" : "2320x720" + }, + { + "filename" : "Top Shelf Image.imageset", + "idiom" : "tv", + "role" : "top-shelf-image", + "size" : "1920x720" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json new file mode 100644 index 00000000..b65f0cdd --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "idiom" : "tv", + "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" + }, + { + "idiom" : "tv-marketing", + "scale" : "1x" + }, + { + "idiom" : "tv-marketing", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json new file mode 100644 index 00000000..b65f0cdd --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "idiom" : "tv", + "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" + }, + { + "idiom" : "tv-marketing", + "scale" : "1x" + }, + { + "idiom" : "tv-marketing", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/ContentView.swift b/JellyfinPlayer tvOS/ContentView.swift new file mode 100644 index 00000000..92252a90 --- /dev/null +++ b/JellyfinPlayer tvOS/ContentView.swift @@ -0,0 +1,63 @@ +// +// ContentView.swift +// JellyfinPlayer tvOS +// +// Created by Aiden Vigue on 6/3/21. +// + +import SwiftUI +import CoreData + +struct ContentView: View { + @Environment(\.managedObjectContext) private var viewContext + + @FetchRequest( + sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)], + animation: .default) + private var items: FetchedResults + + var body: some View { + NavigationView { + List { + ForEach(items) { item in + Text("Item at \(item.timestamp!, formatter: itemFormatter)") + } + } + .toolbar { + Button(action: addItem) { + Label("Add Item", systemImage: "plus") + } + } + } + } + + private func addItem() { + withAnimation { + let newItem = Item(context: viewContext) + newItem.timestamp = Date() + + do { + try viewContext.save() + } catch { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + } + } + +} + +private let itemFormatter: DateFormatter = { + let formatter = DateFormatter() + formatter.dateStyle = .short + formatter.timeStyle = .medium + return formatter +}() + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView().environment(\.managedObjectContext, PersistenceController.preview.container.viewContext) + } +} diff --git a/JellyfinPlayer tvOS/Info.plist b/JellyfinPlayer tvOS/Info.plist new file mode 100644 index 00000000..16d307cc --- /dev/null +++ b/JellyfinPlayer tvOS/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchScreen + + UIRequiredDeviceCapabilities + + arm64 + + UIUserInterfaceStyle + Automatic + + diff --git a/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion b/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion new file mode 100644 index 00000000..c7f0bb2c --- /dev/null +++ b/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + JellyfinPlayer_tvOS.xcdatamodel + + diff --git a/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents b/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents new file mode 100644 index 00000000..9ed2921a --- /dev/null +++ b/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift b/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift new file mode 100644 index 00000000..8fcc586d --- /dev/null +++ b/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift @@ -0,0 +1,20 @@ +// +// JellyfinPlayer_tvOSApp.swift +// JellyfinPlayer tvOS +// +// Created by Aiden Vigue on 6/3/21. +// + +import SwiftUI + +@main +struct JellyfinPlayer_tvOSApp: App { + let persistenceController = PersistenceController.shared + + var body: some Scene { + WindowGroup { + ContentView() + .environment(\.managedObjectContext, persistenceController.container.viewContext) + } + } +} diff --git a/JellyfinPlayer tvOS/Persistence.swift b/JellyfinPlayer tvOS/Persistence.swift new file mode 100644 index 00000000..2a336074 --- /dev/null +++ b/JellyfinPlayer tvOS/Persistence.swift @@ -0,0 +1,55 @@ +// +// Persistence.swift +// JellyfinPlayer tvOS +// +// Created by Aiden Vigue on 6/3/21. +// + +import CoreData + +struct PersistenceController { + static let shared = PersistenceController() + + static var preview: PersistenceController = { + let result = PersistenceController(inMemory: true) + let viewContext = result.container.viewContext + for _ in 0..<10 { + let newItem = Item(context: viewContext) + newItem.timestamp = Date() + } + do { + try viewContext.save() + } catch { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + let nsError = error as NSError + fatalError("Unresolved error \(nsError), \(nsError.userInfo)") + } + return result + }() + + let container: NSPersistentContainer + + init(inMemory: Bool = false) { + container = NSPersistentContainer(name: "JellyfinPlayer_tvOS") + if inMemory { + container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") + } + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + /* + Typical reasons for an error here include: + * The parent directory does not exist, cannot be created, or disallows writing. + * The persistent store is not accessible, due to permissions or data protection when the device is locked. + * The device is out of space. + * The store could not be migrated to the current model version. + Check the error message to determine what the actual problem was. + */ + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + } +} diff --git a/JellyfinPlayer tvOS/Preview Content/Preview Assets.xcassets/Contents.json b/JellyfinPlayer tvOS/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/JellyfinPlayer tvOS/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index b0105d3b..15f6ba64 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -13,6 +13,33 @@ 5338F74E263B61370014BF09 /* ConnectToServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5338F74D263B61370014BF09 /* ConnectToServerView.swift */; }; 5338F754263B65E10014BF09 /* SwiftyRequest in Frameworks */ = {isa = PBXBuildFile; productRef = 5338F753263B65E10014BF09 /* SwiftyRequest */; }; 5338F757263B7E2E0014BF09 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 5338F756263B7E2E0014BF09 /* KeychainSwift */; }; + 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870622669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift */; }; + 535870652669D21600D05A09 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870642669D21600D05A09 /* ContentView.swift */; }; + 535870672669D21700D05A09 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 535870662669D21700D05A09 /* Assets.xcassets */; }; + 5358706A2669D21700D05A09 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 535870692669D21700D05A09 /* Preview Assets.xcassets */; }; + 5358706C2669D21700D05A09 /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5358706B2669D21700D05A09 /* Persistence.swift */; }; + 5358706F2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5358706D2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodeld */; }; + 535870742669D22F00D05A09 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5377CBF8263B596B003A4E83 /* Assets.xcassets */; }; + 5358707E2669D64F00D05A09 /* bitrates.json in Resources */ = {isa = PBXBuildFile; fileRef = AE8C3158265D6F90008AA076 /* bitrates.json */; }; + 5358708B2669D7A800D05A09 /* SwiftyRequest in Frameworks */ = {isa = PBXBuildFile; productRef = 5358708A2669D7A800D05A09 /* SwiftyRequest */; }; + 5358708D2669D7A800D05A09 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 5358708C2669D7A800D05A09 /* KeychainSwift */; }; + 5358708F2669D7A800D05A09 /* SwiftyJSON in Frameworks */ = {isa = PBXBuildFile; productRef = 5358708E2669D7A800D05A09 /* SwiftyJSON */; }; + 535870912669D7A800D05A09 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 535870902669D7A800D05A09 /* Introspect */; }; + 535870932669D7A800D05A09 /* CombineMoya in Frameworks */ = {isa = PBXBuildFile; productRef = 535870922669D7A800D05A09 /* CombineMoya */; }; + 535870952669D7A800D05A09 /* Moya in Frameworks */ = {isa = PBXBuildFile; productRef = 535870942669D7A800D05A09 /* Moya */; }; + 535870972669D7A800D05A09 /* ReactiveMoya in Frameworks */ = {isa = PBXBuildFile; productRef = 535870962669D7A800D05A09 /* ReactiveMoya */; }; + 535870992669D7A800D05A09 /* RxMoya in Frameworks */ = {isa = PBXBuildFile; productRef = 535870982669D7A800D05A09 /* RxMoya */; }; + 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5358709A2669D7A800D05A09 /* NukeUI */; }; + 5358709D2669D82900D05A09 /* TVVLCKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5358709C2669D82900D05A09 /* TVVLCKit.framework */; }; + 5358709E2669D82900D05A09 /* TVVLCKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5358709C2669D82900D05A09 /* TVVLCKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 535870A32669D89F00D05A09 /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */; }; + 535870A52669D8AE00D05A09 /* ParallaxHeaderScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6225FCCA2663841E00E067F6 /* ParallaxHeaderScrollView.swift */; }; + 535870A62669D8AE00D05A09 /* LazyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338B22660A07800A81A2A /* LazyView.swift */; }; + 535870A72669D8AE00D05A09 /* MultiSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E4E648263F725B00F67C6B /* MultiSelector.swift */; }; + 535870A82669D8AE00D05A09 /* String++.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338922660107500A81A2A /* String++.swift */; }; + 535870A92669D8AE00D05A09 /* LazyImage++.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621C638126676728004216EA /* LazyImage++.swift */; }; + 535870AA2669D8AE00D05A09 /* BlurHashDecode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5389277B263CC3DB0035E14B /* BlurHashDecode.swift */; }; + 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870AC2669D8DD00D05A09 /* Typings.swift */; }; 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535BAE9E2649E569005FA86D /* ItemView.swift */; }; 535BAEA5264A151C005FA86D /* VideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535BAEA4264A151C005FA86D /* VideoPlayer.swift */; }; 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */; }; @@ -67,6 +94,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 5358709F2669D82900D05A09 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 5358709E2669D82900D05A09 /* TVVLCKit.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; 53D5E3DF264B47EE00BADDC8 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 12; @@ -84,6 +122,16 @@ 53192D5C265AA78A008A4215 /* DeviceProfileBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceProfileBuilder.swift; sourceTree = ""; }; 53313B8F265EEA6D00947AA3 /* VideoPlayer.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = VideoPlayer.storyboard; sourceTree = ""; }; 5338F74D263B61370014BF09 /* ConnectToServerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectToServerView.swift; sourceTree = ""; }; + 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "JellyfinPlayer tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 535870622669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinPlayer_tvOSApp.swift; sourceTree = ""; }; + 535870642669D21600D05A09 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 535870662669D21700D05A09 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 535870692669D21700D05A09 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 5358706B2669D21700D05A09 /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = ""; }; + 5358706E2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = JellyfinPlayer_tvOS.xcdatamodel; sourceTree = ""; }; + 535870702669D21700D05A09 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5358709C2669D82900D05A09 /* TVVLCKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TVVLCKit.framework; path = "Carthage/Build/TVVLCKit.xcframework/tvos-arm64/TVVLCKit.framework"; sourceTree = ""; }; + 535870AC2669D8DD00D05A09 /* Typings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Typings.swift; sourceTree = ""; }; 535BAE9E2649E569005FA86D /* ItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemView.swift; sourceTree = ""; }; 535BAEA4264A151C005FA86D /* VideoPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayer.swift; sourceTree = ""; }; 5377CBF1263B596A003A4E83 /* JellyfinPlayer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JellyfinPlayer.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -127,6 +175,23 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 5358705D2669D21600D05A09 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 535870972669D7A800D05A09 /* ReactiveMoya in Frameworks */, + 5358708F2669D7A800D05A09 /* SwiftyJSON in Frameworks */, + 535870912669D7A800D05A09 /* Introspect in Frameworks */, + 535870952669D7A800D05A09 /* Moya in Frameworks */, + 5358708D2669D7A800D05A09 /* KeychainSwift in Frameworks */, + 5358709D2669D82900D05A09 /* TVVLCKit.framework in Frameworks */, + 535870932669D7A800D05A09 /* CombineMoya in Frameworks */, + 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */, + 535870992669D7A800D05A09 /* RxMoya in Frameworks */, + 5358708B2669D7A800D05A09 /* SwiftyRequest in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5377CBEE263B596A003A4E83 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -145,11 +210,52 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 535870612669D21600D05A09 /* JellyfinPlayer tvOS */ = { + isa = PBXGroup; + children = ( + 535870622669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift */, + 535870642669D21600D05A09 /* ContentView.swift */, + 535870662669D21700D05A09 /* Assets.xcassets */, + 5358706B2669D21700D05A09 /* Persistence.swift */, + 535870702669D21700D05A09 /* Info.plist */, + 5358706D2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodeld */, + 535870682669D21700D05A09 /* Preview Content */, + ); + path = "JellyfinPlayer tvOS"; + sourceTree = ""; + }; + 535870682669D21700D05A09 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 535870692669D21700D05A09 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 535870752669D60C00D05A09 /* Shared */ = { + isa = PBXGroup; + children = ( + 535870AB2669D8D300D05A09 /* Typings */, + AE8C3157265D6F5E008AA076 /* Resources */, + ); + path = Shared; + sourceTree = ""; + }; + 535870AB2669D8D300D05A09 /* Typings */ = { + isa = PBXGroup; + children = ( + 535870AC2669D8DD00D05A09 /* Typings.swift */, + ); + path = Typings; + sourceTree = ""; + }; 5377CBE8263B596A003A4E83 = { isa = PBXGroup; children = ( + 535870752669D60C00D05A09 /* Shared */, 53D5E3DA264B460200BADDC8 /* Cartfile */, 5377CBF3263B596A003A4E83 /* JellyfinPlayer */, + 535870612669D21600D05A09 /* JellyfinPlayer tvOS */, 5377CBF2263B596A003A4E83 /* Products */, 53D5E3DB264B47EE00BADDC8 /* Frameworks */, ); @@ -159,6 +265,7 @@ isa = PBXGroup; children = ( 5377CBF1263B596A003A4E83 /* JellyfinPlayer.app */, + 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */, ); name = Products; sourceTree = ""; @@ -166,9 +273,8 @@ 5377CBF3263B596A003A4E83 /* JellyfinPlayer */ = { isa = PBXGroup; children = ( - 621338912660106C00A81A2A /* Extensions */, 6273DD46265F419B009C1D0B /* APIs */, - AE8C3157265D6F5E008AA076 /* Resources */, + 621338912660106C00A81A2A /* Extensions */, AE8C3152265D607B008AA076 /* ViewModels */, AE8C3151265D6075008AA076 /* Models */, AE8C3150265D5FE1008AA076 /* Views */, @@ -207,6 +313,7 @@ 53D5E3DB264B47EE00BADDC8 /* Frameworks */ = { isa = PBXGroup; children = ( + 5358709C2669D82900D05A09 /* TVVLCKit.framework */, 53D5E3DC264B47EE00BADDC8 /* MobileVLCKit.xcframework */, ); name = Frameworks; @@ -217,7 +324,6 @@ children = ( 5389277B263CC3DB0035E14B /* BlurHashDecode.swift */, 53E4E648263F725B00F67C6B /* MultiSelector.swift */, - 53892771263C8C6F0035E14B /* LoadingView.swift */, 621338B22660A07800A81A2A /* LazyView.swift */, 621338922660107500A81A2A /* String++.swift */, 6225FCCA2663841E00E067F6 /* ParallaxHeaderScrollView.swift */, @@ -238,10 +344,11 @@ AE8C3150265D5FE1008AA076 /* Views */ = { isa = PBXGroup; children = ( + 53892771263C8C6F0035E14B /* LoadingView.swift */, 535BAEA4264A151C005FA86D /* VideoPlayer.swift */, - 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, 53313B8F265EEA6D00947AA3 /* VideoPlayer.storyboard */, 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, + 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, ); path = Views; sourceTree = ""; @@ -277,6 +384,35 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 5358705F2669D21600D05A09 /* JellyfinPlayer tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 535870712669D21700D05A09 /* Build configuration list for PBXNativeTarget "JellyfinPlayer tvOS" */; + buildPhases = ( + 5358705C2669D21600D05A09 /* Sources */, + 5358705D2669D21600D05A09 /* Frameworks */, + 5358705E2669D21600D05A09 /* Resources */, + 5358709F2669D82900D05A09 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "JellyfinPlayer tvOS"; + packageProductDependencies = ( + 5358708A2669D7A800D05A09 /* SwiftyRequest */, + 5358708C2669D7A800D05A09 /* KeychainSwift */, + 5358708E2669D7A800D05A09 /* SwiftyJSON */, + 535870902669D7A800D05A09 /* Introspect */, + 535870922669D7A800D05A09 /* CombineMoya */, + 535870942669D7A800D05A09 /* Moya */, + 535870962669D7A800D05A09 /* ReactiveMoya */, + 535870982669D7A800D05A09 /* RxMoya */, + 5358709A2669D7A800D05A09 /* NukeUI */, + ); + productName = "JellyfinPlayer tvOS"; + productReference = 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */; + productType = "com.apple.product-type.application"; + }; 5377CBF0263B596A003A4E83 /* JellyfinPlayer */ = { isa = PBXNativeTarget; buildConfigurationList = 5377CC1B263B596B003A4E83 /* Build configuration list for PBXNativeTarget "JellyfinPlayer" */; @@ -317,6 +453,9 @@ LastSwiftUpdateCheck = 1250; LastUpgradeCheck = 1250; TargetAttributes = { + 5358705F2669D21600D05A09 = { + CreatedOnToolsVersion = 12.5; + }; 5377CBF0263B596A003A4E83 = { CreatedOnToolsVersion = 12.5; }; @@ -344,11 +483,23 @@ projectRoot = ""; targets = ( 5377CBF0263B596A003A4E83 /* JellyfinPlayer */, + 5358705F2669D21600D05A09 /* JellyfinPlayer tvOS */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 5358705E2669D21600D05A09 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5358706A2669D21700D05A09 /* Preview Assets.xcassets in Resources */, + 535870742669D22F00D05A09 /* Assets.xcassets in Resources */, + 535870672669D21700D05A09 /* Assets.xcassets in Resources */, + 5358707E2669D64F00D05A09 /* bitrates.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5377CBEF263B596A003A4E83 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -363,6 +514,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 5358705C2669D21600D05A09 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 535870A82669D8AE00D05A09 /* String++.swift in Sources */, + 535870A52669D8AE00D05A09 /* ParallaxHeaderScrollView.swift in Sources */, + 535870A72669D8AE00D05A09 /* MultiSelector.swift in Sources */, + 535870A92669D8AE00D05A09 /* LazyImage++.swift in Sources */, + 5358706C2669D21700D05A09 /* Persistence.swift in Sources */, + 535870AA2669D8AE00D05A09 /* BlurHashDecode.swift in Sources */, + 535870652669D21600D05A09 /* ContentView.swift in Sources */, + 535870A62669D8AE00D05A09 /* LazyView.swift in Sources */, + 5358706F2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodeld in Sources */, + 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */, + 535870A32669D89F00D05A09 /* Model.xcdatamodeld in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5377CBED263B596A003A4E83 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -389,6 +558,7 @@ 6213388E265F777C00A81A2A /* LibraryViewModel.swift in Sources */, 621338B32660A07800A81A2A /* LazyView.swift in Sources */, 62133895266096EF00A81A2A /* LibraryListViewModel.swift in Sources */, + 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */, 6273DD48265F41B3009C1D0B /* JellyfinAPI.swift in Sources */, 53892777263CBB000035E14B /* JellyApiTypings.swift in Sources */, 5377CBF7263B596A003A4E83 /* ContentView.swift in Sources */, @@ -408,6 +578,60 @@ /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ + 535870722669D21700D05A09 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; + DEVELOPMENT_TEAM = 9R8RREG67J; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/TVVLCKit.xcframework/tvos-arm64", + ); + INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "me.vigue.JellyfinPlayer-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 14.5; + }; + name = Debug; + }; + 535870732669D21700D05A09 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; + DEVELOPMENT_TEAM = 9R8RREG67J; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/TVVLCKit.xcframework/tvos-arm64", + ); + INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "me.vigue.JellyfinPlayer-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 14.5; + }; + name = Release; + }; 5377CC19263B596B003A4E83 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -583,6 +807,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 535870712669D21700D05A09 /* Build configuration list for PBXNativeTarget "JellyfinPlayer tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 535870722669D21700D05A09 /* Debug */, + 535870732669D21700D05A09 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 5377CBEC263B596A003A4E83 /* Build configuration list for PBXProject "JellyfinPlayer" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -670,6 +903,51 @@ package = 5338F755263B7E2E0014BF09 /* XCRemoteSwiftPackageReference "keychain-swift" */; productName = KeychainSwift; }; + 5358708A2669D7A800D05A09 /* SwiftyRequest */ = { + isa = XCSwiftPackageProductDependency; + package = 5338F752263B65E10014BF09 /* XCRemoteSwiftPackageReference "SwiftyRequest" */; + productName = SwiftyRequest; + }; + 5358708C2669D7A800D05A09 /* KeychainSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 5338F755263B7E2E0014BF09 /* XCRemoteSwiftPackageReference "keychain-swift" */; + productName = KeychainSwift; + }; + 5358708E2669D7A800D05A09 /* SwiftyJSON */ = { + isa = XCSwiftPackageProductDependency; + package = 53892778263CBFE70035E14B /* XCRemoteSwiftPackageReference "SwiftyJSON" */; + productName = SwiftyJSON; + }; + 535870902669D7A800D05A09 /* Introspect */ = { + isa = XCSwiftPackageProductDependency; + package = 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */; + productName = Introspect; + }; + 535870922669D7A800D05A09 /* CombineMoya */ = { + isa = XCSwiftPackageProductDependency; + package = 6273DD41265F4195009C1D0B /* XCRemoteSwiftPackageReference "Moya" */; + productName = CombineMoya; + }; + 535870942669D7A800D05A09 /* Moya */ = { + isa = XCSwiftPackageProductDependency; + package = 6273DD41265F4195009C1D0B /* XCRemoteSwiftPackageReference "Moya" */; + productName = Moya; + }; + 535870962669D7A800D05A09 /* ReactiveMoya */ = { + isa = XCSwiftPackageProductDependency; + package = 6273DD41265F4195009C1D0B /* XCRemoteSwiftPackageReference "Moya" */; + productName = ReactiveMoya; + }; + 535870982669D7A800D05A09 /* RxMoya */ = { + isa = XCSwiftPackageProductDependency; + package = 6273DD41265F4195009C1D0B /* XCRemoteSwiftPackageReference "Moya" */; + productName = RxMoya; + }; + 5358709A2669D7A800D05A09 /* NukeUI */ = { + isa = XCSwiftPackageProductDependency; + package = 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */; + productName = NukeUI; + }; 53892779263CBFE70035E14B /* SwiftyJSON */ = { isa = XCSwiftPackageProductDependency; package = 53892778263CBFE70035E14B /* XCRemoteSwiftPackageReference "SwiftyJSON" */; @@ -693,6 +971,16 @@ /* End XCSwiftPackageProductDependency section */ /* Begin XCVersionGroup section */ + 5358706D2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 5358706E2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodel */, + ); + currentVersion = 5358706E2669D21700D05A09 /* JellyfinPlayer_tvOS.xcdatamodel */; + path = JellyfinPlayer_tvOS.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */ = { isa = XCVersionGroup; children = ( diff --git a/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 132fdafb..c3a6e063 100644 --- a/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -69,8 +69,8 @@ "repositoryURL": "https://github.com/kean/Nuke.git", "state": { "branch": null, - "revision": "2775239e10e23c0b70c5544b98c2af7f65c2bbd9", - "version": "10.0.1" + "revision": "e1e9d056fedafa486508759923a0db61ce46f1bc", + "version": "10.1.0" } }, { @@ -78,7 +78,7 @@ "repositoryURL": "https://github.com/kean/NukeUI", "state": { "branch": "main", - "revision": "e2e43774f3a26b398432dd87a43dc464b0e2cc9b", + "revision": "31ef27030d4ebf8fc5a3d5b44d66e281921883ab", "version": null } }, diff --git a/JellyfinPlayer/Assets.xcassets/AccentColor.colorset/Contents.json b/JellyfinPlayer/Assets.xcassets/AccentColor.colorset/Contents.json index ed190814..10fdb69d 100644 --- a/JellyfinPlayer/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/JellyfinPlayer/Assets.xcassets/AccentColor.colorset/Contents.json @@ -5,12 +5,24 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0xC3", - "green" : "0x5C", - "red" : "0xAA" + "blue" : "0.765", + "green" : "0.361", + "red" : "0.667" } }, - "idiom" : "universal" + "idiom" : "iphone" + }, + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.765", + "green" : "0.361", + "red" : "0.667" + } + }, + "idiom" : "tv" } ], "info" : { diff --git a/JellyfinPlayer/JellyfinPlayerApp.swift b/JellyfinPlayer/JellyfinPlayerApp.swift index f2572a50..0214163e 100644 --- a/JellyfinPlayer/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/JellyfinPlayerApp.swift @@ -7,28 +7,6 @@ import SwiftUI -class justSignedIn: ObservableObject { - @Published var did: Bool = false -} - -class GlobalData: ObservableObject { - @Published var user: SignedInUser? - @Published var authToken: String = "" - @Published var server: Server? - @Published var authHeader: String = "" - @Published var isInNetwork: Bool = true; -} - -extension GlobalData: Equatable { - - static func == (lhs: GlobalData, rhs: GlobalData) -> Bool { - lhs.user == rhs.user - && lhs.authToken == rhs.authToken - && lhs.server == rhs.server - && lhs.authHeader == rhs.authHeader - } -} - extension UIDevice { var hasNotch: Bool { let bottom = UIApplication.shared.windows.filter {$0.isKeyWindow}.first?.safeAreaInsets.bottom ?? 0 diff --git a/JellyfinPlayer/Extensions/LoadingView.swift b/JellyfinPlayer/Views/LoadingView.swift similarity index 100% rename from JellyfinPlayer/Extensions/LoadingView.swift rename to JellyfinPlayer/Views/LoadingView.swift diff --git a/JellyfinPlayer/Resources/Model.xcdatamodeld/.xccurrentversion b/Shared/Resources/Model.xcdatamodeld/.xccurrentversion similarity index 100% rename from JellyfinPlayer/Resources/Model.xcdatamodeld/.xccurrentversion rename to Shared/Resources/Model.xcdatamodeld/.xccurrentversion diff --git a/JellyfinPlayer/Resources/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents b/Shared/Resources/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents similarity index 100% rename from JellyfinPlayer/Resources/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents rename to Shared/Resources/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents diff --git a/JellyfinPlayer/Resources/bitrates.json b/Shared/Resources/bitrates.json similarity index 100% rename from JellyfinPlayer/Resources/bitrates.json rename to Shared/Resources/bitrates.json diff --git a/Shared/Typings/Typings.swift b/Shared/Typings/Typings.swift new file mode 100644 index 00000000..df373ec4 --- /dev/null +++ b/Shared/Typings/Typings.swift @@ -0,0 +1,30 @@ +// +// Typings.swift +// JellyfinPlayer +// +// Created by Aiden Vigue on 6/3/21. +// + +import Foundation + +class justSignedIn: ObservableObject { + @Published var did: Bool = false +} + +class GlobalData: ObservableObject { + @Published var user: SignedInUser? + @Published var authToken: String = "" + @Published var server: Server? + @Published var authHeader: String = "" + @Published var isInNetwork: Bool = true; +} + +extension GlobalData: Equatable { + + static func == (lhs: GlobalData, rhs: GlobalData) -> Bool { + lhs.user == rhs.user + && lhs.authToken == rhs.authToken + && lhs.server == rhs.server + && lhs.authHeader == rhs.authHeader + } +} diff --git a/jellyfin-tvos/jellyfin_tvos.xcdatamodeld/.xccurrentversion b/jellyfin-tvos/jellyfin_tvos.xcdatamodeld/.xccurrentversion new file mode 100644 index 00000000..0c67376e --- /dev/null +++ b/jellyfin-tvos/jellyfin_tvos.xcdatamodeld/.xccurrentversion @@ -0,0 +1,5 @@ + + + + + diff --git a/jellyfin-tvos/jellyfin_tvos.xcdatamodeld/jellyfin_tvos.xcdatamodel/contents b/jellyfin-tvos/jellyfin_tvos.xcdatamodeld/jellyfin_tvos.xcdatamodel/contents new file mode 100644 index 00000000..9ed2921a --- /dev/null +++ b/jellyfin-tvos/jellyfin_tvos.xcdatamodeld/jellyfin_tvos.xcdatamodel/contents @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file