1. Create a new multi-class Java program which implements a vending machine simulator whichcontains the following functionality:A) At program startup, the vending machine is loaded with a variety of products in a variety ofpackaging for example soda/tonic/Coke in bottles, peanuts in bags, juice in cartons, etc. Alsoincluded is the cost of each item. The program should be designed to easily load a different setof products easily (for example, from a file).Also at program startup, money should be loaded into the vending machine. Money shouldconsist of different monetary objects for the specified currency for example $1 bills, $5 bills,quarters, dimes, etc. Your program should be designed to use different national currencieseasily (for example the Euro). Money should be maintained as paper bills and coins, not justamounts.B) A menu of commands must be provided. At a minimum the menu should consists of thefollowing commands:1. Display the list of commands2. Display the vending machine inventory. For each item, this command should result indisplaying a description and current quantity.3. Display the money currently held in the vending machine.4. Purchase an item. The result of this selection should be the following actions:1. Prompt the user to indicate what item to purchase2. Prompt the user to specify what monetary items are being used for payment (the actualitems for example quarters, dimes, etc.), not a money amount3. If the user specified enough money to purchase the selected item, the item is purchased(deducted from inventory), supplied money is added to the vending machine, and anychange is returned in the form of monetary items (quarters, dimes, etc.).4. If the user did not specify enough money for the selected item, the transaction is abortedwith the supplied money not added to the machine (not accepted) and the product notpurchased (i.e. the state of the vending machine is unchanged).5. Exit ? exits the program displaying a departing message.