Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

Nexarius

Members
  • Content Count

    164
  • Joined

  • Last visited

  • Days Won

    19

Reputation Activity

  1. Upvote
    Nexarius got a reaction from hohserg in Minecraft server on OC   
    Wait what? How? You did what?
     
    But can it run modded minecraft? How deep is the rabbit hole?
  2. Upvote
    Nexarius reacted to Zen1th in Minecraft server on OC   
    Last demo video:
     
    No, it does not currently run modded minecraft (albeit it runs plugins made for this server), but one experiment i want to do for later is recreating a bit of OC mod in Lua, to make it run in this server, so that you can run Minecraft server in Minecraft server in Minecraft server in Minecraft server in ... until it crashes your PC lol.
  3. Upvote
    Nexarius got a reaction from hohserg in Lukyt - Java on OpenComputers (without mod)   
    So we have Java running inside Lua inside Java ? Can it run minecraft?
  4. Like
    Nexarius got a reaction from Guy in nexDHD - SG-Craft & AUNIS Stargate Control Program   
    I don't know securitycraft or opensecurity but you can put a redstone card into the computer and get a redstone signal on incoming wormholes.
  5. Like
    Nexarius got a reaction from Guy in nexDHD - SG-Craft & AUNIS Stargate Control Program   
    Okay thanks for the reports. I reverted the last update so it should be back to normal.
  6. Upvote
    Nexarius reacted to GroundShake in FlatDB - An SQL implementation   
    FlatDB is an implementation of SQL (or SQL-like) commands for manipulating databases on the hard drive itself.
    This post covers:
    Available commands and overview. How to use the API. Limitations. Performance. Future plans. 1. Available commands and overview.
    The following commands are available within the API:
    SELECT DELETE UPDATE INSERT WHERE AND OR Tables are human-readable and a single-row table will typically look like this:
    #$ID|param1|param2 1|value1|value2 Tables are created as files, with their columns (including headers) separated by the "|" character, and their rows separated by "\n".
    If you want to use any of those characters in the values you want to store in the table, please remember to replace them with another character or string, or they might break the formatting.
    Here are some syntax and command examples:
    SELECT * FROM example -- the wildcard (*) will pull all the results from the table. SELECT name|surname FROM example WHERE name = john OR surname = smith -- parameters for selection MUST be separated by "|". SELECT surname|name|age FROM example WHERE age >= 24 -- parameters are returned in the order they were requested. -- With WHERE, AND and OR you can use "=", "!=", ">=", "<=", "<", and ">" DELETE FROM example -- WARNING: calling DELETE without any OR, AND or WHERE statemens will delete the entire table. DELETE FROM example WHERE $ID = 4 -- this will delete only the row with the ID of 4. Note the '$' character. It is used to signify an auto-enumerated field. UPDATE example SET name = jack|surname = jackson WHERE age < 40 -- as with SELECT, the values for SET are separated by "|". INSERT INTO example VALUES (john|smith|32) -- the values need to be wrapped witin brackets "()" and separated by "|". -- if your table has an auto-enumerated field, you don't need to supply that one. However, the rest must be given.  
    2. How to use the API.
    First, you need to download it:
    pastebin get hCyKeJYT flatdb.lua Then, you'll need to call the API:
    local flatdb = require "flatdb" Since you don't have a database, you have to create one:
    flatdb.newDatabase("example") -- example being the name of our new database Now, you need to 'connect' to the database, or in other words, tell the API which database you're using:
    flatdb.connect("example") -- returns true or throws an error if the database doesn't exist. Next, you need to create a new table:
    flatdb.newTable("table", "$ID|name|surname|age") -- table being the name of the table, and name, surname, and age being the headers we want to insert. -- The "$" before ID signifies an auto-enumerated field. Now, because you're connected to a database, you can start inserting values:
    flatdb.query("INSERT INTO table VALUES (john|smith|32)") -- there is a neccesary space between VALUES and the open bracket. -- the values we're parsing must be separated by "|". -- currently, it is not possible to pass only the values you want. If you don't have, for example, a surname, -- you can pass "unknown" or something that can be changed later on. Let's say your name is John Doe, not John Smith. And perhaps you're 25, not 32. Maybe you want to change that:
    flatdb.query("UPDATE table SET age = 25|surname = doe WHERE name = john AND surname = smith") Let's get some data from the table:
    local result = flatdb.query("SELECT $ID FROM table") -- a statement like this grabs the IDs of every row in the table. -- NOTE: if you're testing from the shell, don't use the 'local' keyword. You might have noticed that a result is returned. Every query returns true upon completion, except SELECT.
    The SELECT query returns an io.lines iterator, so you will need to loop through it (in our case, we only have one row, so it will loop exactly once):
    for row in result do print(row) end The io.lines iterator points to a file that contains your output. Depending on what you selected, this file may contain entire rows of the table. How do you get rid of those pesky separators?
    Let's say we ran this command:
    local result = flatdb.query("SELECT * FROM table") When we loop through it, we have to split the values into an array to manipulate each column individually. The API provides a splitString function.
    for row in result do columns = flatdb.splitString(row, "|") -- the splitString function requires a string and a dilemeter (in our case "|"). print(columns[2]) -- because we have a table that's $ID|name|surname|age, this will print only the names end When you're done with a database, you can disconnect by using:
    flatdb.disconnect()  
    3. Limitations.
    The syntax has to be followed somewhat exactly. Spaces in things like "name = john" don't matter, but the space between "VALUES (john|doe)" does matter.
    When in doubt, double-check the syntax.
    Everything is done iteratively. The result of SELECT forces you to process the data you returned row by row. Why? Because of the memory limitations of OpenComputers.
    If a table gets big, there's no way to store it in memory. The first version of FlatDB stored everything in memory as tables (arrays), but that only worked up to a point.
    This version (a re-write of everything except the logic) is able to work on a computer with 256k memory (Tier 1.5).
    If you want to break the code, you will be able to. Error checking is implemented, but I can only imagine what possible inputs I've overlooked, and I'm looking forward to fixing that.
    And it goes without saying (though I'm saying it) - you need the proper amount of space to store this file and the databases / tables you want to work with.
    Also, I will state again that you can not use "|" nor "\n" in the values you're inputting. If you need that kind of thing, replace them with something else.
     
    4. Performance
    To test the performance of the library, I set up a computer of the lowest tier that's supported. (Everything is Tier 1, except for memory, which is a single stick of Tier 1.5)
    I then created a script that will fill a table with random number values between 1 and 100. These are the results of tests:
    Insert 100 - 21s Read 100 - 1s Read 100 (one discriminatory statement) - 8.5s Read 100 (two discriminatory statements) - 16s Update 100 (one discriminatory statement) - 16s Again, this is on the lowest tier PC. I'm happy with the performance, but I'll improve it where possible.
     
    5. Future plans.
    Future plans by priority are:
    Bug fixing Adding error checking Adding new features (I'm looking at you, TOP, MIN and MAX). If you want to submit a bug, please include what the bug is, how to replicate it, and (if possible) the table you're working with.
    If nothing else, this was a fun exercise.
  7. Like
    Nexarius got a reaction from tpzker in [WIP] TritonLang - A C++-styled language that compiles to Lua [Continuation of KLang]   
    Can this run a lua interpreter?
  8. Upvote
    Nexarius got a reaction from PixelgamerX32 in nexDHD - SG-Craft & AUNIS Stargate Control Program   
    Update 3.0.0:
    I've added secondary screens to make your control room cooler.
     
  9. Like
    Nexarius got a reaction from Quisquid in nexDHD - SG-Craft & AUNIS Stargate Control Program   
    Update 3.0.0:
    I've added secondary screens to make your control room cooler.
     
  10. Upvote
    Nexarius got a reaction from BrisingrAerowing in Tank Display Program | now with energy and essentia too !   
    This program can display the contents of tanks on a big screen with a colored bar that can dynamically change its size.
    It can show up to 256 128 64 different liquids which are sorted from highest amount to lowest.
    5x8 is the optimal size for the screen.
    Multiple tanks with the same liquids are automatically added together and empty tanks are ignored.
    This display is split into 2 programs.
    1) Server - this receives the tank information and displays it
    2) Client - this has the adapter with the tank controller (you can have as many as you like)

    optimal screen sizes: 8x5; 8x2; 4x1
    pastebin run -f cyF0yhXZ installation guide:
    https://www.youtube.com/watch?v=avvYO2xSxGw
    github: https://github.com/Nex4rius/Nex4rius-Programme/tree/master/Tank#start
    server / display components:
    Internet Card (to install) Network Card Graphics Card T3 Screen T3 client / adapter + tank components:
    Internet Card (to install) (Wireless-) Network Card It supports now the following blocks:
    Adapter + Tank Controller Upgrade Transposer Batbox CESU MFE MFSU Gregtech Batterybuffer Capacitor Bank ALL RF storage blocks ME Interface ME Controller Warded Jar Void Jar  
    Big Update version 2
    The screen scales better to utilize the "room" to the fullest.
    Thaumcraft:
    I've added support for jars and essentia (Thaumcraft 6 needs the Thaumic Computers mod)
    ExtraCells:
    It's now possible to connect this to the ME System and read all liquids from it.
    Thaumic Energistics:
    Additionally it can read essentia from the system if you have Thaumic Energistics installed.
    Energy EU:
    You can connect EU storage devices and it will show it on the screen.
    Energy RF:
    Furthermore you can also connect any RF storage block and it will work too.
     
    The version 2 is not compatible with the version 1. You will have to update the server and all clients.
     



    I've double the limit from 64 to 128 and doubled it again to 256!

  11. Upvote
    Nexarius got a reaction from Molinko in Hep with my code?   
    Print3d doesn't check getMaxShapeCount() at all.
    Go to your OpenComputer config file and check the value of "maxPrinterShapes".
  12. Upvote
    Nexarius reacted to Log in Robot-miner with geolyzer   
    I present you a program for a robot that allows you to mine ore without going down into the caves. Robot, using a geolyzer, can find and mine ore.
    All features are not yet implemented, so I ask you to test and inform me about a bugs.
     
    Requirements:
    Computer case (tier II or III) Inventory Upgrade (more the better) Inventory Controller Upgrade Hard Disk Drive EEPROM with Lua BIOS Geolyzer RAM (tier I or higher) CPU (any) Hover Upgrade (tier I) Diamond pickaxe or equivalent tool Optional:
    Crafting Upgrade Wireless Network Card or Linked Card Solar Generator Upgrade Battery Upgrade Experience Upgrade Chunkloader Upgrade Generator Upgrade Enderchest from EnderStorage mod  
    Installing:
    Download and save the file as init.lua wget https://raw.githubusercontent.com/DOOBW/geominer/master/miner.lua init.lua Put this file in to root directory of the hard disc. Add the disk when crafting a robot. Place the robot on a solid blocks platform. Give the robot a pickaxe Place a container and the charger near the robot. Press the power button and enjoy a process.
  13. Like
    Nexarius got a reaction from CptMercury in Tank Display Program | now with energy and essentia too !   
    And just to push it over the top into the rediculous area I've doubled it again to 256! That should be enough for forever.
    (I even had a lot of trouble coming up with so many for testing)

  14. Like
    Nexarius got a reaction from Molinko in Tank Display Program | now with energy and essentia too !   
    And just to push it over the top into the rediculous area I've doubled it again to 256! That should be enough for forever.
    (I even had a lot of trouble coming up with so many for testing)

  15. Upvote
    Nexarius got a reaction from xilni in Tank Display Program | now with energy and essentia too !   
    Update 1.8.5:
    -added 7 new liquids
  16. Upvote
    Nexarius got a reaction from xilni in Tank Display Program | now with energy and essentia too !   
    That makes sense.
    What you gave me are the localized names -> "label" but the program uses the internal liquid name -> "name".
    I tweaked the display in 1.8.5 to show that better because labels change depending on the selected language for minecraft.
    Update 1.8.6:
    -fixed Thermal Foundation liquids
     
  17. Upvote
    Nexarius got a reaction from Log in OpenOS-Updater   
    I've made a very simple to use program to update OpenOS directly with the newest files from github. Now you don't have to wait for the server admin to update the mods to get the newest OpenOS.
    It will download all OpenOS files first before it replaces any of the old files just to make sure you don't end up with half of your OpenOS in a different version.
    Pastebin:
    pastebin run -f icKy25PF GitHub:
    wget -f https://raw.githubusercontent.com/Nex4rius/Nex4rius-Programme/master/OpenOS-Updater/updater.lua /updater.lua I only recommend to use this on a freshly installed computer.
     
    Check out my other programs:
     
  18. Upvote
    Nexarius got a reaction from Log in Tank Display Program | now with energy and essentia too !   
    This program can display the contents of tanks on a big screen with a colored bar that can dynamically change its size.
    It can show up to 256 128 64 different liquids which are sorted from highest amount to lowest.
    5x8 is the optimal size for the screen.
    Multiple tanks with the same liquids are automatically added together and empty tanks are ignored.
    This display is split into 2 programs.
    1) Server - this receives the tank information and displays it
    2) Client - this has the adapter with the tank controller (you can have as many as you like)

    optimal screen sizes: 8x5; 8x2; 4x1
    pastebin run -f cyF0yhXZ installation guide:
    https://www.youtube.com/watch?v=avvYO2xSxGw
    github: https://github.com/Nex4rius/Nex4rius-Programme/tree/master/Tank#start
    server / display components:
    Internet Card (to install) Network Card Graphics Card T3 Screen T3 client / adapter + tank components:
    Internet Card (to install) (Wireless-) Network Card It supports now the following blocks:
    Adapter + Tank Controller Upgrade Transposer Batbox CESU MFE MFSU Gregtech Batterybuffer Capacitor Bank ALL RF storage blocks ME Interface ME Controller Warded Jar Void Jar  
    Big Update version 2
    The screen scales better to utilize the "room" to the fullest.
    Thaumcraft:
    I've added support for jars and essentia (Thaumcraft 6 needs the Thaumic Computers mod)
    ExtraCells:
    It's now possible to connect this to the ME System and read all liquids from it.
    Thaumic Energistics:
    Additionally it can read essentia from the system if you have Thaumic Energistics installed.
    Energy EU:
    You can connect EU storage devices and it will show it on the screen.
    Energy RF:
    Furthermore you can also connect any RF storage block and it will work too.
     
    The version 2 is not compatible with the version 1. You will have to update the server and all clients.
     



    I've double the limit from 64 to 128 and doubled it again to 256!

  19. Upvote
    Nexarius got a reaction from xilni in Tank Display Program | now with energy and essentia too !   
    The translation looks pretty good.
    hier: is easy it checks whether or not the event.pull() reached the timeout or got a message. On timeout it skips everything and displays a message that there is no available data to display.
    dazu: It first checks if the id is already known and then replaces all the information with the new message and then sets dazu = false to prevent adding it at L56. (If you get the second message from the same computer you have to deal with the fact that you still have the first message and it has to be overwritten or deleted.)
    If you get infromation only from the me system then you don't need update() at all. You only need if component.isAvailabe("MeSomething") then dostuff() else nodata() end
    I don't think that amount > capacity would be a big problem. It will just display percent > 100% and the bar will be filled completly.
    idk
  20. Upvote
    Nexarius reacted to xilni in Tank Display Program | now with energy and essentia too !   
    Thank you for the help, so first thing I've done is attempted to translate the variable, method and parameter names in anzeige.lua to english passing each word I didn't understand through Google Translate. The result is here: https://pastebin.com/x7E2ySm1
    I appreciate you helping me decipher the data structure, I was having problems figure out what dazu and hier did in the multiple assignment on line 42 and whether they were important given I'm replacing the entire networking section that uses event.pull.
    I see what you mean, there's a shorter message for when the board starts to get crowded. I'm more concerned with how one would even represent three values on a bar given that the actual amount has to surpass the upper threshold before the system shuts down production (see the logic here for how it decides when to turn on and off the production). It's not as simple as current amount over capacity where 0 ≤ amount ≤ capacity which makes sense in the context of a bar.
    EDIT: Does this forum have an inline code block formatting? Sometimes I don't want to create a large paragraph block for a few random code words.
  21. Upvote
    Nexarius got a reaction from xilni in Tank Display Program | now with energy and essentia too !   
    This program can display the contents of tanks on a big screen with a colored bar that can dynamically change its size.
    It can show up to 256 128 64 different liquids which are sorted from highest amount to lowest.
    5x8 is the optimal size for the screen.
    Multiple tanks with the same liquids are automatically added together and empty tanks are ignored.
    This display is split into 2 programs.
    1) Server - this receives the tank information and displays it
    2) Client - this has the adapter with the tank controller (you can have as many as you like)

    optimal screen sizes: 8x5; 8x2; 4x1
    pastebin run -f cyF0yhXZ installation guide:
    https://www.youtube.com/watch?v=avvYO2xSxGw
    github: https://github.com/Nex4rius/Nex4rius-Programme/tree/master/Tank#start
    server / display components:
    Internet Card (to install) Network Card Graphics Card T3 Screen T3 client / adapter + tank components:
    Internet Card (to install) (Wireless-) Network Card It supports now the following blocks:
    Adapter + Tank Controller Upgrade Transposer Batbox CESU MFE MFSU Gregtech Batterybuffer Capacitor Bank ALL RF storage blocks ME Interface ME Controller Warded Jar Void Jar  
    Big Update version 2
    The screen scales better to utilize the "room" to the fullest.
    Thaumcraft:
    I've added support for jars and essentia (Thaumcraft 6 needs the Thaumic Computers mod)
    ExtraCells:
    It's now possible to connect this to the ME System and read all liquids from it.
    Thaumic Energistics:
    Additionally it can read essentia from the system if you have Thaumic Energistics installed.
    Energy EU:
    You can connect EU storage devices and it will show it on the screen.
    Energy RF:
    Furthermore you can also connect any RF storage block and it will work too.
     
    The version 2 is not compatible with the version 1. You will have to update the server and all clients.
     



    I've double the limit from 64 to 128 and doubled it again to 256!

  22. Upvote
    Nexarius got a reaction from xilni in Tank Display Program | now with energy and essentia too !   
    I guess you could start from L135 anzeigen(tankneu). tankneu is all the information about all liquids already added together and anzeigen is looping through the table and decides the position on the display and on L177-L185 it is giving it to zeigeHier([...stuff...]) label (visible liquid name), name (hidden liquid name, this will be used to check with the color table), menge (amount), maxmenge (max amount), prozent (percent, this is calculated and not in tankneu).
    zeigeHier combines the variables into the message for the screen, changes the color and then writes to the screen.
    You could probably start by making a table like this for anzeigen(tankneu)
    tankneu = {
    {name="water", label="water", menge=1000, maxmenge=2000, somethingnewhere=500},
    {name="lava", label="lava", menge=4000, maxmenge=5000, somethingnewhere=1000},
    }
    After that add somethingnewhere to L185 into zeigeHier and then change zeigeHier in L205 to include somethingnewhere and then change the table.inserts to have it too. There are two different messages shown if breite==40 (It means width==40) because there isn't enough space left and I decided to not show max amouint anymore on a width of 40 otherwise its too big and doesn't fit.
    You will have to add anything new to farben.lua to get the colors. https://github.com/Nex4rius/Nex4rius-Programme/blob/master/Tank/server/tank/farben.lua
  23. Upvote
    Nexarius got a reaction from Fingercomp in Tank Display Program | now with energy and essentia too !   
    This program can display the contents of tanks on a big screen with a colored bar that can dynamically change its size.
    It can show up to 256 128 64 different liquids which are sorted from highest amount to lowest.
    5x8 is the optimal size for the screen.
    Multiple tanks with the same liquids are automatically added together and empty tanks are ignored.
    This display is split into 2 programs.
    1) Server - this receives the tank information and displays it
    2) Client - this has the adapter with the tank controller (you can have as many as you like)

    optimal screen sizes: 8x5; 8x2; 4x1
    pastebin run -f cyF0yhXZ installation guide:
    https://www.youtube.com/watch?v=avvYO2xSxGw
    github: https://github.com/Nex4rius/Nex4rius-Programme/tree/master/Tank#start
    server / display components:
    Internet Card (to install) Network Card Graphics Card T3 Screen T3 client / adapter + tank components:
    Internet Card (to install) (Wireless-) Network Card It supports now the following blocks:
    Adapter + Tank Controller Upgrade Transposer Batbox CESU MFE MFSU Gregtech Batterybuffer Capacitor Bank ALL RF storage blocks ME Interface ME Controller Warded Jar Void Jar  
    Big Update version 2
    The screen scales better to utilize the "room" to the fullest.
    Thaumcraft:
    I've added support for jars and essentia (Thaumcraft 6 needs the Thaumic Computers mod)
    ExtraCells:
    It's now possible to connect this to the ME System and read all liquids from it.
    Thaumic Energistics:
    Additionally it can read essentia from the system if you have Thaumic Energistics installed.
    Energy EU:
    You can connect EU storage devices and it will show it on the screen.
    Energy RF:
    Furthermore you can also connect any RF storage block and it will work too.
     
    The version 2 is not compatible with the version 1. You will have to update the server and all clients.
     



    I've double the limit from 64 to 128 and doubled it again to 256!

  24. Upvote
    Nexarius got a reaction from MoonlightOwl in Tank Display Program | now with energy and essentia too !   
    This program can display the contents of tanks on a big screen with a colored bar that can dynamically change its size.
    It can show up to 256 128 64 different liquids which are sorted from highest amount to lowest.
    5x8 is the optimal size for the screen.
    Multiple tanks with the same liquids are automatically added together and empty tanks are ignored.
    This display is split into 2 programs.
    1) Server - this receives the tank information and displays it
    2) Client - this has the adapter with the tank controller (you can have as many as you like)

    optimal screen sizes: 8x5; 8x2; 4x1
    pastebin run -f cyF0yhXZ installation guide:
    https://www.youtube.com/watch?v=avvYO2xSxGw
    github: https://github.com/Nex4rius/Nex4rius-Programme/tree/master/Tank#start
    server / display components:
    Internet Card (to install) Network Card Graphics Card T3 Screen T3 client / adapter + tank components:
    Internet Card (to install) (Wireless-) Network Card It supports now the following blocks:
    Adapter + Tank Controller Upgrade Transposer Batbox CESU MFE MFSU Gregtech Batterybuffer Capacitor Bank ALL RF storage blocks ME Interface ME Controller Warded Jar Void Jar  
    Big Update version 2
    The screen scales better to utilize the "room" to the fullest.
    Thaumcraft:
    I've added support for jars and essentia (Thaumcraft 6 needs the Thaumic Computers mod)
    ExtraCells:
    It's now possible to connect this to the ME System and read all liquids from it.
    Thaumic Energistics:
    Additionally it can read essentia from the system if you have Thaumic Energistics installed.
    Energy EU:
    You can connect EU storage devices and it will show it on the screen.
    Energy RF:
    Furthermore you can also connect any RF storage block and it will work too.
     
    The version 2 is not compatible with the version 1. You will have to update the server and all clients.
     



    I've double the limit from 64 to 128 and doubled it again to 256!

  25. Upvote
    Nexarius got a reaction from Log in nexDHD - SG-Craft & AUNIS Stargate Control Program   
    This is my stargate control program for sgcraft called nexDHD
     

     
    How to get it:
    link to github

     
    pastebin run -f YVqKFnsP  
    Computer requirements:
    - CPU T2
    - GPU T2
    - 12x Screen T2
    - HDD T1 (with OpenOS)
    - 2x Memory T1.5
    - Internet Card - only required for installation and updates
    - keyboard - only required for installation
    - Redstone Card T2 - optional
    - EEPROM (Lua BIOS)
     
    features of my program:
    - autoclose iris on incoming wormhole (when iriscontrol is turned on)
    - autoopen iris if correct IDC is received (iris deactivation code)
    - autoclose stargate after X seconds
    - show all kinds of stats (local / remote address, state, direction, idc, iris state, energy, ...)
    - multiple languages: right now german, english and russian
    - displays energy in EU or RF
    - displays up to 10 addresses on 1 page (unlimited pages)
    - allows dialing from the address list
    - check for updates on start
    - emit redstone signals (right now for: state not idle, incoming, iris closed, idc accepted, wormhole connected)
    - automatically adds new, unkown addresses when there is an open wormhole
    - shows the required energy to dial an address (or error if invalid address)
    - allows closing of incoming wormholes if its disabled in config AND there is a computer at either end
    - automatically sends and receives entire address list on an open wormhole (without the IDC of course) and automatically adds the new addresses
    - with touchscreen functionalities
    - works with Computronics ColorfulLamps -> red = iris closed, green = idc accepted, yellow = outgoing wormhole, orange = incoming wormhole (priority from left to right)
    - logbook with the last connections
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.