Anthony Musgrove 195 Posted January 17 Author Share Posted January 17 11 minutes ago, kreris said: we have the last stable version of emby (4.7.14.0), until now we are using the scripterX plugin with version 4.0.0.8 beta, without problems. But now with the last release version, the plugin auto updates, and stops working. If we install the previous version, autoupdates again. There any option for install the previuos version and avoid the autoupdate, or any other option for use the plugin with the stable version of emby Hi there Kris, my apologies This is my fault - I will fix this now Link to comment Share on other sites More sharing options...
MrTetrisCow 0 Posted January 17 Share Posted January 17 Same issue here, I am running the latest stable version of emby and I had the latest release version of scripterX (3.0.5.5) working perfectly, today the plugin updated to version 5.0.0.3 and I can no longer use scripterx, even if I downgrade it, it just auto updates the next time I start the server. I don't feel like installing the beta version of emby, is there any other solution? I don't know it this is possible but there should be a way for emby to check if the plugin is compatible with the currently installed emby version and only update if true. Link to comment Share on other sites More sharing options...
Anthony Musgrove 195 Posted January 17 Author Share Posted January 17 Hi guys, My apologies, this was my fault. When I added the newest version 5.0.0.3 to the Catalog, I set it as 'release' rather than 'beta' - which I have now fixed, so you should be right to downgrade back to the latest release version - v4.0.0.8 - and it shouldn't auto update again Sorry about that guys! 1 Link to comment Share on other sites More sharing options...
MrTetrisCow 0 Posted January 17 Share Posted January 17 (edited) 16 minutes ago, Anthony Musgrove said: Hi guys, My apologies, this was my fault. When I added the newest version 5.0.0.3 to the Catalog, I set it as 'release' rather than 'beta' - which I have now fixed, so you should be right to downgrade back to the latest release version - v4.0.0.8 - and it shouldn't auto update again Sorry about that guys! It is still updating to 5.0.0.3 right now, do you have an idea of how long it takes for the fix to take effect? Thanks for your great work BTW, this is the most useful plugin for emby. Edited January 17 by MrTetrisCow Link to comment Share on other sites More sharing options...
Anthony Musgrove 195 Posted January 17 Author Share Posted January 17 Could you please try again - I've added new release version numbers for both beta and release - so beta latest is now 5.0.0.4, and the release latest is now 4.0.0.9 You may need to select the release version again in the catalog, I'm not sure how the business rules work with the catalog autoupdates, but it should be fine now - I've set the latest beta version to minimum server version 4.8+, so anyone running 4.7.* should now only get the 4.0.0.9 option (and therefore only autoupdate to that) Link to comment Share on other sites More sharing options...
Anthony Musgrove 195 Posted January 17 Author Share Posted January 17 I've just confirmed on my non-beta server that the latest offered now is 4.0.0.9 - but that means that servers that have automatically updated to 5.0.0.3 may need to manually downgrade to 4.0.0.9 - but that will resolve the issue. Sorry again guys, it's just because there is significant changes and improvements to the Emby Core that required significant core modifications (which will only work in the Beta server, not the Release server), which is why any 5.* version of Scripter-X won't work with Release server anymore. If you have any issues please let me know and I'll get them sorted 1 Link to comment Share on other sites More sharing options...
MrTetrisCow 0 Posted January 17 Share Posted January 17 I can confirm it is fixed now. Thank you!! Link to comment Share on other sites More sharing options...
Anthony Musgrove 195 Posted January 17 Author Share Posted January 17 Just now, MrTetrisCow said: I can confirm it is fixed now. Thank you!! Beautiful, thank you so much for your patience and understanding, that is a massive sigh of relief! Link to comment Share on other sites More sharing options...
Stan Guiseppe 6 Posted January 18 Share Posted January 18 Thanks Anthony, I'm on stable and mine is fixed now after installing 4.0.0.9. So to get the %playback.event.name% function, do I need to go Emby Beta and install Scripter X Beta? It doesn't appear in 4.0.0.9: On 16/01/2024 at 14:21, Anthony Musgrove said: Hey @Stan Guiseppe, thank you heaps for the awesome feedback! I've just added Pause and Unpause into the next version, which I am about to release on the Emby catalog, v5.0.0.3. You'll notice %playback.event.name% which will equal Pause, Unpause, TimeEvent. With regard to packages, this will be available again shortly, I'm just revamping the packages implementation to ensure it is all secure and clean. Link to comment Share on other sites More sharing options...
Anthony Musgrove 195 Posted January 18 Author Share Posted January 18 17 minutes ago, Stan Guiseppe said: Thanks Anthony, I'm on stable and mine is fixed now after installing 4.0.0.9. So to get the %playback.event.name% function, do I need to go Emby Beta and install Scripter X Beta? It doesn't appear in 4.0.0.9: Hey Stan! Yep mate, any new functionality now is only being added to the latest beta channel stuff, If that's a major issue though I may be able to put this one change into the stable version too Link to comment Share on other sites More sharing options...
Stan Guiseppe 6 Posted January 18 Share Posted January 18 Yeah I was hoping to stay on stable if possible. But I don't want you to go to too much trouble just for this! Is there a way I can manually create a script to achieve pause/resume function? Link to comment Share on other sites More sharing options...
Anthony Musgrove 195 Posted January 18 Author Share Posted January 18 1 hour ago, Stan Guiseppe said: Yeah I was hoping to stay on stable if possible. But I don't want you to go to too much trouble just for this! Is there a way I can manually create a script to achieve pause/resume function? As a very special one off, I've added it to the stable release New version 4.1.0.0 Stable includes :- * Added %playback.event.name% to onPlaybackProgress - you can use this with a clause to detect 'Pause', 'Unpause', 'TimeUpdate' (this coincides with new functionality for Beta stream, one off feature request) It doesn't include any new features or changes from the 5.* versions other than the one above, but it will get you out of trouble 2024-01-18 14:02:37.492 Info Emby ScripterX: onPlaybackProgress: Pause 2024-01-18 14:02:36.552 Info Emby ScripterX: onPlaybackProgress: TimeUpdate 2024-01-18 14:02:36.291 Info Emby ScripterX: onPlaybackProgress: Unpause Link to comment Share on other sites More sharing options...
Stan Guiseppe 6 Posted January 18 Share Posted January 18 39 minutes ago, Anthony Musgrove said: As a very special one off, I've added it to the stable release New version 4.1.0.0 Stable includes :- * Added %playback.event.name% to onPlaybackProgress - you can use this with a clause to detect 'Pause', 'Unpause', 'TimeUpdate' (this coincides with new functionality for Beta stream, one off feature request) It doesn't include any new features or changes from the 5.* versions other than the one above, but it will get you out of trouble 2024-01-18 14:02:37.492 Info Emby ScripterX: onPlaybackProgress: Pause 2024-01-18 14:02:36.552 Info Emby ScripterX: onPlaybackProgress: TimeUpdate 2024-01-18 14:02:36.291 Info Emby ScripterX: onPlaybackProgress: Unpause This is awesome Anthony, thanks very much!! You are too good. 1 Link to comment Share on other sites More sharing options...
abegreen 17 Posted January 21 Share Posted January 21 Hi, Installed 4.1.0.0 and scripts now work, but When I go to Scripter-X-->Actions, I only see a blank page. Tried restarting everything, do you have any idea why is that? Thank you for developing this plugin. Without it, Emby is just a simple movie player. Link to comment Share on other sites More sharing options...
Anthony Musgrove 195 Posted January 21 Author Share Posted January 21 4 hours ago, abegreen said: Hi, Installed 4.1.0.0 and scripts now work, but When I go to Scripter-X-->Actions, I only see a blank page. Tried restarting everything, do you have any idea why is that? Thank you for developing this plugin. Without it, Emby is just a simple movie player. Hey @abegreen, thank you so much for the awesome feedback! With regard to the blank screen, could you confirm if you're using the stable or beta version of Emby Server? 4.1.0.0 is for the stable emby server, and 5.* is for the beta release of emby server. Once that's confirmed, I can help troubleshoot further! If you are using the stable emby server with 4.1.0.0 and it is still blank screening, can you please check out the web developer console in your browser and see if there are any errors showing in there. It may be that your browser cache needs to be cleared. Kindest regards, Anthony Link to comment Share on other sites More sharing options...
abegreen 17 Posted January 22 Share Posted January 22 Using stable version of Emby server. Not using from browser but Windows app. Also when I go to Emby Scripter-X → Packages there is this message: Please Note: there is a known issue where after you install a package you are required to reload the packages page for the new package information to show properly. This issue will be addressed shortly. Link to comment Share on other sites More sharing options...
Oracle 74 Posted January 23 Share Posted January 23 Thinking this would be cool to use, but can't necessarily come up with a use case for me personally. What is everyone else using this for specifically? Would anyone be able to provide some example scripts (publicly or privately?) Thanks. Link to comment Share on other sites More sharing options...
Spaceboy 2494 Posted January 23 Share Posted January 23 i use it to kick off the comskip process for a recording as the recording starts. currently with native emby function you can only kick this off when the recording finishes Link to comment Share on other sites More sharing options...
rbjtech 4274 Posted January 23 Share Posted January 23 (edited) 25 minutes ago, Oracle said: Thinking this would be cool to use, but can't necessarily come up with a use case for me personally. What is everyone else using this for specifically? Would anyone be able to provide some example scripts (publicly or privately?) Thanks. I use it to write an emby authentication log for external dmz tools to use - used for blacklisting IP's etc. It also initiates alerts via PushOver etc if wrong password or brute force attempts etc. As you are a powershell wizard - you're gonna hate the use of batch files, but I simply pass the variables into a batch file (as %1, %2 etc) and then do what I want with the data. This is an example for AuthFail. As an example, this is the line that simply writes it to a log file with date and time ... echo [%date% %time:~0,8%] AuthFail %1,%2,%3,%4,%5,%6,%7,%8,%9 >> c:\Emby-Server\emby_auth.log Edited January 23 by rbjtech Link to comment Share on other sites More sharing options...
abegreen 17 Posted January 23 Share Posted January 23 On 1/21/2024 at 6:04 PM, abegreen said: Hi, Installed 4.1.0.0 and scripts now work, but When I go to Scripter-X-->Actions, I only see a blank page. Tried restarting everything, do you have any idea why is that? Thank you for developing this plugin. Without it, Emby is just a simple movie player. Ma dude, it works just fine. I was trying to access it from windows app instead to configure it on the server. My bad. Thank you for the quick reply. Link to comment Share on other sites More sharing options...
joekingcool 26 Posted January 24 Share Posted January 24 On 1/11/2024 at 12:47 AM, Anthony Musgrove said: My question firstly though would be - what are you trying to achieve via commandline? What is it that you need to get emby to do/provide via commandline? i would like to update the guide or shutdown emby or run library scan from cmd prompt. is that possible? i use curl to shutdown emby with api key, but couldnt find any more api cmds for emby on the forum's. Link to comment Share on other sites More sharing options...
clost 0 Posted February 4 Share Posted February 4 On 1/21/2024 at 9:11 PM, Anthony Musgrove said: Hey @abegreen, thank you so much for the awesome feedback! With regard to the blank screen, could you confirm if you're using the stable or beta version of Emby Server? 4.1.0.0 is for the stable emby server, and 5.* is for the beta release of emby server. Once that's confirmed, I can help troubleshoot further! If you are using the stable emby server with 4.1.0.0 and it is still blank screening, can you please check out the web developer console in your browser and see if there are any errors showing in there. It may be that your browser cache needs to be cleared. Kindest regards, Anthony He is true, it is really blank Link to comment Share on other sites More sharing options...
clost 0 Posted February 6 Share Posted February 6 Do you have item.isforder method, I think it's important too when using scrape Link to comment Share on other sites More sharing options...
Guest RafaelP Posted February 9 Share Posted February 9 On 1/21/2024 at 10:11 PM, Anthony Musgrove said: Hey @abegreen, thank you so much for the awesome feedback! With regard to the blank screen, could you confirm if you're using the stable or beta version of Emby Server? 4.1.0.0 is for the stable emby server, and 5.* is for the beta release of emby server. Once that's confirmed, I can help troubleshoot further! If you are using the stable emby server with 4.1.0.0 and it is still blank screening, can you please check out the web developer console in your browser and see if there are any errors showing in there. It may be that your browser cache needs to be cleared. Kindest regards, Anthony I have the same error. I've tried with 4.1.0.0 and 4.0.0.9 Emby logs show the following logs: 2024-02-09 08:36:28.615 Error Emby ScripterX: Error adding global server tokens: Object reference not set to an instance of an object. Dev console doesn't show any errors as far as I can see. Link to comment Share on other sites More sharing options...
ginjaninja 536 Posted February 11 Share Posted February 11 (edited) On 09/02/2024 at 07:40, Guest RafaelP said: I have the same error. I've tried with 4.1.0.0 and 4.0.0.9 Emby logs show the following logs: 2024-02-09 08:36:28.615 Error Emby ScripterX: Error adding global server tokens: Object reference not set to an instance of an object. Dev console doesn't show any errors as far as I can see. just updated to server 4.8.0.1 scripter had updated to v5 so uninstalled and reinstalled 4.1.0.0. same issue ...action page is not rendered. dont know how to look for errors undet f12...any guidance? ty. edit the error in emby log seems relevant 2024-02-12 08:45:28.280 Error App: Error creating EmbyScripterX.ScripterXController *** Error Report *** Version: 4.8.1.0 Command line: C:\Users\Nicholas Bird\AppData\Roaming\Emby-Server\system\EmbyServer.dll -service Operating system: Microsoft Windows 10.0.19045 Framework: .NET 6.0.26 OS/Process: x64/x64 Runtime: C:/Users/Nicholas Bird/AppData/Roaming/Emby-Server/system/System.Private.CoreLib.dll Processor count: 12 Data path: C:\Users\Nicholas Bird\AppData\Roaming\Emby-Server\programdata Application path: C:\Users\Nicholas Bird\AppData\Roaming\Emby-Server\system SimpleInjector.ActivationException: SimpleInjector.ActivationException: No registration for type ScripterXController could be found and an implicit registration could not be made. Method not found: 'Void MediaBrowser.Controller.Providers.IProviderManager.add_RefreshStarted(System.EventHandler`1<MediaBrowser.Model.Events.GenericEventArgs`1<MediaBrowser.Controller.Entities.BaseItem>>)'. ---> System.MissingMethodException: Method not found: 'Void MediaBrowser.Controller.Providers.IProviderManager.add_RefreshStarted(System.EventHandler`1<MediaBrowser.Model.Events.GenericEventArgs`1<MediaBrowser.Controller.Entities.BaseItem>>)'. at EmbyScripterX.EventManagers.ScripterXProviderManager.subscribeEvents() at EmbyScripterX.EventManagers.ScripterXProviderManager..ctor(IProviderManager providerManager) at EmbyScripterX.ScripterXController..ctor(ISessionManager sessionManager, IJsonSerializer jsonSerializer, IHttpClient httpClient, ILogManager logManager, IUserDataManager userDataManager, ILibraryManager libraryManager, IProviderManager providerManager, ITaskManager taskManager, ILiveTvManager liveTvManager, IDeviceManager deviceManager, ICollectionManager collectionManager, IServerConfigurationManager serverConfigurationManager, IApplicationHost applicationHost, IServerApplicationHost serverApplicationHost, IUserManager userManager, IDeviceDiscovery deviceDiscoveryManager, IEnvironmentInfo environmentInfo, IApplicationPaths applicationPaths, IHttpServer httpServer, IZipClient zipClient, IFileSystem fileSystem, IXmlSerializer xmlSerializer, ISubtitleManager subtitleManager) at lambda_method778(Closure ) at SimpleInjector.InstanceProducer.BuildAndReplaceInstanceCreatorAndCreateFirstInstance() at SimpleInjector.InstanceProducer.GetInstance() --- End of inner exception stack trace --- at SimpleInjector.InstanceProducer.GetInstance() at SimpleInjector.Container.GetInstanceForRootType(Type serviceType) at SimpleInjector.Container.GetInstance(Type serviceType) at Emby.Server.Implementations.ApplicationHost.CreateInstanceSafe(Tuple`2 typeInfo) Source: SimpleInjector TargetSite: System.Object GetInstance() InnerException: System.MissingMethodException: Method not found: 'Void MediaBrowser.Controller.Providers.IProviderManager.add_RefreshStarted(System.EventHandler`1<MediaBrowser.Model.Events.GenericEventArgs`1<MediaBrowser.Controller.Entities.BaseItem>>)'. Source: EmbyScripterX TargetSite: Void subscribeEvents() at EmbyScripterX.EventManagers.ScripterXProviderManager.subscribeEvents() at EmbyScripterX.EventManagers.ScripterXProviderManager..ctor(IProviderManager providerManager) at EmbyScripterX.ScripterXController..ctor(ISessionManager sessionManager, IJsonSerializer jsonSerializer, IHttpClient httpClient, ILogManager logManager, IUserDataManager userDataManager, ILibraryManager libraryManager, IProviderManager providerManager, ITaskManager taskManager, ILiveTvManager liveTvManager, IDeviceManager deviceManager, ICollectionManager collectionManager, IServerConfigurationManager serverConfigurationManager, IApplicationHost applicationHost, IServerApplicationHost serverApplicationHost, IUserManager userManager, IDeviceDiscovery deviceDiscoveryManager, IEnvironmentInfo environmentInfo, IApplicationPaths applicationPaths, IHttpServer httpServer, IZipClient zipClient, IFileSystem fileSystem, IXmlSerializer xmlSerializer, ISubtitleManager subtitleManager) at lambda_method778(Closure ) at SimpleInjector.InstanceProducer.BuildAndReplaceInstanceCreatorAndCreateFirstInstance() at SimpleInjector.InstanceProducer.GetInstance() Spoiler <?xml version="1.0"?> <PluginConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <PluginOptions> <Enabled>true</Enabled> <onAuthenticationFailed_Enabled>true</onAuthenticationFailed_Enabled> <onAuthenticationSuccess_Enabled>true</onAuthenticationSuccess_Enabled> <onLibraryScanComplete_Enabled>true</onLibraryScanComplete_Enabled> <onMediaItemAdded_Enabled>true</onMediaItemAdded_Enabled> <onMediaItemAddedComplete_Enabled>true</onMediaItemAddedComplete_Enabled> <onMediaItemRemoved_Enabled>true</onMediaItemRemoved_Enabled> <onMediaItemUpdated_Enabled>true</onMediaItemUpdated_Enabled> <onPlaybackStart_Enabled>true</onPlaybackStart_Enabled> <onPlaybackStopped_Enabled>true</onPlaybackStopped_Enabled> <onScheduledTask_Enabled>true</onScheduledTask_Enabled> <onSessionEnded_Enabled>true</onSessionEnded_Enabled> <onSessionStarted_Enabled>true</onSessionStarted_Enabled> <onCameraImageUploaded_Enabled>true</onCameraImageUploaded_Enabled> <onLiveTVRecordingStart_Enabled>true</onLiveTVRecordingStart_Enabled> <onLiveTVRecordingEnded_Enabled>true</onLiveTVRecordingEnded_Enabled> <onScheduledTaskStart_Enabled>true</onScheduledTaskStart_Enabled> <onScheduledTaskEnded_Enabled>true</onScheduledTaskEnded_Enabled> <onPlaybackProgress_Enabled>true</onPlaybackProgress_Enabled> <onUserConfigurationUpdated_Enabled>true</onUserConfigurationUpdated_Enabled> <onUserPasswordChanged_Enabled>true</onUserPasswordChanged_Enabled> <onUserLockedOut_Enabled>true</onUserLockedOut_Enabled> <onUserCreated_Enabled>true</onUserCreated_Enabled> <onUserDeleted_Enabled>true</onUserDeleted_Enabled> <onRecordingTimerCreated_Enabled>true</onRecordingTimerCreated_Enabled> <onRecordingTimerCancelled_Enabled>true</onRecordingTimerCancelled_Enabled> <onUserDataSaved_Enabled>true</onUserDataSaved_Enabled> </PluginOptions> <Actions_onAuthenticationFailed /> <Actions_onAuthenticationSuccess /> <Actions_onLibraryScanComplete /> <Actions_onMediaItemAdded /> <Actions_onMediaItemAddedComplete> <EmbyScripterXAction> <ActionID>ba38ae54-085f-4a6d-877b-a9dd2f641b9a</ActionID> <Enabled>false</Enabled> <ActionType>onMediaItemAdded</ActionType> <Interpreter>pwsh</Interpreter> <Script>"A:\PSScript\ManageWanted\ManageWanted.ps1"</Script> <Parameters /> <MacroCommands /> <Conditions> <EmbyScripterXActionCondition> <Type>Token</Type> <TokenID>%item.type%</TokenID> <TokenGroup>Item</TokenGroup> </EmbyScripterXActionCondition> <EmbyScripterXActionCondition> <Type>Operator</Type> <Operator>Equals</Operator> <Value>Equals</Value> </EmbyScripterXActionCondition> <EmbyScripterXActionCondition> <Type>Operator</Type> <Operator>ENTITY.TYPE</Operator> <Value>Movie</Value> </EmbyScripterXActionCondition> </Conditions> <CmdParameters /> </EmbyScripterXAction> </Actions_onMediaItemAddedComplete> <Actions_onMediaItemRemoved /> <Actions_onMediaItemUpdated> <EmbyScripterXAction> <ActionID>90b67276-39fa-4fdb-b507-2d60dd7222db</ActionID> <Enabled>false</Enabled> <ActionType>onMediaItemUpdated</ActionType> <Interpreter>pwsh</Interpreter> <Script>"A:\PSScript\ManageWanted\ManageWanted.ps1"</Script> <Parameters /> <MacroCommands /> <Conditions> <EmbyScripterXActionCondition> <Type>Token</Type> <TokenID>%item.type%</TokenID> <TokenGroup>Item</TokenGroup> </EmbyScripterXActionCondition> <EmbyScripterXActionCondition> <Type>Operator</Type> <Operator>Equals</Operator> <Value>Equals</Value> </EmbyScripterXActionCondition> <EmbyScripterXActionCondition> <Type>Operator</Type> <Operator>ENTITY.TYPE</Operator> <Value>Movie</Value> </EmbyScripterXActionCondition> </Conditions> <CmdParameters /> </EmbyScripterXAction> </Actions_onMediaItemUpdated> <Actions_onPlaybackStart> <EmbyScripterXAction> <ActionID>49ecbb37-456f-450b-9ed2-bb45ed130e6b</ActionID> <Enabled>false</Enabled> <ActionType>onPlaybackStart</ActionType> <Interpreter>pwsh.exe</Interpreter> <Script>-File "A:\PSScript\ClearPaused\ClearPaused.ps1"</Script> <Parameters>-Id "%item.id%" -userid "%user.id%" -deviceid "%device.id%"</Parameters> <MacroCommands /> <Conditions> <EmbyScripterXActionCondition> <Type>Token</Type> <TokenID>%item.type%</TokenID> <TokenGroup>Item</TokenGroup> </EmbyScripterXActionCondition> <EmbyScripterXActionCondition> <Type>Operator</Type> <Operator>Equals</Operator> <Value>Equals</Value> </EmbyScripterXActionCondition> <EmbyScripterXActionCondition> <Type>Operator</Type> <Operator>ENTITY.TYPE</Operator> <Value>Episode</Value> </EmbyScripterXActionCondition> </Conditions> <CmdParameters /> </EmbyScripterXAction> </Actions_onPlaybackStart> <Actions_onPlaybackStopped> <EmbyScripterXAction> <ActionID>ce720411-2d4e-4533-bc6c-9e41ec195da2</ActionID> <Enabled>false</Enabled> <ActionType>onPlaybackStopped</ActionType> <Interpreter>pwsh</Interpreter> <Script>-File "A:\PSScript\TidyForCollections\TidyForCollections.ps1"</Script> <Parameters /> <MacroCommands /> <Conditions /> <CmdParameters /> </EmbyScripterXAction> </Actions_onPlaybackStopped> <Actions_onScheduledTask /> <Actions_onSessionEnded /> <Actions_onSessionStarted /> <Actions_onCameraImageUploaded /> <Actions_onLiveTVRecordingStart /> <Actions_onLiveTVRecordingEnded /> <Actions_onScheduledTaskStart /> <Actions_onScheduledTaskEnded /> <Actions_onPlaybackProgress /> <Actions_onUserConfigurationUpdated /> <Actions_onUserPasswordChanged /> <Actions_onUserLockedOut /> <Actions_onUserCreated /> <Actions_onUserDeleted /> <Actions_onRecordingTimerCreated /> <Actions_onRecordingTimerCancelled /> <Actions_onUserDataSaved /> <InstalledPackages /> <Server_Platform>WINDOWS</Server_Platform> </PluginConfiguration> Edited February 12 by ginjaninja Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now